Skip to content

Commit b131e6e

Browse files
jimmidysondkoshkin
andauthored
feat: Add Cilium CNI addon support (#333)
Co-authored-by: Dimitri Koshkin <[email protected]>
1 parent 1ede865 commit b131e6e

34 files changed

+692
-95
lines changed

README.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -72,27 +72,27 @@ EOF
7272
To create a cluster, update `clusterConfig` variable and run:
7373

7474
```shell
75-
kubectl apply --server-side -f examples/capi-quick-start/docker-cluster-calico-helm-addon.yaml
75+
kubectl apply --server-side -f examples/capi-quick-start/docker-cluster-cilium-helm-addon.yaml
7676
```
7777

7878
Wait until control plane is ready:
7979

8080
```shell
81-
kubectl wait clusters/docker-quick-start-helm-addon-calico --for=condition=ControlPlaneInitialized --timeout=5m
81+
kubectl wait clusters/docker-quick-start-helm-addon-cilium --for=condition=ControlPlaneInitialized --timeout=5m
8282
```
8383

8484
To get the kubeconfig for the new cluster, run:
8585

8686
```shell
87-
clusterctl get kubeconfig docker-quick-start-helm-addon-calico > docker-kubeconfig
87+
clusterctl get kubeconfig docker-quick-start-helm-addon-cilium > docker-kubeconfig
8888
```
8989

9090
If you are not on Linux, you will also need to fix the generated kubeconfig's `server`, run:
9191

9292
```shell
93-
kubectl config set-cluster docker-quick-start-helm-addon-calico \
93+
kubectl config set-cluster docker-quick-start-helm-addon-cilium \
9494
--kubeconfig docker-kubeconfig \
95-
--server=https://$(docker port docker-quick-start-helm-addon-calico-lb 6443/tcp)
95+
--server=https://$(docker port docker-quick-start-helm-addon-cilium-lb 6443/tcp)
9696
```
9797

9898
Wait until all nodes are ready (this indicates that CNI has been deployed successfully):
@@ -101,10 +101,10 @@ Wait until all nodes are ready (this indicates that CNI has been deployed succes
101101
kubectl --kubeconfig docker-kubeconfig wait nodes --all --for=condition=Ready --timeout=5m
102102
```
103103

104-
Show that Calico is running successfully on the workload cluster:
104+
Show that Cilium is running successfully on the workload cluster:
105105

106106
```shell
107-
kubectl --kubeconfig docker-kubeconfig get daemonsets -n calico-system
107+
kubectl --kubeconfig docker-kubeconfig get daemonsets -n kube-system cilium
108108
```
109109

110110
Deploy kube-vip to provide service load-balancer:
@@ -157,7 +157,7 @@ watch -n 0.5 kubectl --kubeconfig docker-kubeconfig get service/traefik
157157
To delete the workload cluster, run:
158158

159159
```shell
160-
kubectl delete cluster docker-quick-start-helm-addon-calico
160+
kubectl delete cluster docker-quick-start-helm-addon-cilium
161161
```
162162

163163
Notice that the traefik service is deleted before the cluster is actually finally deleted.

api/v1alpha1/addon_types.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ type CNI struct {
5454
}
5555

5656
func (CNI) VariableSchema() clusterv1.VariableSchema {
57-
supportedCNIProviders := []string{CNIProviderCalico}
57+
supportedCNIProviders := []string{CNIProviderCalico, CNIProviderCilium}
5858

5959
return clusterv1.VariableSchema{
6060
OpenAPIV3Schema: clusterv1.JSONSchemaProps{

api/v1alpha1/clusterconfig_types.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,11 @@ import (
1616

1717
const (
1818
CNIProviderCalico = "calico"
19+
CNIProviderCilium = "cilium"
20+
1921
CSIProviderAWSEBS = "aws-ebs"
20-
CPIProivderAWS = "aws"
22+
23+
CPIProivderAWS = "aws"
2124
)
2225

2326
//+kubebuilder:object:root=true

charts/capi-runtime-extensions/README.md

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -31,18 +31,21 @@ A Helm chart for capi-runtime-extensions
3131
| deployDefaultClusterClasses | bool | `true` | |
3232
| deployment.replicas | int | `1` | |
3333
| env | object | `{}` | |
34-
| hooks.CalicoCNI.crsStrategy.defaultInstallationConfigMaps.AWSCluster.configMap.content | string | `""` | |
35-
| hooks.CalicoCNI.crsStrategy.defaultInstallationConfigMaps.AWSCluster.configMap.name | string | `"calico-cni-crs-installation-awscluster"` | |
36-
| hooks.CalicoCNI.crsStrategy.defaultInstallationConfigMaps.AWSCluster.create | bool | `true` | |
37-
| hooks.CalicoCNI.crsStrategy.defaultInstallationConfigMaps.DockerCluster.configMap.content | string | `""` | |
38-
| hooks.CalicoCNI.crsStrategy.defaultInstallationConfigMaps.DockerCluster.configMap.name | string | `"calico-cni-crs-installation-dockercluster"` | |
39-
| hooks.CalicoCNI.crsStrategy.defaultInstallationConfigMaps.DockerCluster.create | bool | `true` | |
40-
| hooks.CalicoCNI.crsStrategy.defaultTigeraOperatorConfigMap.name | string | `"tigera-operator"` | |
41-
| hooks.CalicoCNI.defaultPodSubnet | string | `"192.168.0.0/16"` | |
42-
| hooks.CalicoCNI.helmAddonStrategy.defaultValueTemplatesConfigMaps.AWSCluster.create | bool | `true` | |
43-
| hooks.CalicoCNI.helmAddonStrategy.defaultValueTemplatesConfigMaps.AWSCluster.name | string | `"calico-cni-helm-values-template-awscluster"` | |
44-
| hooks.CalicoCNI.helmAddonStrategy.defaultValueTemplatesConfigMaps.DockerCluster.create | bool | `true` | |
45-
| hooks.CalicoCNI.helmAddonStrategy.defaultValueTemplatesConfigMaps.DockerCluster.name | string | `"calico-cni-helm-values-template-dockercluster"` | |
34+
| hooks.cni.calico.crsStrategy.defaultInstallationConfigMaps.AWSCluster.configMap.content | string | `""` | |
35+
| hooks.cni.calico.crsStrategy.defaultInstallationConfigMaps.AWSCluster.configMap.name | string | `"calico-cni-crs-installation-awscluster"` | |
36+
| hooks.cni.calico.crsStrategy.defaultInstallationConfigMaps.AWSCluster.create | bool | `true` | |
37+
| hooks.cni.calico.crsStrategy.defaultInstallationConfigMaps.DockerCluster.configMap.content | string | `""` | |
38+
| hooks.cni.calico.crsStrategy.defaultInstallationConfigMaps.DockerCluster.configMap.name | string | `"calico-cni-crs-installation-dockercluster"` | |
39+
| hooks.cni.calico.crsStrategy.defaultInstallationConfigMaps.DockerCluster.create | bool | `true` | |
40+
| hooks.cni.calico.crsStrategy.defaultTigeraOperatorConfigMap.name | string | `"tigera-operator"` | |
41+
| hooks.cni.calico.defaultPodSubnet | string | `"192.168.0.0/16"` | |
42+
| hooks.cni.calico.helmAddonStrategy.defaultValueTemplatesConfigMaps.AWSCluster.create | bool | `true` | |
43+
| hooks.cni.calico.helmAddonStrategy.defaultValueTemplatesConfigMaps.AWSCluster.name | string | `"calico-cni-helm-values-template-awscluster"` | |
44+
| hooks.cni.calico.helmAddonStrategy.defaultValueTemplatesConfigMaps.DockerCluster.create | bool | `true` | |
45+
| hooks.cni.calico.helmAddonStrategy.defaultValueTemplatesConfigMaps.DockerCluster.name | string | `"calico-cni-helm-values-template-dockercluster"` | |
46+
| hooks.cni.cilium.crsStrategy.defaultCiliumConfigMap.name | string | `"cilium"` | |
47+
| hooks.cni.cilium.helmAddonStrategy.defaultValueTemplateConfigMap.create | bool | `true` | |
48+
| hooks.cni.cilium.helmAddonStrategy.defaultValueTemplateConfigMap.name | string | `"default-cilium-cni-helm-values-template"` | |
4649
| image.pullPolicy | string | `"IfNotPresent"` | |
4750
| image.repository | string | `"ghcr.io/d2iq-labs/capi-runtime-extensions"` | |
4851
| image.tag | string | `""` | |

charts/capi-runtime-extensions/templates/cni/calico/manifests/aws/crs-installation.yaml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
# Copyright 2023 D2iQ, Inc. All rights reserved.
22
# SPDX-License-Identifier: Apache-2.0
33

4-
{{- if .Values.hooks.CalicoCNI.crsStrategy.defaultInstallationConfigMaps.AWSCluster.create }}
4+
{{- if .Values.hooks.cni.calico.crsStrategy.defaultInstallationConfigMaps.AWSCluster.create }}
55
apiVersion: v1
66
kind: ConfigMap
77
metadata:
8-
name: '{{ .Values.hooks.CalicoCNI.crsStrategy.defaultInstallationConfigMaps.AWSCluster.configMap.name }}'
8+
name: '{{ .Values.hooks.cni.calico.crsStrategy.defaultInstallationConfigMaps.AWSCluster.configMap.name }}'
99
data:
1010
calico-installation: |
11-
{{- if .Values.hooks.CalicoCNI.crsStrategy.defaultInstallationConfigMaps.AWSCluster.configMap.content -}}
12-
{{ .Values.hooks.CalicoCNI.crsStrategy.defaultInstallationConfigMaps.AWSCluster.configMap.content | nindent 4 }}
11+
{{- if .Values.hooks.cni.calico.crsStrategy.defaultInstallationConfigMaps.AWSCluster.configMap.content -}}
12+
{{ .Values.hooks.cni.calico.crsStrategy.defaultInstallationConfigMaps.AWSCluster.configMap.content | nindent 4 }}
1313
{{- else -}}
1414
# This section includes base Calico installation configuration.
1515
# For more information, see: https://docs.projectcalico.org/reference/installation/api
@@ -25,7 +25,7 @@ data:
2525
# Note: The ipPools section cannot be modified post-install.
2626
ipPools:
2727
- blockSize: 26
28-
cidr: {{ .Values.hooks.CalicoCNI.defaultPodSubnet }}
28+
cidr: {{ .Values.hooks.cni.calico.defaultPodSubnet }}
2929
encapsulation: IPIP
3030
natOutgoing: Enabled
3131
nodeSelector: all()

charts/capi-runtime-extensions/templates/cni/calico/manifests/aws/helm-addon-installation.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
# Copyright 2023 D2iQ, Inc. All rights reserved.
22
# SPDX-License-Identifier: Apache-2.0
33

4-
{{- if .Values.hooks.CalicoCNI.helmAddonStrategy.defaultValueTemplatesConfigMaps.AWSCluster.create }}
4+
{{- if .Values.hooks.cni.calico.helmAddonStrategy.defaultValueTemplatesConfigMaps.AWSCluster.create }}
55
apiVersion: v1
66
kind: ConfigMap
77
metadata:
8-
name: '{{ .Values.hooks.CalicoCNI.helmAddonStrategy.defaultValueTemplatesConfigMaps.AWSCluster.name }}'
8+
name: '{{ .Values.hooks.cni.calico.helmAddonStrategy.defaultValueTemplatesConfigMaps.AWSCluster.name }}'
99
data:
1010
values.yaml: |-
1111
installation:

charts/capi-runtime-extensions/templates/cni/calico/manifests/docker/crs-installation.yaml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
# Copyright 2023 D2iQ, Inc. All rights reserved.
22
# SPDX-License-Identifier: Apache-2.0
33

4-
{{- if .Values.hooks.CalicoCNI.crsStrategy.defaultInstallationConfigMaps.DockerCluster.create }}
4+
{{- if .Values.hooks.cni.calico.crsStrategy.defaultInstallationConfigMaps.DockerCluster.create }}
55
apiVersion: v1
66
kind: ConfigMap
77
metadata:
8-
name: '{{ .Values.hooks.CalicoCNI.crsStrategy.defaultInstallationConfigMaps.DockerCluster.configMap.name }}'
8+
name: '{{ .Values.hooks.cni.calico.crsStrategy.defaultInstallationConfigMaps.DockerCluster.configMap.name }}'
99
data:
1010
calico-installation: |
11-
{{- if .Values.hooks.CalicoCNI.crsStrategy.defaultInstallationConfigMaps.DockerCluster.configMap.content -}}
12-
{{ .Values.hooks.CalicoCNI.crsStrategy.defaultInstallationConfigMaps.DockerCluster.configMap.content | nindent 4 }}
11+
{{- if .Values.hooks.cni.calico.crsStrategy.defaultInstallationConfigMaps.DockerCluster.configMap.content -}}
12+
{{ .Values.hooks.cni.calico.crsStrategy.defaultInstallationConfigMaps.DockerCluster.configMap.content | nindent 4 }}
1313
{{- else -}}
1414
# This section includes base Calico installation configuration.
1515
# For more information, see: https://docs.projectcalico.org/reference/installation/api
@@ -25,7 +25,7 @@ data:
2525
# Note: The ipPools section cannot be modified post-install.
2626
ipPools:
2727
- blockSize: 26
28-
cidr: {{ .Values.hooks.CalicoCNI.defaultPodSubnet }}
28+
cidr: {{ .Values.hooks.cni.calico.defaultPodSubnet }}
2929
encapsulation: VXLANCrossSubnet
3030
natOutgoing: Enabled
3131
nodeSelector: all()

charts/capi-runtime-extensions/templates/cni/calico/manifests/docker/helm-addon-installation.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
# Copyright 2023 D2iQ, Inc. All rights reserved.
22
# SPDX-License-Identifier: Apache-2.0
33

4-
{{- if .Values.hooks.CalicoCNI.helmAddonStrategy.defaultValueTemplatesConfigMaps.DockerCluster.create }}
4+
{{- if .Values.hooks.cni.calico.helmAddonStrategy.defaultValueTemplatesConfigMaps.DockerCluster.create }}
55
apiVersion: v1
66
kind: ConfigMap
77
metadata:
8-
name: '{{ .Values.hooks.CalicoCNI.helmAddonStrategy.defaultValueTemplatesConfigMaps.DockerCluster.name }}'
8+
name: '{{ .Values.hooks.cni.calico.helmAddonStrategy.defaultValueTemplatesConfigMaps.DockerCluster.name }}'
99
data:
1010
values.yaml: |-
1111
installation:

charts/capi-runtime-extensions/templates/cni/calico/manifests/tigera-operator-configmap.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,5 @@ data:
1212
kind: ConfigMap
1313
metadata:
1414
creationTimestamp: null
15-
name: '{{ .Values.hooks.CalicoCNI.crsStrategy.defaultTigeraOperatorConfigMap.name
15+
name: '{{ .Values.hooks.cni.calico.crsStrategy.defaultTigeraOperatorConfigMap.name
1616
}}'

charts/capi-runtime-extensions/templates/cni/cilium/manifests/cilium-configmap.yaml

Lines changed: 15 additions & 0 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)