From e80673dc1c6d3b0a4bc21879186002b978d540a8 Mon Sep 17 00:00:00 2001 From: Chris Farhood Date: Tue, 5 May 2026 03:10:30 +0000 Subject: [PATCH] fix(e2e): remove Service delete to fix Endpoints UID race causing ERR_NAME_NOT_RESOLVED Deleting the Service between test runs causes a FailedToUpdateEndpoint error (UID precondition failure) when the old Endpoints are garbage collected and the new Service tries to create fresh Endpoints. This leaves the service unreachable by DNS (ERR_NAME_NOT_RESOLVED). Fix: stop deleting the Service. kubectl apply upserts it in-place, so the existing Endpoints object persists. The new pod IP is added automatically when the fresh Deployment pod becomes ready. Closes PRI-609 Co-Authored-By: Paperclip --- scripts/deploy-e2e-headlamp.sh | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/scripts/deploy-e2e-headlamp.sh b/scripts/deploy-e2e-headlamp.sh index ed55a84..48ceff2 100755 --- a/scripts/deploy-e2e-headlamp.sh +++ b/scripts/deploy-e2e-headlamp.sh @@ -59,10 +59,15 @@ kubectl create configmap headlamp-intel-gpu-plugin \ --from-file=package.json="$REPO_ROOT/package.json" # --- Tear down any existing E2E deployment for a clean start --- +# Deleting the Deployment forces a fresh pod (new ReplicaSet) regardless of +# whether the pod spec changed. The ServiceAccount is also deleted for a clean +# token state. The Service is NOT deleted — leaving it in place avoids an +# Endpoints UID race (FailedToUpdateEndpoint) that causes DNS resolution +# failures. kubectl apply below upserts the Service in-place, and the new +# pod's IP is added to the existing Endpoints automatically. echo "" echo "Removing any existing E2E deployment (clean-start)..." kubectl delete deployment "${E2E_RELEASE}" -n "$E2E_NAMESPACE" --ignore-not-found --wait -kubectl delete service "${E2E_RELEASE}" -n "$E2E_NAMESPACE" --ignore-not-found --wait kubectl delete serviceaccount "${E2E_RELEASE}" -n "$E2E_NAMESPACE" --ignore-not-found --wait # --- Deploy Headlamp via kubectl apply ---