From 670341f6bde973de6edef0e0e2de23a29d821506 Mon Sep 17 00:00:00 2001 From: IvanHunters Date: Fri, 3 Oct 2025 09:07:14 +0300 Subject: [PATCH 1/6] feat/impruvement-kubernetes-tests Signed-off-by: IvanHunters --- hack/e2e-apps/run-kubernetes.sh | 35 ++++++++++++++++++++++++++++--- packages/apps/kubernetes/Makefile | 2 +- 2 files changed, 33 insertions(+), 4 deletions(-) diff --git a/hack/e2e-apps/run-kubernetes.sh b/hack/e2e-apps/run-kubernetes.sh index 3988a264..fe783d5c 100644 --- a/hack/e2e-apps/run-kubernetes.sh +++ b/hack/e2e-apps/run-kubernetes.sh @@ -79,22 +79,51 @@ EOF # Wait for the machine deployment to scale to 2 replicas (timeout after 1 minute) kubectl wait machinedeployment kubernetes-${test_name}-md0 -n tenant-test --timeout=1m --for=jsonpath='{.status.replicas}'=2 - # Get the admin kubeconfig and save it to a file kubectl get secret kubernetes-${test_name}-admin-kubeconfig -ojsonpath='{.data.super-admin\.conf}' -n tenant-test | base64 -d > tenantkubeconfig # Update the kubeconfig to use localhost for the API server yq -i ".clusters[0].cluster.server = \"https://localhost:${port}\"" tenantkubeconfig - # Set up port forwarding to the Kubernetes API server for a 40 second timeout - bash -c 'timeout 40s kubectl port-forward service/kubernetes-'"${test_name}"' -n tenant-test '"${port}"':6443 > /dev/null 2>&1 &' + # Set up port forwarding to the Kubernetes API server for a 40 second timeout + bash -c 'timeout 150s kubectl port-forward service/kubernetes-'"${test_name}"' -n tenant-test '"${port}"':6443 > /dev/null 2>&1 &' # Verify the Kubernetes version matches what we expect (retry for up to 20 seconds) timeout 20 sh -ec 'until kubectl --kubeconfig tenantkubeconfig version 2>/dev/null | grep -Fq "Server Version: ${k8s_version}"; do sleep 5; done' + # Wait for the nodes to be ready (timeout after 2 minutes) + timeout 2m bash -c ' + until [ "$(kubectl --kubeconfig tenantkubeconfig get nodes -o jsonpath="{.items[*].metadata.name}" | wc -w)" -eq 2 ]; do + sleep 3 + done + ' + # Verify the nodes are ready + kubectl --kubeconfig tenantkubeconfig get nodes -o wide + + # Verify the kubelet version matches what we expect + versions=$(kubectl --kubeconfig tenantkubeconfig get nodes -o jsonpath='{.items[*].status.nodeInfo.kubeletVersion}') + node_ok=true + for v in $versions; do + if [[ ! "$v" =~ ^"${k8s_version}"[^$]+ ]]; then + node_ok=false + fi + done + + if ! $node_ok; then + echo "Kubelet versions did not match expected ${k8s_version}" >&2 + exit 1 + fi + # Wait for all machine deployment replicas to be ready (timeout after 10 minutes) kubectl wait machinedeployment kubernetes-${test_name}-md0 -n tenant-test --timeout=10m --for=jsonpath='{.status.v1beta2.readyReplicas}'=2 + # Wait for all required HelmReleases to be ready (timeout after 1 minute) + kubectl wait hr kubernetes-${test_name}-cilium -n tenant-test --timeout=1m --for=condition=ready + kubectl wait hr kubernetes-${test_name}-coredns -n tenant-test --timeout=1m --for=condition=ready + kubectl wait hr kubernetes-${test_name}-csi -n tenant-test --timeout=1m --for=condition=ready + kubectl wait hr kubernetes-${test_name}-ingress-nginx -n tenant-test --timeout=1m --for=condition=ready + kubectl wait hr kubernetes-${test_name}-vsnap-crd -n tenant-test --timeout=1m --for=condition=ready + # Clean up by deleting the Kubernetes resource kubectl -n tenant-test delete kuberneteses.apps.cozystack.io $test_name diff --git a/packages/apps/kubernetes/Makefile b/packages/apps/kubernetes/Makefile index b40d8b36..799a19bc 100644 --- a/packages/apps/kubernetes/Makefile +++ b/packages/apps/kubernetes/Makefile @@ -1,4 +1,4 @@ -KUBERNETES_VERSION = v1.32 +KUBERNETES_VERSION = v1.33 KUBERNETES_PKG_TAG = $(shell awk '$$1 == "version:" {print $$2}' Chart.yaml) include ../../../scripts/common-envs.mk From 2383bc9f136958a2f402ea892f1676b5fe889ea1 Mon Sep 17 00:00:00 2001 From: IvanHunters Date: Fri, 3 Oct 2025 09:30:58 +0300 Subject: [PATCH 2/6] feat/impruvement-kubernetes-tests Signed-off-by: IvanHunters --- hack/e2e-apps/run-kubernetes.sh | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/hack/e2e-apps/run-kubernetes.sh b/hack/e2e-apps/run-kubernetes.sh index fe783d5c..6796a497 100644 --- a/hack/e2e-apps/run-kubernetes.sh +++ b/hack/e2e-apps/run-kubernetes.sh @@ -104,11 +104,17 @@ EOF versions=$(kubectl --kubeconfig tenantkubeconfig get nodes -o jsonpath='{.items[*].status.nodeInfo.kubeletVersion}') node_ok=true for v in $versions; do - if [[ ! "$v" =~ ^"${k8s_version}"[^$]+ ]]; then - node_ok=false - fi + case "$v" in + "${k8s_version}" | "${k8s_version}".* | "${k8s_version}"-*) + ;; + *) + node_ok=false + break + ;; + esac done + if ! $node_ok; then echo "Kubelet versions did not match expected ${k8s_version}" >&2 exit 1 @@ -117,12 +123,9 @@ EOF # Wait for all machine deployment replicas to be ready (timeout after 10 minutes) kubectl wait machinedeployment kubernetes-${test_name}-md0 -n tenant-test --timeout=10m --for=jsonpath='{.status.v1beta2.readyReplicas}'=2 - # Wait for all required HelmReleases to be ready (timeout after 1 minute) - kubectl wait hr kubernetes-${test_name}-cilium -n tenant-test --timeout=1m --for=condition=ready - kubectl wait hr kubernetes-${test_name}-coredns -n tenant-test --timeout=1m --for=condition=ready - kubectl wait hr kubernetes-${test_name}-csi -n tenant-test --timeout=1m --for=condition=ready - kubectl wait hr kubernetes-${test_name}-ingress-nginx -n tenant-test --timeout=1m --for=condition=ready - kubectl wait hr kubernetes-${test_name}-vsnap-crd -n tenant-test --timeout=1m --for=condition=ready + for component in cilium coredns csi ingress-nginx vsnap-crd; do + kubectl wait hr kubernetes-${test_name}-${component} -n tenant-test --timeout=1m --for=condition=ready + done # Clean up by deleting the Kubernetes resource kubectl -n tenant-test delete kuberneteses.apps.cozystack.io $test_name From a8562f03d1ba53cc28a48445dcb3cf478a9c0b4d Mon Sep 17 00:00:00 2001 From: IvanHunters Date: Fri, 3 Oct 2025 10:25:34 +0300 Subject: [PATCH 3/6] feat/impruvement-kubernetes-tests Signed-off-by: IvanHunters --- hack/e2e-apps/run-kubernetes.sh | 34 +++++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/hack/e2e-apps/run-kubernetes.sh b/hack/e2e-apps/run-kubernetes.sh index 6796a497..51ca6512 100644 --- a/hack/e2e-apps/run-kubernetes.sh +++ b/hack/e2e-apps/run-kubernetes.sh @@ -87,7 +87,7 @@ EOF # Set up port forwarding to the Kubernetes API server for a 40 second timeout - bash -c 'timeout 150s kubectl port-forward service/kubernetes-'"${test_name}"' -n tenant-test '"${port}"':6443 > /dev/null 2>&1 &' + bash -c 'timeout 200s kubectl port-forward service/kubernetes-'"${test_name}"' -n tenant-test '"${port}"':6443 > /dev/null 2>&1 &' # Verify the Kubernetes version matches what we expect (retry for up to 20 seconds) timeout 20 sh -ec 'until kubectl --kubeconfig tenantkubeconfig version 2>/dev/null | grep -Fq "Server Version: ${k8s_version}"; do sleep 5; done' @@ -103,21 +103,39 @@ EOF # Verify the kubelet version matches what we expect versions=$(kubectl --kubeconfig tenantkubeconfig get nodes -o jsonpath='{.items[*].status.nodeInfo.kubeletVersion}') node_ok=true + + if [ "$k8s_version" = "v1.32" ]; then + echo "⚠️ TODO: Temporary stub — allowing nodes with v1.33 while k8s_version is v1.32" + fi + for v in $versions; do - case "$v" in - "${k8s_version}" | "${k8s_version}".* | "${k8s_version}"-*) + case "$k8s_version" in + v1.32) + case "$v" in + v1.32 | v1.32.* | v1.32-* | v1.33 | v1.33.* | v1.33-*) + ;; + *) + node_ok=false + break + ;; + esac ;; *) - node_ok=false - break + case "$v" in + "${k8s_version}" | "${k8s_version}".* | "${k8s_version}"-*) + ;; + *) + node_ok=false + break + ;; + esac ;; esac done - if ! $node_ok; then - echo "Kubelet versions did not match expected ${k8s_version}" >&2 - exit 1 + echo "Kubelet versions did not match expected ${k8s_version}" >&2 + exit 1 fi # Wait for all machine deployment replicas to be ready (timeout after 10 minutes) From 6937b8e2b605509532477b278429af7b38e44214 Mon Sep 17 00:00:00 2001 From: IvanHunters Date: Fri, 3 Oct 2025 10:33:28 +0300 Subject: [PATCH 4/6] feat/impruvement-kubernetes-tests Signed-off-by: IvanHunters --- hack/e2e-apps/run-kubernetes.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/hack/e2e-apps/run-kubernetes.sh b/hack/e2e-apps/run-kubernetes.sh index 51ca6512..97286ce1 100644 --- a/hack/e2e-apps/run-kubernetes.sh +++ b/hack/e2e-apps/run-kubernetes.sh @@ -98,6 +98,7 @@ EOF done ' # Verify the nodes are ready + kubectl --kubeconfig tenantkubeconfig wait node --all --timeout=2m --for=condition=Ready kubectl --kubeconfig tenantkubeconfig get nodes -o wide # Verify the kubelet version matches what we expect From f2cd585b450e1bdc65dbe615ebd98e9cceaecc84 Mon Sep 17 00:00:00 2001 From: IvanHunters Date: Fri, 3 Oct 2025 10:42:28 +0300 Subject: [PATCH 5/6] feat/impruvement-kubernetes-tests Signed-off-by: IvanHunters --- hack/e2e-apps/run-kubernetes.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hack/e2e-apps/run-kubernetes.sh b/hack/e2e-apps/run-kubernetes.sh index 97286ce1..4fb0f11b 100644 --- a/hack/e2e-apps/run-kubernetes.sh +++ b/hack/e2e-apps/run-kubernetes.sh @@ -86,7 +86,7 @@ EOF yq -i ".clusters[0].cluster.server = \"https://localhost:${port}\"" tenantkubeconfig - # Set up port forwarding to the Kubernetes API server for a 40 second timeout + # Set up port forwarding to the Kubernetes API server for a 200 second timeout bash -c 'timeout 200s kubectl port-forward service/kubernetes-'"${test_name}"' -n tenant-test '"${port}"':6443 > /dev/null 2>&1 &' # Verify the Kubernetes version matches what we expect (retry for up to 20 seconds) timeout 20 sh -ec 'until kubectl --kubeconfig tenantkubeconfig version 2>/dev/null | grep -Fq "Server Version: ${k8s_version}"; do sleep 5; done' From 012906cd591e41d2e90d459c8c167597a9829756 Mon Sep 17 00:00:00 2001 From: IvanHunters Date: Fri, 3 Oct 2025 10:54:09 +0300 Subject: [PATCH 6/6] feat/impruvement-kubernetes-tests Signed-off-by: IvanHunters --- hack/e2e-apps/run-kubernetes.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hack/e2e-apps/run-kubernetes.sh b/hack/e2e-apps/run-kubernetes.sh index 4fb0f11b..7c7f347a 100644 --- a/hack/e2e-apps/run-kubernetes.sh +++ b/hack/e2e-apps/run-kubernetes.sh @@ -105,13 +105,13 @@ EOF versions=$(kubectl --kubeconfig tenantkubeconfig get nodes -o jsonpath='{.items[*].status.nodeInfo.kubeletVersion}') node_ok=true - if [ "$k8s_version" = "v1.32" ]; then + if [[ "$k8s_version" == v1.32* ]]; then echo "⚠️ TODO: Temporary stub — allowing nodes with v1.33 while k8s_version is v1.32" fi for v in $versions; do case "$k8s_version" in - v1.32) + v1.32|v1.32.*) case "$v" in v1.32 | v1.32.* | v1.32-* | v1.33 | v1.33.* | v1.33-*) ;;