Has anyone identified a good solution for iPv6 in GKE, Google Game Servers, or Agones?

2.5k views Asked by At

I am currently hosting a game service with Google Game Servers (https://cloud.google.com/game-servers). This is basically running Agones in GKE. This works great for the most part except when it comes to iPv6.

I am struggling to find any suggestions on how to get this kind of a setup to be iPv6 compatible. It seems like this should be the answer https://cloud.google.com/load-balancing/docs/ipv6 but Agones is setup to run servers across a port range as it spins up and shuts down servers and it seems I need to have a specific port and non-persistent connections to a specific machine to use googles Load balancer solution.

For reference, this is a NodeJS backend relying on socket.io communication.

Any suggestions would be appreciated.

1

There are 1 answers

0
mario On BEST ANSWER

As already stated in comments Google Cloud VPCs do not support IPv6 connectivity:

Google Cloud VPCs do not support IPv6. A few public facing services such as HTTPS Load Balancers do support IPv6 but that will not help you with internal services. – John Hanley Sep 29 at 12:23

If your stack requires IPv6 connectivity, unfortunatelly you won't be able to deploy it on Google Kubernetes Engine at the time being as it is subject to the same rules as any other Compute resource on GCP and uses the same VPC network.

As you can read in the official VPC specifications:

VPC networks only support IPv4 unicast traffic. They do not support broadcast, multicast, or IPv6 traffic within the network; VMs in the VPC network can only send to IPv4 destinations and only receive traffic from IPv4 sources. However, it is possible to create an IPv6 address for a global load balancer.

As to Global Loadbalancer (that do support IPv6) here is all the information you need:

Google Cloud supports IPv6 clients with HTTP(S) Load Balancing, SSL Proxy Load Balancing, and TCP Proxy Load Balancing. The load balancer accepts IPv6 connections from your users, and then proxies those connections to your backends.

You can configure both IPv4 and IPv6 external addresses for the following:

  • external HTTP(S) load balancers
  • SSL proxy load balancers
  • TCP proxy load balancers

Protocols and port ranges it supported by each of them are listed in their individual specifications (all links available above).

SSL Proxy Load Balancing:

This does not affect SSL proxy load balancers. External forwarding rules, which are used in the definition of an SSL load balancer, can only reference TCP ports 25, 43, 110, 143, 195, 443, 465, 587, 700, 993, 995, 1883, 3389, 5222, 5432, 5671, 5672, 5900, 5901, 6379, 8085, 8099, 9092, 9200, and 9300. Traffic with a different TCP destination port is not forwarded to the load balancer's backend.

TCP Proxy Load Balancing:

TCP Proxy Load Balancing is intended for TCP traffic on specific well-known ports, such as port 25 for Simple Mail Transfer Protocol (SMTP). For more information, see Port specifications. For client traffic that is encrypted on these same ports, use SSL Proxy Load Balancing.

with one caveat:

Note: TCP Proxy Load Balancing doesn't support TCP ports 80 or 8080. For HTTP traffic, use HTTP(S) Load Balancing.

When it comes to External HTTP(S) Load Balancing its name speaks for itself.

So if you rather need to use some arbitrary port ranges as you mentioned, the answer is: no, unfortunatelly you can't do that using Google Cloud Load Balancing solutions