diff --git a/scripts/install-cni.sh b/scripts/install-cni.sh index 004bcfc7..d221f2be 100755 --- a/scripts/install-cni.sh +++ b/scripts/install-cni.sh @@ -151,6 +151,11 @@ if [[ "${MIGRATE_TO_DPV2:-}" == "true" ]]; then fi if [[ "${ENABLE_CILIUM_PLUGIN}" == "true" ]]; then + dpv2_unified_cni=$(jq -r '.metadata.labels."cloud.google.com/gke-dpv2-unified-cni"' <<<"${node_object}") + log "Using Cilium plug-in; unified mode: '${dpv2_unified_cni}' (no action needed here if true)" + if [[ "${dpv2_unified_cni}" = "true" ]]; then + success + fi cilium_cni_config='{"type": "cilium-cni", "enable-route-mtu": true}' if [[ -n "${CILIUM_FAST_START_NAMESPACES:-}" ]]; then cilium_cni_config=$(jq --arg namespaces "${CILIUM_FAST_START_NAMESPACES:-}" '.["dpv2-fast-start-namespaces"] = $namespaces' <<<"${cilium_cni_config}") diff --git a/scripts/testcase/testcase-basic-v2.sh b/scripts/testcase/testcase-basic-v2.sh index 29f76a25..1dc8ac42 100644 --- a/scripts/testcase/testcase-basic-v2.sh +++ b/scripts/testcase/testcase-basic-v2.sh @@ -24,6 +24,7 @@ function before_test() { echo '{"object":{ "metadata": { "labels": { + "cloud.google.com/gke-dpv2-unified-cni": "true" }, "creationTimestamp": "2024-01-03T11:54:01Z", "name": "gke-my-cluster-default-pool-128bc25d-9c94", diff --git a/scripts/testcase/testcase-basic.sh b/scripts/testcase/testcase-basic.sh index a0a1ea28..11f4c6da 100644 --- a/scripts/testcase/testcase-basic.sh +++ b/scripts/testcase/testcase-basic.sh @@ -22,6 +22,7 @@ function before_test() { echo '{"object":{ "metadata": { "labels": { + "cloud.google.com/gke-dpv2-unified-cni": "true" }, "creationTimestamp": "2024-01-03T11:54:01Z", "name": "gke-my-cluster-default-pool-128bc25d-9c94", diff --git a/scripts/testcase/testcase-calico-v2.sh b/scripts/testcase/testcase-calico-v2.sh index 1098c0c4..e51caf4a 100644 --- a/scripts/testcase/testcase-calico-v2.sh +++ b/scripts/testcase/testcase-calico-v2.sh @@ -29,6 +29,7 @@ function before_test() { echo '{"object":{ "metadata": { "labels": { + "cloud.google.com/gke-dpv2-unified-cni": "true" }, "creationTimestamp": "2024-01-03T11:54:01Z", "name": "gke-my-cluster-default-pool-128bc25d-9c94", diff --git a/scripts/testcase/testcase-calico.sh b/scripts/testcase/testcase-calico.sh index ec10ccff..a03d9651 100644 --- a/scripts/testcase/testcase-calico.sh +++ b/scripts/testcase/testcase-calico.sh @@ -27,6 +27,7 @@ function before_test() { echo '{"object":{ "metadata": { "labels": { + "cloud.google.com/gke-dpv2-unified-cni": "true" }, "creationTimestamp": "2024-01-03T11:54:01Z", "name": "gke-my-cluster-default-pool-128bc25d-9c94", diff --git a/scripts/testcase/testcase-cilium-skip.sh b/scripts/testcase/testcase-cilium-skip.sh new file mode 100644 index 00000000..0a8e9390 --- /dev/null +++ b/scripts/testcase/testcase-cilium-skip.sh @@ -0,0 +1,67 @@ +export KUBERNETES_SERVICE_HOST=kubernetes.default.svc +export KUBERNETES_SERVICE_PORT=443 + +export ENABLE_CALICO_NETWORK_POLICY=false +export ENABLE_CILIUM_PLUGIN=true +export CILIUM_HEALTHZ_PORT=63197 +export CILIUM_FAST_START_NAMESPACES= +export ENABLE_MASQUERADE=false +export ENABLE_IPV6=false + +CNI_SPEC_TEMPLATE=$(cat testdata/spec-template.json) +export CNI_SPEC_TEMPLATE + +function before_test() { + + # shellcheck disable=SC2329 + function curl() { + # shellcheck disable=SC2317 + case "$*" in + *http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/0*) + echo '{"ipv6s": ["2600:1900:4000:318:0:7:0:0"]}' + ;; + *https://kubernetes.default.svc:443/api/v1/nodes*) + echo '{"object":{ + "metadata": { + "labels": { + "cloud.google.com/gke-dpv2-unified-cni": "true" + }, + "creationTimestamp": "2024-01-03T11:54:01Z", + "name": "gke-my-cluster-default-pool-128bc25d-9c94", + "resourceVersion": "891003", + "uid": "f2353a2f-ca8c-4ca0-8dd3-ad1f964a54f0" + }, + "spec": { + "podCIDR": "10.52.1.0/24", + "podCIDRs": [ + "10.52.1.0/24" + ], + "providerID": "gce://my-gke-project/us-central1-c/gke-my-cluster-default-pool-128bc25d-9c94" + } + }}' + ;; + *http://localhost:63197/*) + echo 'healthz' + ;; + *) + #unsupported + exit 1 + esac + } + export -f curl + + rm -f "/host/etc/cni/net.d/${CNI_SPEC_NAME}" + +} + +function verify() { + local actual + + if [[ -f "/host/etc/cni/net.d/${CNI_SPEC_NAME}" ]]; then + actual=$(jq -S . <"/host/etc/cni/net.d/${CNI_SPEC_NAME}") + echo "Expected CNI config to be missing, but it has:" + echo "$actual" + return 1 + fi + +}