From 22eebcaed7801c33d182a06ce33a1dc0d9c7eb40 Mon Sep 17 00:00:00 2001 From: ATM Platform Date: Sat, 26 Sep 2026 22:57:58 +0000 Subject: [PATCH] =?UTF-8?q?feat(molde):=20runtimes=20esperam=20o=20login?= =?UTF-8?q?=20no=20banco=20num=20initContainer,=20em=20vez=20de=20cair=20e?= =?UTF-8?q?=20entrar=20em=20backoff=20(P4.9)=20=E2=80=94=20canario=20no=20?= =?UTF-8?q?teste5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- moldes/consolidado/70-runtime-core.yaml | 26 +++++++++++++++++++++ moldes/consolidado/71-runtime-operacao.yaml | 26 +++++++++++++++++++++ moldes/consolidado/72-runtime-saude.yaml | 26 +++++++++++++++++++++ tenants/teste5/70-runtime-core.yaml | 26 +++++++++++++++++++++ tenants/teste5/71-runtime-operacao.yaml | 26 +++++++++++++++++++++ tenants/teste5/72-runtime-saude.yaml | 26 +++++++++++++++++++++ 6 files changed, 156 insertions(+) diff --git a/moldes/consolidado/70-runtime-core.yaml b/moldes/consolidado/70-runtime-core.yaml index dbeb506..59f4004 100644 --- a/moldes/consolidado/70-runtime-core.yaml +++ b/moldes/consolidado/70-runtime-core.yaml @@ -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 diff --git a/moldes/consolidado/71-runtime-operacao.yaml b/moldes/consolidado/71-runtime-operacao.yaml index cf6bbc6..0c224c0 100644 --- a/moldes/consolidado/71-runtime-operacao.yaml +++ b/moldes/consolidado/71-runtime-operacao.yaml @@ -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 diff --git a/moldes/consolidado/72-runtime-saude.yaml b/moldes/consolidado/72-runtime-saude.yaml index 51acc25..0f3cbbd 100644 --- a/moldes/consolidado/72-runtime-saude.yaml +++ b/moldes/consolidado/72-runtime-saude.yaml @@ -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 diff --git a/tenants/teste5/70-runtime-core.yaml b/tenants/teste5/70-runtime-core.yaml index 9db49f7..5f725fd 100644 --- a/tenants/teste5/70-runtime-core.yaml +++ b/tenants/teste5/70-runtime-core.yaml @@ -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_teste5 user=r_teste5 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 diff --git a/tenants/teste5/71-runtime-operacao.yaml b/tenants/teste5/71-runtime-operacao.yaml index b7fd5e1..eb92639 100644 --- a/tenants/teste5/71-runtime-operacao.yaml +++ b/tenants/teste5/71-runtime-operacao.yaml @@ -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_teste5 user=r_teste5 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.5-filas-do-asaas diff --git a/tenants/teste5/72-runtime-saude.yaml b/tenants/teste5/72-runtime-saude.yaml index 95068e2..aff3318 100644 --- a/tenants/teste5/72-runtime-saude.yaml +++ b/tenants/teste5/72-runtime-saude.yaml @@ -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_teste5 user=r_teste5 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