And while a it, make it easy to associate IPv6 addresses with each tool account.
See also: https://docs.tigera.io/calico/latest/networking/ipam/legacy-firewalls
And while a it, make it easy to associate IPv6 addresses with each tool account.
See also: https://docs.tigera.io/calico/latest/networking/ipam/legacy-firewalls
| Status | Subtype | Assigned | Task | ||
|---|---|---|---|---|---|
| Open | None | T272395 Cloud: reduce NAT exceptions from cloud to production | |||
| Open | None | T396986 Replace remaining IPv4 NAT exemptions by IPv6 adoption | |||
| Open | None | T392509 Enable IPv6 for Toolforge services | |||
| Open | None | T380060 Support IPv6 in Toolforge Kubernetes |
An idea that @aborrero and I talked about a bit at the Istanbul Hackathon would be to allocate IPv6 in Toolforge's Kubernetes cluster by namespace/tool aware blocks with the Unix group id of the owning tool encoded into the address. Imagine each namespace getting a /64 or /96 allocation where the least significant bits of the network encoded the gidNumber of the tool's account. For example tools.gitlab-account-approval's gidNumber of 55655 might turn into a network of 2001:db8::d967/96. 55655 decimal == d967 hex.
The main advantage of this system would be the ability to trace IPv6 address usage back to a particular tool without needing to maintain a lookup table for the network allocations or DHCP leases that might vary over time.
There are several things to consider here. First of all, we just cannot take a chunk of the Cloud VPS VXLAN/IPv6-dualstack CIDR and give it to Toolforge.
Instead, we would need to either:
In both cases we would achieve the same:
Inside Kubernetes, I think the implementation would look like this. Mostly following the ideas from https://docs.tigera.io/calico/latest/networking/ipam/legacy-firewalls
Fortunately it seems we have most of the infrastructure ready to introduce all this config, (i.e no need to write custom admission controllers or anything).