These scripts create an IPv6 only cluster on GCE using GUA for both Pods and Services. The scripts use kubeadm and there are not fully automated, this is some personal and exploratory work, so some manual steps are required.
Using GUAs everywhere allows to connect directly to Pod and Services:
- with the benefit that everything is routed and there is no need for lodabalancers or nodePorts
- with the con that everything is public and you need to create firewall rules accordenly
There is no need for complex CNI setups, since GCE assignes a /96 to each instances, you just can use the CNI static network plugins with the host-local ipam and use one subset of that network. The Pod-Pod and Pod-External and External-Pod communication is handled by GCE "magic"
There is one caveat with Services though, since Service IPs are Virtual for all the cluster, there is no way, or I couldn't find it, to implement some sort of "route an IPv6 cidr to a group of instances", so I just used the range of the control-plane instance as the Service CIDR, the Pod-Service traffic is handled locally by the kube-proxy of each node, the External-Service traffic is concentrated in the control plane machine.