You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
allErrs=append(allErrs, field.Invalid(field.NewPath("ipv6"), r.Spec.NetworkSpec.VPC.IPv6, "IPv6 cannot be used with unmanaged clusters at this time."))
Note that Cilium doesn't allow any CIDR above `112`. So the CIDR you've got from AWS with size `64` needs to be cut down
219
-
to `112`.
220
-
221
-
Once this is done, we can install Cilium into the workload cluster and restart all Pods so they can acquire IPv6
222
-
addresses.
223
-
224
-
### Calico
225
-
226
-
Another approach is to use Calico. Calico has detailed guides on how to set up IPv6 located [here](https://projectcalico.docs.tigera.io/networking/ipv6) and [here](https://projectcalico.docs.tigera.io/networking/ipv6-control-plane).
227
-
228
-
You can use CAPA to bootstrap Calico in the following way:
229
-
230
-
- Create a ClusterResourceSet like this:
231
-
```yaml
232
-
apiVersion: addons.cluster.x-k8s.io/v1alpha3
233
-
kind: ClusterResourceSet
234
-
metadata:
235
-
name: crs1
236
-
namespace: default
237
-
spec:
238
-
mode: "ApplyOnce"
239
-
clusterSelector:
240
-
matchLabels:
241
-
cni: calico
242
-
resources:
243
-
- name: db-secret
244
-
kind: Secret
245
-
- name: calico-addon
246
-
kind: ConfigMap
247
-
```
248
-
- Download the latest Calico manifest and set up the required properties for IPv6 as the guides suggest ( you will already
249
-
need to have an IPv6 CIDR )
250
-
- Create a config map in the control plane with the following command: `kubectl create configmap calico-addon --from-file=calico.yaml`
251
-
- Tag your cluster with the label `cni: calico` so cluster-api can find it and install the cni addon
252
-
```yaml
253
-
apiVersion: cluster.x-k8s.io/v1beta1
254
-
kind: Cluster
255
-
metadata:
256
-
name: "test-ipv6-unmanaged-2"
257
-
labels:
258
-
cni: calico
259
-
```
260
-
- Apply and monitor
261
-
- Note that only new pods will get an ipv6 address; existing pods will remain using ipv4
86
+
Unmanaged clusters are not supported at this time.
Copy file name to clipboardExpand all lines: docs/proposal/20220718-ipv6.md
+27-20Lines changed: 27 additions & 20 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,21 +1,21 @@
1
1
---
2
-
title: Proposal Template
2
+
title: IPv6 for EKS
3
3
authors:
4
4
- @Skarlso
5
5
- @nikimanoledaki
6
6
- @richardcase
7
7
reviewers:
8
8
- "@richardcase"
9
9
creation-date: 2022-04-28
10
-
last-updated: 2022-07-19
10
+
last-updated: 2022-08-23
11
11
status: provisional
12
12
---
13
13
14
-
# IPv6 Support in CAPA
14
+
# IPv6 Support in CAPA for EKS
15
15
16
16
## Table of Contents
17
17
18
-
-[IPv6 Support in CAPA](#ipv6-support-in-capa)
18
+
-[IPv6 Support in CAPA](#ipv6-support-in-capa-for-eks)
19
19
-[Table of Contents](#table-of-contents)
20
20
-[Glossary](#glossary)
21
21
-[Summary](#summary)
@@ -26,6 +26,7 @@ status: provisional
26
26
-[Non-Goals/Future Work](#non-goalsfuture-work)
27
27
-[Proposal](#proposal)
28
28
-[Plan](#plan)
29
+
-[Managed and Unmanaged clusters](#managed-and-unmanaged-clusters)
29
30
-[Additions and Configuration changes](#additions-and-configuration-changes)
30
31
-[Networking and Subnet Splitting strategies](#networking-and-subnet-splitting-strategies)
31
32
-[vpc-cni](#vpc-cni)
@@ -54,9 +55,9 @@ communication between old services is still functioning. Only IPv6 is not suppor
54
55
55
56
## Summary
56
57
57
-
This proposal defines how to implement IPv6 for clusters in CAPA. It defines various validations that need to take place
58
-
in order to properly inform the user when IPv6 can be used. It defines components which need to be created and set up.
59
-
It also details with examples and images how the architecture looks like using IPv6.
58
+
This proposal defines how to implement IPv6 for clusters in CAPA for EKS. It defines various validations that need to
59
+
take place in order to properly inform the user when IPv6 can be used. It defines components which need to be created
60
+
and set up. It also details with examples and images how the architecture looks like using IPv6 in EKS.
60
61
61
62
## Motivation
62
63
@@ -80,7 +81,7 @@ limitations. Now users can run as many pods as their instances CPU and RAM capac
80
81
81
82
## Goals
82
83
83
-
- Create a cluster with IPv6 networking features for new clusters created with k8s v1.21+
84
+
- Create a cluster with IPv6 networking features for new clusters created with k8s v1.21+ on EKS
84
85
- Dual-stack (IPv4+IPv6) VPC, subnets and EC2 instances/nodes
85
86
- Allow users to set their own VPC in config
86
87
- Allow users to create VPC with own IPv6 CIDR
@@ -91,6 +92,7 @@ limitations. Now users can run as many pods as their instances CPU and RAM capac
91
92
## Non-Goals/Future Work
92
93
93
94
- IPv6-only VPC
95
+
- Unmanaged clusters
94
96
- Migrate to IPv6 after cluster creation ( means that reconciliation will not update existing cluster to use ipv6 )
95
97
- Make IPv6 the default IP family
96
98
- Support k8s version that are `< 1.21`
@@ -101,17 +103,22 @@ limitations. Now users can run as many pods as their instances CPU and RAM capac
101
103
102
104
### Plan
103
105
104
-
Newly created clusters should be able to support IPv6 based communication throughout the entire cluster and in addition,
105
-
to the outside world via exposed services. The pods should have IPv6 addresses but should be able to contact AWS metadata
106
-
service using IPv4. A mixed communication is preferred as fully IPv6 clusters are not supported yet. Note, AWS does
107
-
provide an IPv6 metadata service under `fd00:ec2::254` well-known address.
106
+
Newly created clusters backed on EKS should be able to support IPv6 based communication throughout the entire cluster
107
+
and in addition, to the outside world via exposed services. The pods should have IPv6 addresses but should be able to
108
+
contact AWS metadata service using IPv4. A mixed communication is preferred as fully IPv6 clusters are not supported yet
109
+
using EKS. Note, AWS does provide an IPv6 metadata service under `fd00:ec2::254` well-known address.
108
110
109
-
### Managed and Unmanaged clusters
111
+
####Managed and Unmanaged clusters
110
112
111
-
For managed clusters the described approach below will work. For unmanaged clusters there is a lot more that needs to be
112
-
done, but all the things that do need to be done are actually manual steps from users. The code will support it both.
113
+
After careful considering and a lot of debugging and back and forth, we decided that unmanaged clusters will not be
114
+
supported at this time. It will come at a later date. The implementation as it stands, allows for unmanaged clusters to
115
+
work with ipv6 ( once the validation is removed from `AWSCluster` ) but the circumstances regarding getting the nodes
116
+
to work and kubeadm to play nicely are difficult to pinpoint.
113
117
114
-
The details on how to create an IPv6 enabled unmanaged cluster can be found in [ipv6-enabled-cluster.md](../book/src/topics/eks/ipv6-enabled-cluster.md).
118
+
Nevertheless, a sample template can be found under . This
119
+
represents a possible combination of configuration objects that kubeadm requires.
120
+
121
+
A validation is added to prevent unmanaged clusters from being able to use IPv6 specific configurations.
115
122
116
123
#### Additions and Configuration changes
117
124
@@ -253,6 +260,7 @@ The following validations need to be applied:
253
260
- Cluster version must be 1.21 or higher
254
261
- Addon version of CNI must be 1.10 or higher in case of IPv6
255
262
- Possibly validate ( if we don't set it automatically ) that the right environment properties are set for vpc-cni
263
+
- Prevent unmanaged clusters from using IPv6 settings
256
264
257
265
#### Instance Type
258
266
@@ -326,10 +334,10 @@ connectivity works such as, but not limited to:
326
334
## User Stories
327
335
328
336
As a CAPA user:
329
-
- I can create a cluster that is in a new IPv6 & IPv4 dual-stack VPC
337
+
- I can create a cluster using EKS that is in a new IPv6 & IPv4 dual-stack VPC
330
338
- I can create a nodegroup which completely supports IPv6 CIDR
331
339
- I can bring my own IPv6 subnet and create a nodegroup with that
332
-
- I can create infrastructure using an IPv6 & IPv4 dual-stack VPC
340
+
- I can create infrastructure on EKS using an IPv6 & IPv4 dual-stack VPC
333
341
334
342
## Security Model
335
343
@@ -345,7 +353,6 @@ No other alternatives.
345
353
- [x] 04/28/2022: Proposed idea in an issue or [community meeting]
346
354
- [x] 04/28/2022: Compile a Google Doc following the CAEP template (link here)
347
355
- [x] 08/06/2022: Open proposal PR
348
-
- [ ] MM/DD/YYYY: First round of feedback from community
349
-
- [ ] MM/DD/YYYY: Present proposal at a [community meeting]
356
+
- [x] 08/20/2022: First round of feedback from community
0 commit comments