Files
template-web-backend-python/manifests/addonclaim.yaml
iilc 13b9fae61c
Some checks failed
__APP_NAME__ — build & deploy / Calidad + build + push (push) Failing after 14s
__APP_NAME__ — build & deploy / Helm upgrade --install (push) Has been skipped
chart 0.3.0: AddonClaim FUERA del chart Helm (ADR-066 del IDP)
Bug en chart 0.2.x: AddonClaim era Helm hook pre-install,pre-upgrade
weight -10 SIN hook-delete-policy. El default Helm 3 es
before-hook-creation → borra el claim en cada upgrade → finalizer
cleanup-logical rotaba credenciales + atoraba release en pending-upgrade.

Cambios:
- helm/APP_NAME/templates/addonclaim.yaml eliminado.
- manifests/addonclaim.yaml creado con placeholders sed.
- scripts/pre-helm-detach.sh idempotente para migracion v1.0.0 → 1.1.0.
- .gitea/workflows/APP_NAME-build.yaml: 2 nuevos steps detach + apply
  AddonClaim entre kubeconfig y helm upgrade.
- Chart.yaml bump 0.2.0 → 0.3.0.
- README reescrito (3 pasos workflow + tabla hooks sin AddonClaim +
  seccion Por que FUERA del chart + opt-out actualizado).
- Comentarios stale del AddonClaim como hook -10 limpiados en
  networkpolicy.yaml, role-db-secret-reader.yaml, job-alembic-upgrade.yaml.

ADR-066 del IDP documenta la decision arquitectural completa.
2026-05-25 14:28:17 -05:00

35 lines
1.4 KiB
YAML

# AddonClaim — vive FUERA del chart Helm (ADR-066).
#
# El workflow del tenant sustituye los placeholders con `sed` y aplica con
# `kubectl apply -f -` ANTES de `helm upgrade --install`. helm nunca lo
# trackea — al `helm uninstall` no lo borra; al `helm upgrade --install`
# repetido no lo toca. Idempotente.
#
# Lifecycle gobernado por addon-provisioner (CRD idp.coralware.cloud/v1alpha1):
# - reconcilia cada RECONCILE_INTERVAL (default 300s) por TenantProfile.
# - crea BD logica + user + GRANT via Job DDL efimero en cluster tenant.
# - publica Secret `${RELEASE_NAME}-db-creds` en ns `apps`.
# - agrega finalizer `addon-provisioner.idp.coralware.cloud/cleanup-logical`.
#
# Cleanup explicito post `helm uninstall`:
# kubectl delete addonclaim ${RELEASE_NAME}-db -n apps
# (con deletionPolicy: Retain — default — preserva la BD; Event
# OrphanLogicalDatabase. Cambiar a Delete previo para DROP DATABASE.)
apiVersion: idp.coralware.cloud/v1alpha1
kind: AddonClaim
metadata:
name: ${RELEASE_NAME}-db
namespace: apps
labels:
app.kubernetes.io/name: ${RELEASE_NAME}
app.kubernetes.io/part-of: ${RELEASE_NAME}
idp.coralware.cloud/golden-path: web-backend
idp.coralware.cloud/golden-path-lang: python
spec:
addonType: mariadb
databaseName: ${DATABASE_NAME}
user:
permissions: rw
secretName: ${RELEASE_NAME}-db-creds
deletionPolicy: Retain