Commit Graph

187 Commits

Author SHA1 Message Date
ATM Platform 76819fd518 feat(tenants): requests.cpu dos runtimes de 100m para 50m (decisao do dono, 2026-09-28)
Uso real ~5m por container; a reserva de 100m travava o no em 13 tenants.
Com 50m o teto passa a ser a memoria: 16. Limites continuam 1 vCPU.
Ver docs/capacidade-kvm8.md no repositorio de codigo.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 12:05:25 +00:00
deploy c0d265c9e2 chore(tenants): runtime-core:1.3-vinculo-keycloak 2026-09-26 22:49:15 +00:00
ATM Platform 55159dd750 feat(tenants): vinculo do funcionario ao Keycloak (RF-09) ligado de verdade
- runtime-core dos quatro antigos ganha ATM_KC_ADMIN_URL e ATM_KC_REALM do
  Keycloak compartilhado (o padrao apontava para o Keycloak proprio, parado)
- molde e os quatro nascidos dele: client cadastro-keycloak criado no realm,
  segredo selado em 05-sealed-kc-admin-secret.yaml, variaveis no runtime-core
  (secretKeyRef optional) e o Secret na Role de leitura do provisionamento
- plataforma: o captacao pode anotar o ApplicationSet para varrer na hora

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-26 22:49:07 +00:00
deploy 3a634a8775 feat(demo): realm vai para o Keycloak compartilhado como athleticmap-2 (card 156) — issuer/JWKS/KC_URL trocados, saida de rede aberta, Keycloak proprio em replicas 0 2026-09-26 17:30:43 +00:00
deploy 28b493accc feat(tenants): BFF funde no pod do frontend-spa (P4.6) — Service fica, so o selector muda; Garmin e Prometheus continuam apontando pro mesmo nome 2026-09-26 16:34:12 +00:00
deploy 711bee7fc1 chore(tenants): conteudo de publico/ atualizado 2026-09-26 15:53:24 +00:00
deploy 288a87e5be chore(tenants): servico-bff:2.0-atualiza-4-antigos 2026-09-26 15:31:34 +00:00
deploy 3b9414e90a chore(tenants): conteudo de publico/ atualizado 2026-09-26 15:18:26 +00:00
deploy 72288db0d7 chore(tenants): conteudo de publico/ atualizado 2026-09-26 15:16:30 +00:00
deploy 615aacf037 fix(tenants): o volume de publico/ estava indo ANTES do Deployment inteiro (ancora --- errada), e o ConfigMap binario estourava o limite de 256 KiB de annotation do kubectl apply — corrigido com ancora especifica no Service e ServerSideApply=true 2026-09-26 15:14:08 +00:00
deploy d98662739e chore(tenants): conteudo de publico/ atualizado 2026-09-26 15:08:29 +00:00
deploy 13586b77ea feat(tenants): publico/ passa a vir de ConfigMap, nao mais so da imagem 2026-09-26 15:03:20 +00:00
deploy 662d49cb85 chore(tenants): runtime-operacao:1.3-split-1.20 2026-09-26 15:01:29 +00:00
deploy db4ae81a1b feat(tenants): CronJobs financeiros para escolinha/acme/demo/piloto, com client operacao e roles atm_financeiro proprias 2026-09-26 14:18:22 +00:00
deploy f88fb362f9 chore(tenants): reduz o teto das cotas dos quatro tenants antigos, 20 para 8 nucleos — o uso real e 5700m, e o node tem 8 no total 2026-09-26 13:41:34 +00:00
deploy ab68dc374a chore(tenants): aposenta o backend legado nos quatro tenants antigos (0 replicas) — zero requisicoes reais em 7 dias, o /api ja vai para o servico-bff 2026-09-26 13:40:31 +00:00
deploy 2df4f50b0a fix(demo): a senha do banco compartilhado tinha um NEWLINE embutido — a mesma classe de bug do pg-compartilhado-admin 2026-09-26 12:51:44 +00:00
deploy 48668e1910 chore(dominio): o dominio antigo sai de tudo — Ingress, realms, Garmin, ArgoCD e Grafana 2026-09-26 04:05:49 +00:00
deploy 1c7dbcad87 feat(front): visual novo (2.82-aviso-cobranca) em moldes/consolidado, teste5, zico-0, escolinha-de-teste, escolinha-de-teste-2, acme, demo, piloto, escolinha 2026-09-26 02:01:55 +00:00
deploy 58f7d8c2ba feat(front): visual novo (2.78-visual-novo) em moldes/consolidado, escolinha-de-teste-2, zico-0, teste5, escolinha, acme, demo, piloto 2026-09-25 21:44:18 +00:00
ATM Platform 97e0aeecd4 feat(P0.9): fase issuer - o issuer passa para athleticmap.com 2026-09-23 12:30:41 +00:00
ATM Platform eeda1e90da Revert "feat(P0.9): fase issuer - o issuer passa para athleticmap.com"
This reverts commit f4747712ad.
2026-09-23 12:22:02 +00:00
ATM Platform f4747712ad feat(P0.9): fase issuer - o issuer passa para athleticmap.com 2026-09-23 12:21:47 +00:00
ATM Platform 5e1bf3a00b feat(P0.9): fase realm - o realm passa a aceitar os dois dominios 2026-09-23 12:14:17 +00:00
deploy 440ade90f5 feat(P0.9): fase HOSTS — os cinco tenants passam a atender os DOIS dominios
Aditiva de proposito: nenhum endereco antigo sai. Quem esta usando
<tenant>.athleticmap.influxdigital.com.br continua entrando, e o cert-manager
passa a emitir tambem o certificado de <tenant>.athleticmap.com.

Foi possivel porque o dono criou o curinga hoje: *.athleticmap.com resolve para
187.77.37.184, conferido com um nome ALEATORIO — demo. ou www. responderiam
mesmo sem curinga, e a conferencia passaria por engano.

9 arquivos, 28 trocas, 317 insercoes e 4 remocoes. As 4 sao as linhas de TLS em
fluxo, reescritas com os dois dominios na mesma lista.

Cada regra de Ingress foi DUPLICADA com os mesmos paths, e nao trocada: uma
regra com host: X so atende X.

`platform/` (ArgoCD e Grafana) fica FORA: mexer no Ingress do ArgoCD no meio de
uma migracao de dominio e perder o instrumento de rollback.

Conferido antes de aplicar: YAML valido em todos os Ingress, e ZERO host sem
entrada de TLS.

O que NAO muda aqui: ATM_ISSUER, ATM_KC_URL e as URLs do Garmin. Ninguem e
deslogado nesta fase.
2026-09-23 11:35:48 +00:00
deploy d81f45b62c feat(demo): o Ingress para de rotear /bff e os treze /api/<contexto> (P4.6)
Catorze linhas saem. Quem conhece a topologia interna passa a ser o
frontend/nginx.conf.template, que viaja junto com a imagem — antes, cada
mudanca de topologia obrigava a editar o Ingress de todos os tenants.

O destino do /api mudou de backend (o legado) para frontend-spa. O que o
visitante ve NAO muda: caminho nao mapeado continua recebendo 401 — antes do
backend legado, agora do BFF, para onde o nginx manda o /api que sobra. A
decisao "401 ou 404" segue aberta e intacta; isto so tira o legado do caminho
do trafego.

Pre-condicao resolvida hoje: as cinco variaveis de destino do nginx estavam
vazias e, mesmo apontadas, precisavam de FQDN (o resolver do nginx nao aplica os
search do resolv.conf). Sem isso, esta mudanca derrubaria os treze contextos e o
/bff de uma vez.

ORDEM: /api/public e /api/public/webhooks/asaas vivem no
96-ingress-garmin-public.yaml e tem prefixo mais longo, entao vencem o /api — o
Traefik ordena por tamanho.

Primeiro tenant. Os outros tres so depois de conferido.
2026-09-22 19:52:26 +00:00
deploy 1dda8d518d fix(tenants): o webhook de PAGAMENTO do Asaas morria no BFF
O arquivo 96-ingress-garmin-public.yaml foi criado para o callback do Garmin e
leva TODO o /api/public para o servico-bff. O BFF relaya o Garmin de proposito
(GarminBffController), mas NAO tem controlador para /api/public/webhooks/asaas —
so o financeiro tem (WebhookAsaasController).

Resultado nos quatro tenants: o aviso de pagamento do Asaas chegava ao BFF e
parava ali. O sintoma seria o pior possivel — a cobranca e paga e NUNCA baixada,
sem erro nenhum do nosso lado; o provedor so registra uma entrega recusada.

Esta dormente hoje porque nenhum dos quatro tem asaas-credentials (cada cliente
traz a propria chave, decisao de 19/09). Passaria a morder no primeiro cliente
que ligasse a cobranca — e o diagnostico comecaria pelo lado errado, olhando o
financeiro, que nunca recebeu nada.

O Traefik ordena por TAMANHO do prefixo, entao a rota nova vence a generica
sozinha; fica escrita primeiro mesmo assim, para ninguem reordenar sem perceber.

Achado a partir do scripts/conferir_rotas_publicas.py, que acusou o piloto. A
acusacao estava certa no problema e errada no alcance: ele le a copia PARCIAL do
monorepo, que nao tem o Ingress de nenhum dos quatro, e concluiu sobre um.
Medido no cluster, os quatro eram identicos e os quatro estavam quebrados.
2026-09-22 15:02:05 +00:00
deploy a6d1f36d67 fix(tenants): o roteamento interno do nginx precisa de FQDN, e nunca funcionou
Ao conferir o P4.6, o nginx do frontend devolveu 502 em TODOS os caminhos
internos, inclusive /bff. O log diz o porque:

    servico-bff could not be resolved (3: Host not found)
    runtime-saude could not be resolved (3: Host not found)

O "resolver" do nginx NAO aplica os "search" do /etc/resolv.conf: ele consulta o
nome exatamente como esta escrito. O comando "getent hosts servico-bff", de
dentro do MESMO pod, resolve — porque usa o resolv.conf, que tem
"search escolinha-prod.svc.cluster.local ...". O nginx nao usa.

Isso e PREEXISTENTE e estava invisivel: o Ingress roteia /bff e as treze linhas
de /api/<contexto> direto para os Services, entao o nginx nunca foi exercitado
nesses caminhos. Quem removesse as linhas do Ingress — que e exatamente o que
P4.6 quer — derrubaria os treze contextos E o /bff de uma vez, com 502 e nenhuma
pista no Ingress para explicar.

As cinco variaveis passam a usar FQDN. Conferido depois, batendo no nginx por
dentro (sem passar pelo Ingress): os 13 contextos respondem 200, e o /bff
tambem. De fora, os quatro tenants seguem em 200 — nada regrediu.
2026-09-22 13:53:06 +00:00
deploy 6dd1fbc24e feat(tenants): o roteamento interno do nginx, por grupo de contextos (P4.6)
As tres variaveis estavam VAZIAS nos quatro tenants, e render-config.sh faz toda
ausente cair em ATM_API_URL, que cai em http://servico-bff. O nginx mandaria
/api/cadastro para o BFF, que responde 401 em vez da resposta do contexto.

Nada quebrava porque o INGRESS atende antes, com uma linha por contexto — e sao
justamente essas linhas que P4.6 quer remover. Sem isto, remove-las quebraria os
treze caminhos de uma vez.

Aditivo: enquanto o Ingress existir, o trafego nem chega a este nginx.
2026-09-22 13:49:10 +00:00
deploy 4eedae4c78 chore(tenants): frontend-spa:2.67-csp-script 2026-09-22 12:17:05 +00:00
deploy cde7d9bd02 fix(tenants): ATM_PLANO=institucional (sem ele a barreira cai em bronze e os modulos pagos dao 403) 2026-09-22 11:05:26 +00:00
deploy 76fd9fd270 chore(tenants): frontend-spa:2.66-lp-css 2026-09-22 01:49:39 +00:00
deploy e666b8e045 feat(backup): envio para fora do servidor (atm-pg-backup:1.2 com rclone) 2026-09-21 23:15:59 +00:00
deploy 5cae175d97 feat(backup): envio para fora do servidor (atm-pg-backup:1.2 com rclone) 2026-09-21 23:13:35 +00:00
deploy 6aed5291a6 chore(tenants): servico-bff:2.0-exportacao 2026-09-21 22:27:36 +00:00
deploy a7b6e7c2c2 chore(tenants): runtime-operacao:1.2-auditoria 2026-09-21 22:22:10 +00:00
deploy e056b7295a chore(tenants): runtime-core:1.2-auditoria 2026-09-21 22:16:40 +00:00
deploy 8a84598042 fix(tenants): ATM_PLANO=institucional (sem ele a barreira cai em bronze e os modulos pagos dao 403) 2026-09-21 21:44:09 +00:00
deploy 69db0586f9 fix(tenants): ATM_PLANO=institucional (sem ele a barreira cai em bronze e os modulos pagos dao 403) 2026-09-21 21:37:08 +00:00
deploy 729686d3da feat(demo): BFF e frontend novos (P4.3-P4.9) 2026-09-21 11:30:06 +00:00
deploy 1ed00120c0 feat(plataforma,tenants): coleta de metricas e permissao do provisionamento 2026-09-21 02:30:31 +00:00
deploy 13a79ce54e feat(demo): runtimes consolidados ao lado dos servicos (P4.3-P4.9) 2026-09-20 19:12:43 +00:00
deploy e90f6afd5c feat(demo): BFF e frontend novos (P4.3-P4.9) 2026-09-19 17:51:27 +00:00
deploy b6f23371ea feat(demo): contextos do runtime-saude passam a responder por ele (P4.3-P4.9) 2026-09-19 17:51:00 +00:00
ATM Platform 8663f441fd Revert "feat(demo): contextos do runtime-saude passam a responder por ele (P4.3-P4.9)"
This reverts commit 9b992300df.
2026-09-19 17:48:25 +00:00
deploy 9b992300df feat(demo): contextos do runtime-saude passam a responder por ele (P4.3-P4.9) 2026-09-19 17:47:55 +00:00
deploy 02e36ba03f feat(demo): runtime-saude no ar (P4.3-P4.9) 2026-09-19 17:47:52 +00:00
deploy d970dfb606 feat(demo): contextos do runtime-operacao passam a responder por ele (P4.3-P4.9) 2026-09-19 17:47:24 +00:00
ATM Platform 1e1f583b76 Revert "feat(demo): contextos do runtime-operacao passam a responder por ele (P4.3-P4.9)"
This reverts commit 48f2ad4883.
2026-09-19 17:46:57 +00:00
deploy 48f2ad4883 feat(demo): contextos do runtime-operacao passam a responder por ele (P4.3-P4.9) 2026-09-19 17:46:26 +00:00