feat(tenant): os dois clientes pagos recebem o BFF, a cota nova e as imagens
Renderizado do molde consolidado. Sem o BFF a SPA abria vazia: /bff devolvia 502 e e ele quem a SPA chama para quase tudo.
This commit is contained in:
@@ -51,11 +51,20 @@ metadata:
|
|||||||
namespace: escolinha-de-teste-2-prod
|
namespace: escolinha-de-teste-2-prod
|
||||||
spec:
|
spec:
|
||||||
hard:
|
hard:
|
||||||
requests.cpu: "1"
|
# SUBIU em 2026-09-24 para caber o BFF, o quinto Deployment.
|
||||||
requests.memory: 1.5Gi
|
#
|
||||||
limits.cpu: "4"
|
# Nao e folga generosa: com quatro Deployments o tenant ja usava 1232Mi dos
|
||||||
limits.memory: 2.5Gi
|
# 1536Mi, e o BFF pede 256Mi. Caberia no limite antigo em repouso, e
|
||||||
pods: "8"
|
# estouraria no primeiro rollout — que e quando um Deployment sobe o pod
|
||||||
|
# novo antes de derrubar o velho. Foi essa conta que derrubou o
|
||||||
|
# provisionamento do `plataforma` em 17/09, e o registro dela esta ali.
|
||||||
|
#
|
||||||
|
# `pods` vai a 10 pelo mesmo motivo: cinco Deployments, um surge cada.
|
||||||
|
requests.cpu: "1.5"
|
||||||
|
requests.memory: 2Gi
|
||||||
|
limits.cpu: "5"
|
||||||
|
limits.memory: 3.5Gi
|
||||||
|
pods: "10"
|
||||||
---
|
---
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
# A politica de rede.
|
# A politica de rede.
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ spec:
|
|||||||
spec:
|
spec:
|
||||||
containers:
|
containers:
|
||||||
- name: runtime-core
|
- name: runtime-core
|
||||||
image: docker.io/library/runtime-core:1.1-demo
|
image: docker.io/library/runtime-core:1.2-auditoria
|
||||||
# `Never`: a imagem tem de estar no containerd do no ANTES do deploy.
|
# `Never`: a imagem tem de estar no containerd do no ANTES do deploy.
|
||||||
# "Presente no no" tambem nao e "atual" — conferir a TAG, e nao o nome.
|
# "Presente no no" tambem nao e "atual" — conferir a TAG, e nao o nome.
|
||||||
imagePullPolicy: Never
|
imagePullPolicy: Never
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ spec:
|
|||||||
spec:
|
spec:
|
||||||
containers:
|
containers:
|
||||||
- name: runtime-operacao
|
- name: runtime-operacao
|
||||||
image: docker.io/library/runtime-operacao:1.1-demo
|
image: docker.io/library/runtime-operacao:1.2-auditoria
|
||||||
# `Never`: a imagem tem de estar no containerd do no ANTES do deploy.
|
# `Never`: a imagem tem de estar no containerd do no ANTES do deploy.
|
||||||
# "Presente no no" tambem nao e "atual" — conferir a TAG, e nao o nome.
|
# "Presente no no" tambem nao e "atual" — conferir a TAG, e nao o nome.
|
||||||
imagePullPolicy: Never
|
imagePullPolicy: Never
|
||||||
|
|||||||
@@ -0,0 +1,89 @@
|
|||||||
|
# =============================================================================
|
||||||
|
# O BFF do tenant.
|
||||||
|
#
|
||||||
|
# POR QUE ELE EXISTE AQUI, E NAO COMO BIBLIOTECA
|
||||||
|
#
|
||||||
|
# A SPA chama o BFF para quase tudo. Sem ele, `/bff` devolve 502 e o sistema
|
||||||
|
# abre vazio — foi o que aconteceu nos dois primeiros tenants provisionados, em
|
||||||
|
# 2026-09-24. As tres saidas estavam registradas desde 2026-09-18; o dono
|
||||||
|
# escolheu o quinto Deployment, que e o unico que entrega sem refatorar um
|
||||||
|
# componente que ja roda em producao em dois lugares.
|
||||||
|
#
|
||||||
|
# O PRECO ESTA NA COTA, e nao aqui: cinco Deployments precisam de mais que oito
|
||||||
|
# pods durante um rollout. Ver 00-namespace-quota-netpol.yaml.
|
||||||
|
#
|
||||||
|
# AS URLS APONTAM PARA OS RUNTIMES, e nao para os treze servicos: e esta a
|
||||||
|
# diferenca entre este molde e o `escolinha`. O mapa e o mesmo dos poms:
|
||||||
|
# core configuracao, cadastro, organizacao, documentos, agenda
|
||||||
|
# operacao planejamento, campeonato, administrativo, financeiro
|
||||||
|
# saude saude, nutricao, assistencia-social, pedagogico
|
||||||
|
# =============================================================================
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: servico-bff
|
||||||
|
namespace: escolinha-de-teste-2-prod
|
||||||
|
labels:
|
||||||
|
app: servico-bff
|
||||||
|
athleticmap.io/contexto: bff
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector: { matchLabels: { app: servico-bff } }
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: servico-bff
|
||||||
|
athleticmap.io/contexto: bff
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: servico-bff
|
||||||
|
image: docker.io/library/servico-bff:2.0-exportacao
|
||||||
|
imagePullPolicy: Never
|
||||||
|
ports: [{ containerPort: 8083 }]
|
||||||
|
env:
|
||||||
|
- { name: ATM_CONFIG_URL, value: "http://runtime-core" }
|
||||||
|
- { name: ATM_CADASTRO_URL, value: "http://runtime-core" }
|
||||||
|
- { name: ATM_ORGANIZACAO_URL, value: "http://runtime-core" }
|
||||||
|
- { name: ATM_DOCUMENTOS_URL, value: "http://runtime-core" }
|
||||||
|
- { name: ATM_AGENDA_URL, value: "http://runtime-core" }
|
||||||
|
- { name: ATM_PLANEJAMENTO_URL, value: "http://runtime-operacao" }
|
||||||
|
- { name: ATM_CAMPEONATO_URL, value: "http://runtime-operacao" }
|
||||||
|
- { name: ATM_ADMINISTRATIVO_URL, value: "http://runtime-operacao" }
|
||||||
|
- { name: ATM_FINANCEIRO_URL, value: "http://runtime-operacao" }
|
||||||
|
- { name: ATM_SAUDE_URL, value: "http://runtime-saude" }
|
||||||
|
- { name: ATM_NUTRICAO_URL, value: "http://runtime-saude" }
|
||||||
|
- { name: ATM_ASSISTENCIA_SOCIAL_URL, value: "http://runtime-saude" }
|
||||||
|
- { name: ATM_PEDAGOGICO_URL, value: "http://runtime-saude" }
|
||||||
|
- { name: ATM_JWK_SET_URI, value: "http://keycloak.plataforma-prod.svc:8080/realms/athleticmap-7/protocol/openid-connect/certs" }
|
||||||
|
- { name: ATM_ISSUER, value: "https://auth.athleticmap.com/realms/athleticmap-7" }
|
||||||
|
- { name: ATM_TENANT, value: "escolinha-de-teste-2" }
|
||||||
|
- { name: ATM_PLANO, value: "bronze" }
|
||||||
|
# `optional` porque o molde ainda NAO cria este Secret. Sem ele o
|
||||||
|
# selo de consentimento simplesmente nao e emitido — o BFF sobe e
|
||||||
|
# funciona (ver SeloDeConsentimento, que trata segredo vazio). No dia
|
||||||
|
# em que o Secret existir, isto passa a valer sozinho.
|
||||||
|
- name: ATM_CONSENTIMENTO_SEGREDO
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef: { name: consentimento-selo, key: segredo, optional: true }
|
||||||
|
resources:
|
||||||
|
requests: { cpu: 50m, memory: 256Mi }
|
||||||
|
limits: { cpu: 500m, memory: 512Mi }
|
||||||
|
readinessProbe:
|
||||||
|
httpGet: { path: /bff/health, port: 8083 }
|
||||||
|
initialDelaySeconds: 20
|
||||||
|
periodSeconds: 10
|
||||||
|
failureThreshold: 30
|
||||||
|
livenessProbe:
|
||||||
|
httpGet: { path: /actuator/health/liveness, port: 8083 }
|
||||||
|
initialDelaySeconds: 50
|
||||||
|
periodSeconds: 20
|
||||||
|
failureThreshold: 6
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: servico-bff
|
||||||
|
namespace: escolinha-de-teste-2-prod
|
||||||
|
spec:
|
||||||
|
selector: { app: servico-bff }
|
||||||
|
ports: [{ port: 80, targetPort: 8083 }]
|
||||||
@@ -34,7 +34,7 @@ spec:
|
|||||||
spec:
|
spec:
|
||||||
containers:
|
containers:
|
||||||
- name: frontend-spa
|
- name: frontend-spa
|
||||||
image: docker.io/library/frontend-spa:2.65-csp
|
image: docker.io/library/frontend-spa:2.67-csp-script
|
||||||
imagePullPolicy: Never
|
imagePullPolicy: Never
|
||||||
ports: [{ containerPort: 80 }]
|
ports: [{ containerPort: 80 }]
|
||||||
env:
|
env:
|
||||||
|
|||||||
@@ -51,11 +51,20 @@ metadata:
|
|||||||
namespace: escolinha-de-teste-prod
|
namespace: escolinha-de-teste-prod
|
||||||
spec:
|
spec:
|
||||||
hard:
|
hard:
|
||||||
requests.cpu: "1"
|
# SUBIU em 2026-09-24 para caber o BFF, o quinto Deployment.
|
||||||
requests.memory: 1.5Gi
|
#
|
||||||
limits.cpu: "4"
|
# Nao e folga generosa: com quatro Deployments o tenant ja usava 1232Mi dos
|
||||||
limits.memory: 2.5Gi
|
# 1536Mi, e o BFF pede 256Mi. Caberia no limite antigo em repouso, e
|
||||||
pods: "8"
|
# estouraria no primeiro rollout — que e quando um Deployment sobe o pod
|
||||||
|
# novo antes de derrubar o velho. Foi essa conta que derrubou o
|
||||||
|
# provisionamento do `plataforma` em 17/09, e o registro dela esta ali.
|
||||||
|
#
|
||||||
|
# `pods` vai a 10 pelo mesmo motivo: cinco Deployments, um surge cada.
|
||||||
|
requests.cpu: "1.5"
|
||||||
|
requests.memory: 2Gi
|
||||||
|
limits.cpu: "5"
|
||||||
|
limits.memory: 3.5Gi
|
||||||
|
pods: "10"
|
||||||
---
|
---
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
# A politica de rede.
|
# A politica de rede.
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ spec:
|
|||||||
spec:
|
spec:
|
||||||
containers:
|
containers:
|
||||||
- name: runtime-core
|
- name: runtime-core
|
||||||
image: docker.io/library/runtime-core:1.1-demo
|
image: docker.io/library/runtime-core:1.2-auditoria
|
||||||
# `Never`: a imagem tem de estar no containerd do no ANTES do deploy.
|
# `Never`: a imagem tem de estar no containerd do no ANTES do deploy.
|
||||||
# "Presente no no" tambem nao e "atual" — conferir a TAG, e nao o nome.
|
# "Presente no no" tambem nao e "atual" — conferir a TAG, e nao o nome.
|
||||||
imagePullPolicy: Never
|
imagePullPolicy: Never
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ spec:
|
|||||||
spec:
|
spec:
|
||||||
containers:
|
containers:
|
||||||
- name: runtime-operacao
|
- name: runtime-operacao
|
||||||
image: docker.io/library/runtime-operacao:1.1-demo
|
image: docker.io/library/runtime-operacao:1.2-auditoria
|
||||||
# `Never`: a imagem tem de estar no containerd do no ANTES do deploy.
|
# `Never`: a imagem tem de estar no containerd do no ANTES do deploy.
|
||||||
# "Presente no no" tambem nao e "atual" — conferir a TAG, e nao o nome.
|
# "Presente no no" tambem nao e "atual" — conferir a TAG, e nao o nome.
|
||||||
imagePullPolicy: Never
|
imagePullPolicy: Never
|
||||||
|
|||||||
@@ -0,0 +1,89 @@
|
|||||||
|
# =============================================================================
|
||||||
|
# O BFF do tenant.
|
||||||
|
#
|
||||||
|
# POR QUE ELE EXISTE AQUI, E NAO COMO BIBLIOTECA
|
||||||
|
#
|
||||||
|
# A SPA chama o BFF para quase tudo. Sem ele, `/bff` devolve 502 e o sistema
|
||||||
|
# abre vazio — foi o que aconteceu nos dois primeiros tenants provisionados, em
|
||||||
|
# 2026-09-24. As tres saidas estavam registradas desde 2026-09-18; o dono
|
||||||
|
# escolheu o quinto Deployment, que e o unico que entrega sem refatorar um
|
||||||
|
# componente que ja roda em producao em dois lugares.
|
||||||
|
#
|
||||||
|
# O PRECO ESTA NA COTA, e nao aqui: cinco Deployments precisam de mais que oito
|
||||||
|
# pods durante um rollout. Ver 00-namespace-quota-netpol.yaml.
|
||||||
|
#
|
||||||
|
# AS URLS APONTAM PARA OS RUNTIMES, e nao para os treze servicos: e esta a
|
||||||
|
# diferenca entre este molde e o `escolinha`. O mapa e o mesmo dos poms:
|
||||||
|
# core configuracao, cadastro, organizacao, documentos, agenda
|
||||||
|
# operacao planejamento, campeonato, administrativo, financeiro
|
||||||
|
# saude saude, nutricao, assistencia-social, pedagogico
|
||||||
|
# =============================================================================
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: servico-bff
|
||||||
|
namespace: escolinha-de-teste-prod
|
||||||
|
labels:
|
||||||
|
app: servico-bff
|
||||||
|
athleticmap.io/contexto: bff
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector: { matchLabels: { app: servico-bff } }
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: servico-bff
|
||||||
|
athleticmap.io/contexto: bff
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: servico-bff
|
||||||
|
image: docker.io/library/servico-bff:2.0-exportacao
|
||||||
|
imagePullPolicy: Never
|
||||||
|
ports: [{ containerPort: 8083 }]
|
||||||
|
env:
|
||||||
|
- { name: ATM_CONFIG_URL, value: "http://runtime-core" }
|
||||||
|
- { name: ATM_CADASTRO_URL, value: "http://runtime-core" }
|
||||||
|
- { name: ATM_ORGANIZACAO_URL, value: "http://runtime-core" }
|
||||||
|
- { name: ATM_DOCUMENTOS_URL, value: "http://runtime-core" }
|
||||||
|
- { name: ATM_AGENDA_URL, value: "http://runtime-core" }
|
||||||
|
- { name: ATM_PLANEJAMENTO_URL, value: "http://runtime-operacao" }
|
||||||
|
- { name: ATM_CAMPEONATO_URL, value: "http://runtime-operacao" }
|
||||||
|
- { name: ATM_ADMINISTRATIVO_URL, value: "http://runtime-operacao" }
|
||||||
|
- { name: ATM_FINANCEIRO_URL, value: "http://runtime-operacao" }
|
||||||
|
- { name: ATM_SAUDE_URL, value: "http://runtime-saude" }
|
||||||
|
- { name: ATM_NUTRICAO_URL, value: "http://runtime-saude" }
|
||||||
|
- { name: ATM_ASSISTENCIA_SOCIAL_URL, value: "http://runtime-saude" }
|
||||||
|
- { name: ATM_PEDAGOGICO_URL, value: "http://runtime-saude" }
|
||||||
|
- { name: ATM_JWK_SET_URI, value: "http://keycloak.plataforma-prod.svc:8080/realms/athleticmap-6/protocol/openid-connect/certs" }
|
||||||
|
- { name: ATM_ISSUER, value: "https://auth.athleticmap.com/realms/athleticmap-6" }
|
||||||
|
- { name: ATM_TENANT, value: "escolinha-de-teste" }
|
||||||
|
- { name: ATM_PLANO, value: "bronze" }
|
||||||
|
# `optional` porque o molde ainda NAO cria este Secret. Sem ele o
|
||||||
|
# selo de consentimento simplesmente nao e emitido — o BFF sobe e
|
||||||
|
# funciona (ver SeloDeConsentimento, que trata segredo vazio). No dia
|
||||||
|
# em que o Secret existir, isto passa a valer sozinho.
|
||||||
|
- name: ATM_CONSENTIMENTO_SEGREDO
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef: { name: consentimento-selo, key: segredo, optional: true }
|
||||||
|
resources:
|
||||||
|
requests: { cpu: 50m, memory: 256Mi }
|
||||||
|
limits: { cpu: 500m, memory: 512Mi }
|
||||||
|
readinessProbe:
|
||||||
|
httpGet: { path: /bff/health, port: 8083 }
|
||||||
|
initialDelaySeconds: 20
|
||||||
|
periodSeconds: 10
|
||||||
|
failureThreshold: 30
|
||||||
|
livenessProbe:
|
||||||
|
httpGet: { path: /actuator/health/liveness, port: 8083 }
|
||||||
|
initialDelaySeconds: 50
|
||||||
|
periodSeconds: 20
|
||||||
|
failureThreshold: 6
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: servico-bff
|
||||||
|
namespace: escolinha-de-teste-prod
|
||||||
|
spec:
|
||||||
|
selector: { app: servico-bff }
|
||||||
|
ports: [{ port: 80, targetPort: 8083 }]
|
||||||
@@ -34,7 +34,7 @@ spec:
|
|||||||
spec:
|
spec:
|
||||||
containers:
|
containers:
|
||||||
- name: frontend-spa
|
- name: frontend-spa
|
||||||
image: docker.io/library/frontend-spa:2.65-csp
|
image: docker.io/library/frontend-spa:2.67-csp-script
|
||||||
imagePullPolicy: Never
|
imagePullPolicy: Never
|
||||||
ports: [{ containerPort: 80 }]
|
ports: [{ containerPort: 80 }]
|
||||||
env:
|
env:
|
||||||
|
|||||||
Reference in New Issue
Block a user