From da95684f74591667db8ba21f0f91609a7afef339 Mon Sep 17 00:00:00 2001 From: Brandon Palm Date: Mon, 9 Feb 2026 17:07:50 -0600 Subject: [PATCH] ci: replace manual KinD setup with palmsoftware/quick-k8s action Replace manual cluster creation via hack/kind.sh (called through Makefile targets) with the quick-k8s GitHub Action for both the e2e and metallb_e2e jobs. This provides: - Standardized cluster setup with disk optimization - Worker node labeling without post-creation scripts - IP family configuration (ipv4/ipv6/dual) via action input - Consistent cluster naming and kubeconfig export The existing hack/kind.sh idempotency check detects the pre-existing cluster and skips re-creation, so no Makefile changes are needed. Co-Authored-By: Claude Opus 4.6 --- .github/workflows/ci.yaml | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 4710d92f..1876fb13 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -159,6 +159,25 @@ jobs: sudo apt-get update sudo apt-get install linux-modules-extra-$(uname -r) + # Cluster creation is handled here by quick-k8s instead of inside the + # Makefile (hack/kind.sh). When `make deploy-with-prometheus` runs later, + # hack/kind.sh detects the existing cluster and exits early. + - name: Create KinD cluster + uses: palmsoftware/quick-k8s@v0.0.49 + with: + clusterName: frr-k8s + ipFamily: ${{ matrix.ip-family }} + numWorkerNodes: 2 # matches original hack/kind.sh topology + workerNodeLabels: "node-role.kubernetes.io/worker=worker" # required by deploy node selectors + disableDefaultCni: false # use kindnet, no custom CNI needed + waitForPodsReady: true + installCalico: false # kindnet is sufficient + + - name: Export kubeconfig for Makefile + run: | + mkdir -p bin + kind export kubeconfig --name frr-k8s --kubeconfig bin/kubeconfig + - name: Download frr8ks images uses: actions/download-artifact@v4 with: @@ -216,6 +235,23 @@ jobs: sudo apt-get update sudo apt-get install linux-modules-extra-$(uname -r) python3-pip arping ndisc6 + # Cluster creation is handled here by quick-k8s instead of inside the + # Makefile (hack/kind.sh). When `make deploy-helm` runs later, + # hack/kind.sh detects the existing cluster and exits early. + - name: Create KinD cluster + uses: palmsoftware/quick-k8s@v0.0.49 + with: + numWorkerNodes: 2 # matches original hack/kind.sh topology + workerNodeLabels: "node-role.kubernetes.io/worker=worker" # required by deploy node selectors + disableDefaultCni: false # use kindnet, no custom CNI needed + waitForPodsReady: true + installCalico: false # kindnet is sufficient + + - name: Export kubeconfig for Makefile + run: | + mkdir -p bin + kind export kubeconfig --name kind --kubeconfig bin/kubeconfig + - name: Download frr-k8s images uses: actions/download-artifact@v4 with: