fix(chart): InitContainer curl+REST API en lugar de bitnami/kubectl:1.30
bitnami retiro los tags semanticos minor (1.30/1.29/etc.) de Docker Hub 2026-05; solo quedan latest + digests. El InitContainer fallaba con ImagePullBackOff en el smoke E2E DO (run 1511/1512 del tenant 91c93c9c060a48febb7874c87c1ce993). Cambio: - image: bitnami/kubectl:1.30 -> curlimages/curl:8.20.0 (Docker Official, tag estable). - comando: kubectl get secret -> curl REST API kubernetes.default.svc con SA token + CA cert montados en /var/run/secrets/kubernetes.io/serviceaccount. - Misma logica: 48 iteraciones x 5s = 240s busy-wait. - El Role/RoleBinding (role-db-secret-reader.yaml) ya da el permiso get secrets al SA — sin cambios RBAC necesarios. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -39,7 +39,10 @@ spec:
|
|||||||
runAsUser: 1001
|
runAsUser: 1001
|
||||||
initContainers:
|
initContainers:
|
||||||
- name: wait-for-secret
|
- name: wait-for-secret
|
||||||
image: bitnami/kubectl:1.30
|
# curl + REST API K8s con SA token. Evita dependencia de un binario
|
||||||
|
# kubectl con tags que cambian (bitnami/kubectl retiro los tags
|
||||||
|
# semanticos minor 2026-05). curlimages/curl es Docker Official.
|
||||||
|
image: curlimages/curl:8.20.0
|
||||||
command:
|
command:
|
||||||
- sh
|
- sh
|
||||||
- -c
|
- -c
|
||||||
@@ -48,13 +51,19 @@ spec:
|
|||||||
# Espera hasta que addon-provisioner publique el Secret tras
|
# Espera hasta que addon-provisioner publique el Secret tras
|
||||||
# reconciliar el AddonClaim (hook weight -10). 48 x 5s = 240s.
|
# reconciliar el AddonClaim (hook weight -10). 48 x 5s = 240s.
|
||||||
SECRET="{{ .Values.database.secretName }}"
|
SECRET="{{ .Values.database.secretName }}"
|
||||||
|
TOKEN=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)
|
||||||
|
CACERT=/var/run/secrets/kubernetes.io/serviceaccount/ca.crt
|
||||||
i=1
|
i=1
|
||||||
while [ "$i" -le 48 ]; do
|
while [ "$i" -le 48 ]; do
|
||||||
if kubectl get secret "$SECRET" -n "$NAMESPACE" >/dev/null 2>&1; then
|
HTTP=$(curl -s -o /dev/null -w '%{http_code}' \
|
||||||
|
--cacert "$CACERT" \
|
||||||
|
-H "Authorization: Bearer $TOKEN" \
|
||||||
|
"https://kubernetes.default.svc/api/v1/namespaces/$NAMESPACE/secrets/$SECRET")
|
||||||
|
if [ "$HTTP" = "200" ]; then
|
||||||
echo "Secret $SECRET encontrado en intento $i"
|
echo "Secret $SECRET encontrado en intento $i"
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
echo "[$i/48] Secret $SECRET aun no publicado, esperando 5s..."
|
echo "[$i/48] Secret $SECRET aun no publicado (HTTP=$HTTP), esperando 5s..."
|
||||||
sleep 5
|
sleep 5
|
||||||
i=$((i + 1))
|
i=$((i + 1))
|
||||||
done
|
done
|
||||||
|
|||||||
Reference in New Issue
Block a user