Hi team looks like Temporal by default does not support IPv6. Is there any guidelines for the same?
Hi which server version are you running? I think this was enabled some time back, see here
We are on version 1.18.1
I see, think 1.18.1 was released before this change: Release v1.18.1 · temporalio/temporal · GitHub
Yeah looks like it. So the code was merged around Oct 26th, 2022. I have been looking at releases after that but don’t see the IPv6 comment in any. Looked Release v1.18.3 · temporalio/temporal · GitHub onwards. I am assuming there would be a comment on the release ?
Also found this open issue from Nov 19 2022 which seem to say it is not supported
[temporalio/auto-setup] bindOnIP does not work with ipv6 · Issue #3629 · temporalio/temporal · GitHub @tihomir
Besides also found this https://github.com/temporalio/temporal/pull/1472 but the above issue is still open on this one. Also am not sure why don’t I see the commits in release am I missing something?
Actually found the previous commit I mentioned in Release v1.9.0 · temporalio/temporal · GitHub
Based on my understanding the v1.9.0 had the support added [not sure about the SQL part as mentioned in the pull request]. And the later one is fixing the entry point issue. Fix entrypoint when running in IPv6 by PenguinToast · Pull Request #68 · temporalio/docker-builds · GitHub . I suppose even if I don’t upgrade the server and just add the bind IP change it should make it Ipv6 compatible. However, will further look on what release is the last commit part of. i think that is just on the docker build. @tihomir thoughts?
Hi @Anshumali_Prasad - I’m actively looking into ipv6 support and I’ll update here with what I find.
Any information you’re able to provide on the environment temporal is running in and the deployment method would be helpful.
to update this thread - temporal does fully support ipv6 provided config specifies ipv6 addresses. this can be challenging right now in dual stack environments if your active cluster rpc address / public client address is a domain name that serves both A and AAAA records as as the default dns resolution in golang favors ipv4 addresses.
suggested ways to try to work around this:
- specify a well known ipv6 as the cluster rpc / public client addresses
- if well known ipv6 isn’t an option, specify only AAAA in cluster DNS entries
- to support dual stack clients, create a second DNS entry to serve A and AAAA for clients and one that only serves AAAA for the cluster rpc address / public client address for server config
Hey Folks,
Just wanted to confirm for anyone else fighting this, Temporal does run on IPV6. Currently docs are non-existent for it. If you are using Helm charts you will have to find every config line that defines IP bindings ( 0.0.0.0 or 127.0.0.1) and change them to “::” or “::1”.
They are mostly in this template:
I looked at this PR to find valid values to use: