935b6c65f0
O tenant provisionado subia com a tela de login de fabrica e o sistema vazio. Quatro mudancas, medidas contra o escolinha que e o que funciona: - 90-servico-bff.yaml: o quinto Deployment. A SPA chama o BFF para quase tudo; sem ele /bff devolve 502. As URLs apontam para os RUNTIMES, e nao para os treze servicos — e a diferenca deste molde para o do escolinha. - a cota sobe para 10 pods e 2Gi: com quatro Deployments o tenant ja usava 1232Mi de 1536Mi, e o BFF pede 256Mi. Caberia em repouso e estouraria no primeiro rollout. - loginTheme athleticmap-v2 no realm, com o tema montado no Keycloak compartilhado. - imagens alinhadas: frontend 2.67-csp-script e os runtimes 1.2-auditoria. O que NAO mudou, e por que: ATM_API_URL continua no runtime-operacao e o Ingress continua com uma rota. Os dois estao certos — o nginx da SPA roteia /bff e /api por conta propria, e ATM_API_URL e o destino do que nao pertence a grupo nenhum, hoje o webhook em /api/public. O cabecalho do molde ja dizia.
86 lines
3.8 KiB
YAML
86 lines
3.8 KiB
YAML
# =============================================================================
|
|
# P4.9 — a SPA, e com ela o roteamento interno de /bff e /api (P4.6).
|
|
#
|
|
# `{{TENANT}}` e substituido ao provisionar.
|
|
#
|
|
# ── O QUE MUDOU EM RELACAO AO MOLDE ANTIGO ──────────────────────────────────
|
|
#
|
|
# O nginx desta imagem roteia `/bff` e `/api` por conta propria, a partir de
|
|
# `ATM_BFF_URL` e `ATM_API_URL`. Por isso o Ingress deste molde tem UMA rota — e
|
|
# nao uma linha por contexto, que era o que obrigava a editar o Ingress de todos
|
|
# os tenants a cada mudanca de topologia.
|
|
#
|
|
# O `/api` aponta para o `runtime-operacao` porque e ele quem recebe o webhook do
|
|
# provedor de pagamento em `/api/public/**`. Os outros caminhos de `/api` sao
|
|
# resolvidos pelo proprio nginx? NAO — e por isso esta linha e provisoria.
|
|
#
|
|
# **PENDENCIA CONHECIDA:** `/api/cadastro`, `/api/saude` e os demais precisam ir
|
|
# para runtimes DIFERENTES, e uma variavel so nao faz isso. O nginx precisa de
|
|
# uma regra por grupo de contexto. Esta no diario; ate resolver, use o Ingress
|
|
# para separar, como hoje.
|
|
# =============================================================================
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: frontend-spa
|
|
namespace: {{TENANT}}-prod
|
|
spec:
|
|
replicas: 1
|
|
selector:
|
|
matchLabels: { app: frontend-spa }
|
|
template:
|
|
metadata:
|
|
labels: { app: frontend-spa }
|
|
spec:
|
|
containers:
|
|
- name: frontend-spa
|
|
image: docker.io/library/frontend-spa:2.67-csp-script
|
|
imagePullPolicy: Never
|
|
ports: [{ containerPort: 80 }]
|
|
env:
|
|
- { name: ATM_KC_URL, value: "https://auth.athleticmap.com" }
|
|
- { name: ATM_REALM, value: "{{REALM}}" }
|
|
- { name: ATM_CLIENT, value: "spa" }
|
|
- { name: ATM_TENANT, value: "{{TENANT}}" }
|
|
- { name: ATM_PLANO, value: "{{PLANO}}" }
|
|
# ATENCAO: nao ha Deployment de `servico-bff` neste molde — sao
|
|
# quatro, e nenhum e o BFF. Este endereco NAO RESOLVE, e todo /bff
|
|
# devolve 502. Ver a pendencia no diario; o molde ainda nao pode ser
|
|
# aplicado a um tenant por causa disto. Deixado apontando para o nome
|
|
# antigo de proposito: apagar a linha esconderia o buraco.
|
|
- { name: ATM_BFF_URL, value: "http://servico-bff" }
|
|
|
|
# /api por GRUPO DE CONTEXTO, e nao um destino so.
|
|
#
|
|
# A versao anterior mandava TUDO para o `runtime-operacao`, porque e
|
|
# ele quem recebe o webhook do Asaas. Isso estava certo para quatro
|
|
# contextos e errado para os outros nove: `/api/cadastro` tem de ir
|
|
# para o core e `/api/saude` para o saude.
|
|
#
|
|
# O sintoma seria 404 do Spring, e nao 502 — o runtime responde, so
|
|
# nao conhece o caminho. Na tela, uma lista vazia.
|
|
#
|
|
# `ATM_API_URL` continua, e nao e redundante: e o destino do que nao
|
|
# pertence a grupo nenhum, hoje `/api/public/**`.
|
|
- { name: ATM_API_URL, value: "http://runtime-operacao" }
|
|
- { name: ATM_API_CORE_URL, value: "http://runtime-core" }
|
|
- { name: ATM_API_OPERACAO_URL, value: "http://runtime-operacao" }
|
|
- { name: ATM_API_SAUDE_URL, value: "http://runtime-saude" }
|
|
resources:
|
|
# 24 MiB medidos em 2026-09-18. 64Mi de request da folga de 2,5x.
|
|
requests: { cpu: 50m, memory: 64Mi }
|
|
limits: { cpu: 200m, memory: 128Mi }
|
|
readinessProbe:
|
|
httpGet: { path: /, port: 80 }
|
|
initialDelaySeconds: 5
|
|
periodSeconds: 10
|
|
---
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
name: frontend-spa
|
|
namespace: {{TENANT}}-prod
|
|
spec:
|
|
selector: { app: frontend-spa }
|
|
ports: [{ port: 80, targetPort: 80 }]
|