feat(molde): runtimes esperam o login no banco num initContainer, em vez de cair e entrar em backoff (P4.9) — canario no teste5

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
ATM Platform
2026-09-26 22:57:58 +00:00
parent 3fd92173d2
commit 22eebcaed7
6 changed files with 156 additions and 0 deletions
+26
View File
@@ -19,6 +19,32 @@ spec:
app: runtime-core
athleticmap.io/contexto: runtime-core
spec:
# Espera o LOGIN no banco do tenant funcionar antes de subir o runtime.
# O Argo aplica este Deployment ANTES de a etapa BANCO_CRIADO criar o papel
# e a linha no PgBouncer. Sem esta espera o runtime cai na subida, e o
# Kubernetes o religa com espera crescente (10 s, 20 s, 40 s, 80 s...):
# era isso que levava a etapa MIGRACOES_CONCLUIDAS a 4-5 min (P4.9).
# Aqui o laco e de 2 s e nao ha queda — o runtime sobe logo que o banco existe.
initContainers:
- name: espera-banco
image: docker.io/library/postgres:16
imagePullPolicy: Never
command: ["sh", "-c"]
args:
- |
n=0
until psql "host=pgbouncer.plataforma-prod.svc port=6432 dbname=athleticmap_{{TENANT}} user=r_{{TENANT}} connect_timeout=3" -Atc 'select 1' >/dev/null 2>&1; do
n=$((n+1)); [ $((n % 15)) -eq 0 ] && echo "ainda sem o banco do tenant ($((n*2)) s)"
sleep 2
done
echo "banco pronto"
env:
- name: PGPASSWORD
valueFrom:
secretKeyRef: { name: db-credentials, key: password }
resources:
requests: { cpu: 10m, memory: 16Mi }
limits: { cpu: 100m, memory: 64Mi }
containers:
- name: runtime-core
image: docker.io/library/runtime-core:1.3-vinculo-keycloak
@@ -19,6 +19,32 @@ spec:
app: runtime-operacao
athleticmap.io/contexto: runtime-operacao
spec:
# Espera o LOGIN no banco do tenant funcionar antes de subir o runtime.
# O Argo aplica este Deployment ANTES de a etapa BANCO_CRIADO criar o papel
# e a linha no PgBouncer. Sem esta espera o runtime cai na subida, e o
# Kubernetes o religa com espera crescente (10 s, 20 s, 40 s, 80 s...):
# era isso que levava a etapa MIGRACOES_CONCLUIDAS a 4-5 min (P4.9).
# Aqui o laco e de 2 s e nao ha queda — o runtime sobe logo que o banco existe.
initContainers:
- name: espera-banco
image: docker.io/library/postgres:16
imagePullPolicy: Never
command: ["sh", "-c"]
args:
- |
n=0
until psql "host=pgbouncer.plataforma-prod.svc port=6432 dbname=athleticmap_{{TENANT}} user=r_{{TENANT}} connect_timeout=3" -Atc 'select 1' >/dev/null 2>&1; do
n=$((n+1)); [ $((n % 15)) -eq 0 ] && echo "ainda sem o banco do tenant ($((n*2)) s)"
sleep 2
done
echo "banco pronto"
env:
- name: PGPASSWORD
valueFrom:
secretKeyRef: { name: db-credentials, key: password }
resources:
requests: { cpu: 10m, memory: 16Mi }
limits: { cpu: 100m, memory: 64Mi }
containers:
- name: runtime-operacao
image: docker.io/library/runtime-operacao:1.3-split-1.20
+26
View File
@@ -19,6 +19,32 @@ spec:
app: runtime-saude
athleticmap.io/contexto: runtime-saude
spec:
# Espera o LOGIN no banco do tenant funcionar antes de subir o runtime.
# O Argo aplica este Deployment ANTES de a etapa BANCO_CRIADO criar o papel
# e a linha no PgBouncer. Sem esta espera o runtime cai na subida, e o
# Kubernetes o religa com espera crescente (10 s, 20 s, 40 s, 80 s...):
# era isso que levava a etapa MIGRACOES_CONCLUIDAS a 4-5 min (P4.9).
# Aqui o laco e de 2 s e nao ha queda — o runtime sobe logo que o banco existe.
initContainers:
- name: espera-banco
image: docker.io/library/postgres:16
imagePullPolicy: Never
command: ["sh", "-c"]
args:
- |
n=0
until psql "host=pgbouncer.plataforma-prod.svc port=6432 dbname=athleticmap_{{TENANT}} user=r_{{TENANT}} connect_timeout=3" -Atc 'select 1' >/dev/null 2>&1; do
n=$((n+1)); [ $((n % 15)) -eq 0 ] && echo "ainda sem o banco do tenant ($((n*2)) s)"
sleep 2
done
echo "banco pronto"
env:
- name: PGPASSWORD
valueFrom:
secretKeyRef: { name: db-credentials, key: password }
resources:
requests: { cpu: 10m, memory: 16Mi }
limits: { cpu: 100m, memory: 64Mi }
containers:
- name: runtime-saude
image: docker.io/library/runtime-saude:1.2-demo