sync: GOLDEN-PATH-CHART-HOOK-ORDER + ADDON-PROVISIONER-IMPL — desde coralware/IDP@9f03643
Some checks failed
__APP_NAME__ — build & deploy / Calidad + build + push (push) Failing after 27s
__APP_NAME__ — build & deploy / Helm upgrade --install (push) Has been skipped

Sincroniza desde el monorepo IDP la corrección del hook-order del ServiceAccount
(hook pre-install/pre-upgrade, weight -5) que destraba el helm install del
golden-path sin --no-hooks. Cierre del 4º gap del pipeline tenant hands-off:
el smoke E2E valida ahora la cadena completa (addon-provisioner materializa
MariaDB; AddonClaim publica DATABASE_URL en apps).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-05-22 16:56:36 -05:00
parent bd12f2d0f9
commit 1f2eb2f908
3 changed files with 53 additions and 7 deletions

View File

@@ -49,6 +49,30 @@ tenant, los placeholders en mayúsculas se sustituyen automáticamente.
---
## Orden de hooks Helm
El chart usa hooks `pre-install,pre-upgrade` con `hook-weight` para garantizar
el orden de creación. El `helm upgrade --install` funciona **sin `--no-hooks`**:
| Recurso | Template | `hook-weight` | Motivo |
|---------|----------|---------------|--------|
| `ServiceAccount` | `serviceaccount.yaml` | `-5` | Lo referencia el pod del Job Alembic — debe existir antes |
| `Job` Alembic | `job-alembic-upgrade.yaml` | `0` | Corre `alembic upgrade head` antes de rolar el Deployment |
El `ServiceAccount` se materializa como hook (no en la fase principal de Helm)
porque el Job Alembic, que también es hook, declara `serviceAccountName`. Si el
SA viviera en la fase principal se crearía **después** del Job → el pod del Job
nunca arrancaría (`serviceaccount not found`) → `helm --wait` haría timeout.
El SA-hook usa `hook-delete-policy: before-hook-creation` (no `hook-succeeded`):
el Deployment lo necesita vivo en runtime, así que solo se borra/recrea al
inicio del siguiente hook, manteniéndolo idempotente entre upgrades.
El `imagePullSecret` y el Secret `<APP_NAME>-db-creds` que referencia el Job los
provee la plataforma (stack-deployer / addon), no el chart.
---
## Endpoints obligatorios
| Path | Auth | Propósito |