@@ -5,7 +5,7 @@ UNTAINT_CONTROL_PLANE ?= true
55VPC_NAT_GW_IMG = $(REGISTRY ) /vpc-nat-gateway:$(VERSION )
66
77# Cilium configuration variables (fallback if not defined in main Makefile)
8- CILIUM_VERSION ?= v1.18.4
8+ CILIUM_VERSION ?= v1.18.5
99CILIUM_IMAGE_REPO ?= quay.io/cilium
1010
1111# renovate: datasource=docker depName=kindest/node packageName=kindest/node versioning=semver
@@ -80,6 +80,17 @@ define kind_subctl_join
8080 $(call kubectl_wait_submariner_ready)
8181endef
8282
83+ define kubectl_get_control_plane_ip
84+ $(shell \
85+ options=""; \
86+ if [ -n "$(1 ) " ]; then \
87+ options="--context kind-$(1 ) "; \
88+ fi; \
89+ kubectl $${options} get nodes -l node-role.kubernetes.io/control-plane \
90+ -o jsonpath='{.items[0].status.addresses[?(@.type=="InternalIP") ].address}' \
91+ )
92+ endef
93+
8394.PHONY : kind-network-create-underlay
8495kind-network-create-underlay :
8596 $(eval UNDERLAY_NETWORK_ID = $(shell docker network ls -f name='^kind-underlay$$' --format '{{.ID}}') )
@@ -150,6 +161,13 @@ kind-init-ovn-ic-%: kind-clean-ovn-ic
150161 @n_worker=3 ip_family=$* auditing=$(KIND_AUDITING ) $(MAKE ) kind-generate-config
151162 $(call kind_create_cluster,yamls/kind.yaml,kube-ovn1,1)
152163
164+ .PHONY : kind-init-without-kube-proxy
165+ kind-init-without-kube-proxy : kind-init-without-kube-proxy-ipv4
166+
167+ .PHONY : kind-init-without-kube-proxy-%
168+ kind-init-without-kube-proxy-% : kind-clean
169+ @kube_proxy_mode=none $(MAKE ) kind-init-$*
170+
153171.PHONY : kind-init-cilium-chaining
154172kind-init-cilium-chaining : kind-init-cilium-chaining-ipv4
155173
@@ -219,6 +237,10 @@ kind-init-bgp-ha: kind-clean-bgp kind-init
219237kind-load-image :
220238 $(call kind_load_image,kube-ovn,$(REGISTRY ) /kube-ovn:$(VERSION ) )
221239
240+ .PHONY : kind-load-image-vpc-nat-gateway
241+ kind-load-image-vpc-nat-gateway :
242+ $(call kind_load_image,kube-ovn,$(VPC_NAT_GW_IMG ) )
243+
222244.PHONY : kind-install-chart
223245kind-install-chart : kind-load-image untaint-control-plane install-chart
224246
@@ -474,25 +496,6 @@ kind-install-multus:
474496 kubectl -n kube-system set resources ds/kube-multus-ds -c kube-multus --limits=cpu=200m,memory=200Mi
475497 kubectl -n kube-system rollout status ds kube-multus-ds
476498
477- .PHONY : kind-install-multus-primary
478- kind-install-multus-primary :
479- @echo " Installing Multus as primary CNI..."
480- kubectl apply -f https://raw.githubusercontent.com/k8snetworkplumbingwg/multus-cni/master/deployments/multus-daemonset.yml
481- @echo " Waiting for Multus daemonset to be ready..."
482- kubectl rollout status daemonset/kube-multus-ds -n kube-system --timeout=300s
483-
484- .PHONY : kind-update-multus-cilium-config
485- kind-update-multus-cilium-config :
486- @echo " Creating Cilium CNI configuration and updating Multus conflist..."
487- @for node in $$(kubectl get nodes --no-headers -o custom-columns=":metadata.name" ) ; do \
488- echo " Creating Cilium CNI config on node: $$ node" ; \
489- docker exec $$ node sh -c ' mkdir -p /host/etc/cni/multus/net.d' ; \
490- docker exec $$ node sh -c ' printf "{\n \"cniVersion\": \"0.3.1\",\n \"name\": \"cilium\",\n \"plugins\": [\n {\n \"type\": \"cilium-cni\",\n \"enable-debug\": false,\n \"log-file\": \"/var/run/cilium/cilium-cni.log\"\n }\n ]\n}" > /host/etc/cni/multus/net.d/05-cilium.conflist' ; \
491- echo " Updating Multus CNI configuration on node: $$ node" ; \
492- docker exec $$ node sh -c ' printf "{\n \"cniVersion\": \"0.3.1\",\n \"name\": \"multus-cni-network\",\n \"type\": \"multus\",\n \"cniConf\": \"/host/etc/cni/multus/net.d\",\n \"kubeconfig\": \"/etc/cni/net.d/multus.d/multus.kubeconfig\",\n \"delegates\": [\n {\n \"cniVersion\": \"0.3.1\",\n \"name\": \"cilium\",\n \"plugins\": [\n {\n \"enable-debug\": false,\n \"log-file\": \"/var/run/cilium/cilium-cni.log\",\n \"type\": \"cilium-cni\"\n }\n ]\n }\n ]\n}" > /etc/cni/net.d/00-multus.conf' ; \
493- done
494- @echo " Cilium CNI configuration and Multus conflist created on all nodes"
495-
496499.PHONY : kind-install-metallb
497500kind-install-metallb :
498501 $(call docker_network_info,kind,kube-ovn-control-plane)
@@ -522,7 +525,7 @@ kind-install-metallb-pool-from-underlay: kind-load-image
522525
523526.PHONY : kind-install-vpc-nat-gw
524527kind-install-vpc-nat-gw :
525- $( call kind_load_image,kube-ovn, $( VPC_NAT_GW_IMG ) )
528+ @ $( MAKE ) kind-load-image-vpc-nat-gateway
526529 @$(MAKE ) ENABLE_NAT_GW=true CNI_CONFIG_PRIORITY=10 kind-install
527530 @$(MAKE ) kind-install-multus
528531
@@ -550,7 +553,7 @@ kind-install-kubevirt:
550553
551554.PHONY : kind-install-lb-svc
552555kind-install-lb-svc :
553- $( call kind_load_image,kube-ovn, $( VPC_NAT_GW_IMG ) )
556+ @ $( MAKE ) kind-load-image-vpc-nat-gateway
554557 @$(MAKE ) ENABLE_LB_SVC=true CNI_CONFIG_PRIORITY=10 kind-install
555558 @$(MAKE ) kind-install-multus
556559
@@ -573,7 +576,10 @@ kind-install-cilium-chaining: kind-install-cilium-chaining-ipv4
573576
574577.PHONY : kind-install-cilium-chaining-%
575578kind-install-cilium-chaining-% :
576- $(eval KUBERNETES_SERVICE_HOST = $(shell kubectl get nodes kube-ovn-control-plane -o jsonpath='{.status.addresses[0].address}') )
579+ $(eval IPV4_ENABLED = $(shell if echo $* | grep -q ipv6; then echo false; else echo true; fi) )
580+ $(eval IPV6_ENABLED = $(shell if echo $* | grep -q ipv4; then echo false; else echo true; fi) )
581+ @echo " Installing Cilium with IPv4=$( IPV4_ENABLED) and IPv6=$( IPV6_ENABLED) ..."
582+ $(eval KUBERNETES_SERVICE_HOST = $(call kubectl_get_control_plane_ip) )
577583 $(call kind_load_image,kube-ovn,$(CILIUM_IMAGE_REPO ) /cilium:$(CILIUM_VERSION ) ,1)
578584 $(call kind_load_image,kube-ovn,$(CILIUM_IMAGE_REPO ) /operator-generic:$(CILIUM_VERSION ) ,1)
579585 kubectl apply -f yamls/cilium-chaining.yaml
@@ -598,8 +604,8 @@ kind-install-cilium-chaining-%:
598604 --set hubble.enabled=true \
599605 --set envoy.enabled=false \
600606 --set sctp.enabled=true \
601- --set ipv4.enabled=$(shell if echo $* | grep -q ipv6; then echo false; else echo true; fi ) \
602- --set ipv6.enabled=$(shell if echo $* | grep -q ipv4; then echo false; else echo true; fi ) \
607+ --set ipv4.enabled=$(IPV4_ENABLED ) \
608+ --set ipv6.enabled=$(IPV6_ENABLED ) \
603609 --set routingMode=native \
604610 --set devices=" eth+ ovn0 genev_sys_6081 vxlan_sys_4789" \
605611 --set forceDeviceDetection=true \
@@ -622,23 +628,25 @@ kind-install-cilium-delegate: kind-install-cilium-delegate-ipv4
622628
623629.PHONY : kind-install-cilium-delegate-%
624630kind-install-cilium-delegate-% :
625- @echo " Installing Cilium as delegate CNI through Multus using Helm..."
626- $(eval KUBERNETES_SERVICE_HOST = $(shell kubectl get nodes kube-ovn-control-plane -o jsonpath='{.status.addresses[0].address}') )
631+ $(eval IPV4_ENABLED = $(shell if echo $* | grep -q ipv6; then echo false; else echo true; fi) )
632+ $(eval IPV6_ENABLED = $(shell if echo $* | grep -q ipv4; then echo false; else echo true; fi) )
633+ @echo " Installing Cilium with IPv4=$( IPV4_ENABLED) and IPv6=$( IPV6_ENABLED) ..."
627634 $(call kind_load_image,kube-ovn,$(CILIUM_IMAGE_REPO ) /cilium:$(CILIUM_VERSION ) ,1)
628635 $(call kind_load_image,kube-ovn,$(CILIUM_IMAGE_REPO ) /operator-generic:$(CILIUM_VERSION ) ,1)
629636 helm repo add cilium https://helm.cilium.io/
630637 helm repo update cilium
631638 @echo " Installing Cilium via Helm with delegate configuration..."
632- helm install cilium cilium/cilium \
639+ helm install cilium cilium/cilium --wait \
633640 --namespace kube-system \
634641 --version $(CILIUM_VERSION:v%=% ) \
642+ --set image.useDigest=false \
643+ --set operator.image.useDigest=false \
635644 --set cni.exclusive=false \
636- --set envoy.enabled=false
645+ --set envoy.enabled=false \
646+ --set ipv4.enabled=$(IPV4_ENABLED ) \
647+ --set ipv6.enabled=$(IPV6_ENABLED )
637648 @echo " Waiting for Cilium to be ready..."
638- kubectl wait --namespace kube-system --for=condition=ready pod -l k8s-app=cilium --timeout=300s
639- @echo " Redeploying Multus..."
640- kubectl -n kube-system set resources ds/kube-multus-ds -c kube-multus --limits=cpu=200m,memory=200Mi
641- kubectl -n kube-system rollout status ds kube-multus-ds
649+ kubectl -n kube-system rollout status ds cilium --timeout 120s
642650
643651.PHONY : kind-install-bgp
644652kind-install-bgp : kind-install
@@ -808,7 +816,7 @@ kind-clean-bgp-ha:
808816
809817.PHONY : kind-ghcr-pull
810818kind-ghcr-pull :
811- echo $$ {GHCR_TOKEN} | docker login ghcr.io -u github-actions --password-stdin
819+ @ echo $$ {GHCR_TOKEN} | docker login ghcr.io -u github-actions --password-stdin
812820 docker pull ghcr.io/kubeovn/kindest-node:$(K8S_VERSION )
813821 docker tag ghcr.io/kubeovn/kindest-node:$(K8S_VERSION ) kindest/node:$(K8S_VERSION )
814822
@@ -817,23 +825,19 @@ kind-install-multus-cilium-kubeovn-non-primary: kind-install-multus-cilium-kubeo
817825
818826.PHONY : kind-install-multus-cilium-kubeovn-non-primary-%
819827kind-install-multus-cilium-kubeovn-non-primary-% :
820- @echo " Setting up KIND cluster with Multus primary CNI, Cilium delegate, and Kube-OVN secondary CNI..."
821- @echo " 1. Creating KIND cluster and initializing with no CNI..."
822- $(MAKE ) kind-init-$*
823- @echo " 2. Create underlay network and connect nodes..."
828+ @echo " Setting up KIND cluster with Multus-CNI, Cilium delegate as primary CNI, and Kube-OVN as secondary CNI..."
829+ @echo " 1. Create underlay network and connect nodes..."
824830 @$(MAKE ) kind-network-create-underlay
825831 @$(MAKE ) kind-network-connect-underlay
826- @echo " 3. Installing Multus as Cilium configuration..."
827- @$(MAKE ) kind-update-multus-cilium-config
828- @echo " 4. Installing Multus as primary CNI..."
829- @$(MAKE ) kind-install-multus-primary
830- @echo " 5. Installing Cilium as delegate through Multus..."
832+ @echo " 2. Installing Cilium as primary CNI..."
831833 @$(MAKE ) kind-install-cilium-delegate-$*
832- @echo " 6. Installing Kube-OVN as secondary/non-primary CNI..."
833- @$(MAKE ) ENABLE_NON_PRIMARY_CNI=true CNI_CONFIG_PRIORITY=10 kind-install-chart
834+ @echo " 3. Installing Multus-CNI..."
835+ @$(MAKE ) kind-install-multus
836+ @echo " 4. Installing Kube-OVN as secondary/non-primary CNI..."
837+ @$(MAKE ) NET_STACK=$* ENABLE_NON_PRIMARY_CNI=true CNI_CONFIG_PRIORITY=10 kind-install-chart
834838 @echo " KIND cluster setup complete!"
835- @echo " - Multus: Primary CNI for multi -CNI support"
836- @echo " - Cilium: Delegate CNI for primary networking "
839+ @echo " - Multus: Multi -CNI support"
840+ @echo " - Cilium: Primary CNI"
837841 @echo " - Kube-OVN: Secondary CNI for additional network interfaces"
838842 @echo " "
839843 @echo " You can now run non-primary CNI tests with:"
@@ -845,20 +849,16 @@ kind-install-multus-cilium-kubeovn-non-primary-v2: kind-install-multus-cilium-ku
845849
846850.PHONY : kind-install-multus-cilium-kubeovn-non-primary-v2-%
847851kind-install-multus-cilium-kubeovn-non-primary-v2-% :
848- @echo " Setting up KIND cluster with Multus primary CNI, Cilium delegate, and Kube-OVN secondary CNI..."
849- @echo " 1. Creating KIND cluster and initializing with no CNI..."
850- @kube_proxy_mode=none $(MAKE ) kind-init-$*
851- @echo " 2. Installing Multus as Cilium configuration..."
852- @$(MAKE ) kind-update-multus-cilium-config
853- @echo " 3. Installing Multus as primary CNI..."
854- @$(MAKE ) kind-install-multus-primary
855- @echo " 4. Installing Cilium as delegate through Multus..."
852+ @echo " Setting up KIND cluster with Multus-CNI, Cilium delegate as primary CNI, and Kube-OVN as secondary CNI..."
853+ @echo " 1. Installing Cilium as primary CNI..."
856854 @$(MAKE ) kind-install-cilium-delegate-$*
857- @echo " 5. Installing Kube-OVN as secondary/non-primary CNI..."
858- @$(MAKE ) ENABLE_NON_PRIMARY_CNI=true CNI_CONFIG_PRIORITY=10 kind-install-chart
855+ @echo " 2. Installing Multus-CNI..."
856+ @$(MAKE ) kind-install-multus
857+ @echo " 3. Installing Kube-OVN as secondary/non-primary CNI..."
858+ @$(MAKE ) NET_STACK=$* ENABLE_NON_PRIMARY_CNI=true CNI_CONFIG_PRIORITY=10 kind-install-chart
859859 @echo " KIND cluster setup complete!"
860- @echo " - Multus: Primary CNI for multi -CNI support"
861- @echo " - Cilium: Delegate CNI for primary networking "
860+ @echo " - Multus: Multi -CNI support"
861+ @echo " - Cilium: Primary CNI"
862862 @echo " - Kube-OVN: Secondary CNI for additional network interfaces"
863863 @echo " "
864864 @echo " You can now run non-primary CNI tests with:"
@@ -869,4 +869,4 @@ kind-install-multus-cilium-kubeovn-non-primary-v2-%:
869869kind-setup-non-primary-cni : kind-install-multus-cilium-kubeovn-non-primary
870870
871871.PHONY : kind-setup-non-primary-cni-v2
872- kind-setup-non-primary-cni-v2 : kind-install-multus-cilium-kubeovn-non-primary-v2
872+ kind-setup-non-primary-cni-v2 : kind-install-multus-cilium-kubeovn-non-primary-v2
0 commit comments