-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
2 changed files
with
36 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
# IPv6 Support | ||
|
||
IPv6 support is required to be able to create Kubernetes clusters with either IPv6 single- or dual-stack enabled. | ||
With immanent shortage of IPv4 addresses the need to be able to use IPv6 increased. | ||
|
||
Full IPv6 dual-stack Support was added to Kubernetes with v1.23 as stable. | ||
|
||
Gardener on the other hand does not yet have full IPv6 dual-stack support. See: https://github.com/gardener/gardener/issues/7051 | ||
|
||
Metal Stack manages Cidrs and IP Addresses with the [go-ipam](https://github.com/metal-stack/go-ipam) library, which gained full IPv6 Support already in 2021 https://metal-stack.io/blog/2021/02/ipv6-part1. | ||
But this was only the foundation, to get full IPv6 support for all aspects which are managed by metal-stack.io, further work needs to be done. | ||
|
||
## General Decisions | ||
|
||
### Networks | ||
|
||
Currently metal-stack organizes Cidrs/Prefixes in a `network`. A network can consist of multiple cidrs from the same address family, | ||
for example if you need internet connectivity, you start with a small cidrs but with time you will need more ipaddresses and by more internet cidrs. | ||
Then you simply add these additional cidrs you bought, to the already existing internet `network` and more servers can be created with internet addresses. | ||
|
||
With IPv6 we have to choose between two options: | ||
|
||
#### Network per Address Family | ||
|
||
This means that we allow networks with cidrs from one address family only, one for IPv4 and one for IPv6 | ||
|
||
The machine creation process will not change if the machine only needs to be either IPv4 or IPv6 addressable. | ||
But if on the other side, the machine need to be able to connect to both address families, the machine creation needs to specify two networks, one for IPv4 and one for IPv6. | ||
Also there will be 2 distinct VRF IDs for every network with a different address family. | ||
|
||
#### Network with both Address Families | ||
|
||
Make a network dual address family capable, that means that you can add multiple cidrs from both address families to one network | ||
Then the machine creation will stay the same for the single stack and dual-stack case, but the ip address allocation from one network must return a pair of ip addresses if the network is dual-stack. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters