diff --git a/chart/templates/namespace.yaml b/chart/templates/namespace.yaml index c7a48622..5e66dacb 100644 --- a/chart/templates/namespace.yaml +++ b/chart/templates/namespace.yaml @@ -1,6 +1,18 @@ -{{- if and (ne .Release.Namespace "kubeflex-system") (not (lookup "v1" "Namespace" "" "kubeflex-system")) }} +{{ define "NS" -}} apiVersion: v1 kind: Namespace metadata: name: kubeflex-system -{{- end }} +{{ end -}} +{{ if ne .Release.Namespace "kubeflex-system" -}} + {{ with $kfns := (lookup "v1" "Namespace" "" "kubeflex-system") -}} + {{ if $kfns.metadata.annotations -}} + {{ if eq $.Release.Name + (index $kfns.metadata.annotations "meta.helm.sh/release-name") -}} + {{ template "NS" -}} + {{ end -}} + {{ end -}} + {{ else -}} + {{ template "NS" -}} + {{ end -}} +{{end -}} diff --git a/test/e2e/run.sh b/test/e2e/run.sh index 4be404c2..47252bca 100755 --- a/test/e2e/run.sh +++ b/test/e2e/run.sh @@ -34,6 +34,7 @@ SRC_DIR="$(cd $(dirname "${BASH_SOURCE[0]}") && pwd)" ${SRC_DIR}/cleanup.sh ${SRC_DIR}/setup-kubeflex.sh ${SRC_DIR}/manage-type-k8s.sh +${SRC_DIR}/test-controller-image-update.sh ${SRC_DIR}/manage-type-vcluster.sh ${SRC_DIR}/manage-type-external.sh ${SRC_DIR}/manage-ctx.sh diff --git a/test/e2e/test-controller-image-update.sh b/test/e2e/test-controller-image-update.sh old mode 100644 new mode 100755 index 5af688f9..70f2d894 --- a/test/e2e/test-controller-image-update.sh +++ b/test/e2e/test-controller-image-update.sh @@ -69,8 +69,15 @@ if ! kubectl rollout status deployment/kubeflex-controller-manager -n kubeflex-s exit 1 fi +# Wait for all the old pods to go away +echo "7. Wait for old Pods to go away" +while ! kubectl get pods -n kubeflex-system -l control-plane=controller-manager | wc -l | grep -qw 2; do + echo Waiting for just one kubeflex-controller-manager Pod + sleep 10 +done + # Get the new image -echo "7. Getting new controller manager image..." +echo "8. Getting new controller manager image..." NEW_IMAGE=$(kubectl get deployment kubeflex-controller-manager -n kubeflex-system -o jsonpath='{.spec.template.spec.containers[?(@.name=="manager")].image}') if [ -z "$NEW_IMAGE" ]; then echo "ERROR: Could not get new image from deployment" @@ -79,27 +86,21 @@ fi echo "New image: $NEW_IMAGE" # Get new pod names -echo "8. Getting new pod names..." +echo "9. Getting new pod names..." NEW_PODS=$(kubectl get pods -n kubeflex-system -l control-plane=controller-manager -o jsonpath='{.items[*].metadata.name}' | tr ' ' '\n' | sort | tr '\n' ' ') echo "New pods (sorted): $NEW_PODS" -# Wait for deployment rollout to complete and all pods to be ready -echo "9. Waiting for deployment rollout to complete..." -if ! kubectl rollout status deployment/kubeflex-controller-manager -n kubeflex-system --timeout=300s; then - echo "ERROR: Deployment rollout failed or timed out" - echo "Deployment status:" - kubectl describe deployment kubeflex-controller-manager -n kubeflex-system - exit 1 -fi - # Wait for all pods to be ready echo "10. Waiting for all pods to be ready..." if ! kubectl wait --for=condition=Ready pods -l control-plane=controller-manager -n kubeflex-system --timeout=120s; then echo "ERROR: Not all pods are ready within timeout" - echo "Pod status:" - kubectl get pods -n kubeflex-system -l control-plane=controller-manager - echo "Pod events:" - kubectl describe pods -n kubeflex-system -l control-plane=controller-manager + echo "Pods:" + kubectl get pods -n kubeflex-system -l control-plane=controller-manager --no-headers=true | while read ns name rest; do + echo + kubectl get pod -n $ns $name -o yaml + echo + kubectl events --namespace $ns --for pod/$name + done exit 1 fi