fix: wait for ESO readiness before secret-plane resources

This commit is contained in:
Codex
2026-06-28 06:20:15 +00:00
parent f21f74a383
commit 469f3e907f
+16 -7
View File
@@ -716,6 +716,7 @@ ns_out="$tmp/ns.out"; ns_err="$tmp/ns.err"
token_out="$tmp/token.out"; token_err="$tmp/token.err"
eso_out="$tmp/eso.out"; eso_err="$tmp/eso.err"
crd_out="$tmp/crd.out"; crd_err="$tmp/crd.err"
eso_wait_out="$tmp/eso-wait.out"; eso_wait_err="$tmp/eso-wait.err"
workload_out="$tmp/workload.out"; workload_err="$tmp/workload.err"
kubectl create namespace ${target.namespace} --dry-run=client -o yaml | kubectl apply --server-side --force-conflicts --field-manager=${fieldManager} -f - >"$ns_out" 2>"$ns_err"
ns_rc=$?
@@ -755,23 +756,30 @@ else
printf '%s\\n' 'skipped because ESO manifest apply failed' >"$crd_err"
fi
if [ "$crd_rc" -eq 0 ]; then
kubectl -n ${target.namespace} wait --for=condition=available --timeout=${secretPlane.validation.timeoutSeconds}s deployment/${secretPlane.eso.controllerDeploymentName} deployment/${secretPlane.eso.webhookDeploymentName} deployment/${secretPlane.eso.certControllerDeploymentName} >"$eso_wait_out" 2>"$eso_wait_err"
eso_wait_rc=$?
else
eso_wait_rc=1
printf '%s\\n' 'skipped because ESO CRDs are not established' >"$eso_wait_err"
fi
if [ "$eso_wait_rc" -eq 0 ]; then
kubectl apply --server-side --force-conflicts --validate=false --field-manager=${fieldManager} -f "$workload" >"$workload_out" 2>"$workload_err"
workload_rc=$?
else
workload_rc=1
printf '%s\\n' 'skipped because ESO CRDs are not established' >"$workload_err"
printf '%s\\n' 'skipped because ESO deployments are not available' >"$workload_err"
fi
python3 - "$ns_rc" "$token_rc" "$eso_rc" "$crd_rc" "$workload_rc" "$token_action" "$ns_out" "$ns_err" "$token_out" "$token_err" "$eso_out" "$eso_err" "$crd_out" "$crd_err" "$workload_out" "$workload_err" <<'PY'
python3 - "$ns_rc" "$token_rc" "$eso_rc" "$crd_rc" "$eso_wait_rc" "$workload_rc" "$token_action" "$ns_out" "$ns_err" "$token_out" "$token_err" "$eso_out" "$eso_err" "$crd_out" "$crd_err" "$eso_wait_out" "$eso_wait_err" "$workload_out" "$workload_err" <<'PY'
import json, sys
def text(path, limit=1200):
try:
return open(path, encoding="utf-8", errors="replace").read()[-limit:]
except FileNotFoundError:
return ""
ns_rc, token_rc, eso_rc, crd_rc, workload_rc = [int(value) for value in sys.argv[1:6]]
paths = sys.argv[7:]
ns_rc, token_rc, eso_rc, crd_rc, eso_wait_rc, workload_rc = [int(value) for value in sys.argv[1:7]]
paths = sys.argv[8:]
payload = {
"ok": ns_rc == 0 and token_rc == 0 and eso_rc == 0 and crd_rc == 0 and workload_rc == 0,
"ok": ns_rc == 0 and token_rc == 0 and eso_rc == 0 and crd_rc == 0 and eso_wait_rc == 0 and workload_rc == 0,
"target": "${target.id}",
"route": "${target.route}",
"namespace": "${target.namespace}",
@@ -779,7 +787,7 @@ payload = {
"secretMaterial": {
"name": "${secretPlane.vault.tokenSecretName}",
"key": "${secretPlane.vault.tokenSecretKey}",
"action": sys.argv[6],
"action": sys.argv[7],
"valuesPrinted": False,
},
"steps": {
@@ -787,7 +795,8 @@ payload = {
"tokenSecret": {"exitCode": token_rc, "stdoutTail": text(paths[2]), "stderrTail": text(paths[3]), "valuesPrinted": False},
"externalSecretsOperator": {"exitCode": eso_rc, "stdoutTail": text(paths[4]), "stderrTail": text(paths[5])},
"crdsEstablished": {"exitCode": crd_rc, "stdoutTail": text(paths[6]), "stderrTail": text(paths[7])},
"secretPlaneWorkload": {"exitCode": workload_rc, "stdoutTail": text(paths[8]), "stderrTail": text(paths[9])},
"esoDeploymentsReady": {"exitCode": eso_wait_rc, "stdoutTail": text(paths[8]), "stderrTail": text(paths[9])},
"secretPlaneWorkload": {"exitCode": workload_rc, "stdoutTail": text(paths[10]), "stderrTail": text(paths[11])},
},
"next": {
"status": "bun scripts/cli.ts platform-infra secret-plane status --target ${target.id}",