From 7c918125e523d4f8d86fee67c00e0bb2c72e9ea0 Mon Sep 17 00:00:00 2001 From: IvanHunters Date: Mon, 14 Jul 2025 22:29:25 +0300 Subject: [PATCH] [kubernetes] add check for deployed Kubernetes server version using kubectl Signed-off-by: IvanHunters --- hack/e2e-apps/kubernetes-latest-version.bats | 103 +++++++++++++++++ .../e2e-apps/kubernetes-previous-version.bats | 104 ++++++++++++++++++ hack/e2e-apps/kubernetes.bats | 73 ------------ 3 files changed, 207 insertions(+), 73 deletions(-) create mode 100644 hack/e2e-apps/kubernetes-latest-version.bats create mode 100644 hack/e2e-apps/kubernetes-previous-version.bats delete mode 100644 hack/e2e-apps/kubernetes.bats diff --git a/hack/e2e-apps/kubernetes-latest-version.bats b/hack/e2e-apps/kubernetes-latest-version.bats new file mode 100644 index 00000000..4514af16 --- /dev/null +++ b/hack/e2e-apps/kubernetes-latest-version.bats @@ -0,0 +1,103 @@ +#!/usr/bin/env bats + +@test "Create a tenant Kubernetes control plane" { + LATEST_K8S_VERSION=$(yq 'keys | .[-1]' ../packages/apps/kubernetes/files/versions.yaml) + TEMPORAL_TENANT_PORT=59991 + + kubectl apply -f - < tenantkubeconfig + + # Update the kubeconfig to use localhost for the API server + yq -i ".clusters[0].cluster.server = \"https://localhost:${TEMPORAL_TENANT_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-latest -n tenant-test '"${TEMPORAL_TENANT_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 "Server Version: $LATEST_K8S_VERSION"; do sleep 5; done' + + # Wait for all machine deployment replicas to be ready (timeout after 10 minutes) + kubectl wait machinedeployment kubernetes-test-latest-md0 -n tenant-test --timeout=10m --for=jsonpath='{.status.v1beta2.readyReplicas}'=2 + + # Clean up by deleting the Kubernetes resource + kubectl -n tenant-test delete kuberneteses.apps.cozystack.io test-latest +} diff --git a/hack/e2e-apps/kubernetes-previous-version.bats b/hack/e2e-apps/kubernetes-previous-version.bats new file mode 100644 index 00000000..c5745d95 --- /dev/null +++ b/hack/e2e-apps/kubernetes-previous-version.bats @@ -0,0 +1,104 @@ +#!/usr/bin/env bats + +@test "Create a previous version tenant Kubernetes control plane" { + # Get latest version of k8s from gcr + PREVIOUS_K8S_VERSION=$(yq 'keys | .[-2]' ../packages/apps/kubernetes/files/versions.yaml) + TEMPORAL_TENANT_PORT=59992 + + kubectl apply -f - < tenantkubeconfig + + # Update the kubeconfig to use localhost for the API server + yq -i ".clusters[0].cluster.server = \"https://localhost:${TEMPORAL_TENANT_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-previous -n tenant-test '"${TEMPORAL_TENANT_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 "Server Version: $PREVIOUS_K8S_VERSION"; do sleep 5; done' + + # Wait for all machine deployment replicas to be ready (timeout after 10 minutes) + kubectl wait machinedeployment kubernetes-test-previous-md0 -n tenant-test --timeout=10m --for=jsonpath='{.status.v1beta2.readyReplicas}'=2 + + # Clean up by deleting the Kubernetes resource + kubectl -n tenant-test delete kuberneteses.apps.cozystack.io test-previous +} diff --git a/hack/e2e-apps/kubernetes.bats b/hack/e2e-apps/kubernetes.bats deleted file mode 100644 index adaf3660..00000000 --- a/hack/e2e-apps/kubernetes.bats +++ /dev/null @@ -1,73 +0,0 @@ -#!/usr/bin/env bats - -@test "Create a tenant Kubernetes control plane" { - kubectl apply -f - <