A contratacao pela landing page. Aqui nao ha catch-all: caminho que nao esta
escrito nao existe — o endpoint respondeu vazio com a imagem ja no ar porque o
servico tinha a rota e o Ingress nao.
O molde do tenant ja apontava para ca — a SPA em ATM_KC_URL e os tres runtimes
em ATM_ISSUER — e o host nao existia. O navegador batia em
ERR_CERT_AUTHORITY_INVALID e, passando por cima, em 404 do Traefik.
Nao e auth-plataforma para o cliente: o endereco aparece na barra dele durante
o login, e o nome do nosso tenant interno nao tem o que fazer ali.
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.
O Ingress do plataforma nao tem catch-all, por desenho: rota publica nova
precisa ser acrescentada a mao, ou devolve 404. Duas estavam faltando, as duas
achadas por scripts/conferir_rotas_publicas.py.
/api/public/conta (P5.8) — a tela de espera depois do pagamento. Quem acabou de
pagar AINDA NAO TEM CONTA, logo nao tem token. O controlador existia
(EstadoDaContaController) e a cadeia ja liberava (permitAll), mas o Ingress
devolvia 404: a tela que existe para tranquilizar quem pagou nao respondia.
/api/public/webhooks/assinatura (P5.1) — e outra coisa do webhooks/asaas que ja
estava la: aquele avisa que uma COBRANCA de cliente foi paga e vai para o
financeiro do tenant; este avisa que alguem assinou a Athletic Map, e dispara o
provisionamento de um tenant NOVO. Contas diferentes no Asaas, servicos
diferentes aqui. Sem esta linha, alguem assinaria, pagaria, e nenhum tenant
seria criado — sem erro em lugar nenhum do nosso lado.
Namespace, banco, Keycloak e realm proprios, separados dos clientes e do tenant
de demonstracao. Leva 4 contextos (configuracao, cadastro, financeiro, captacao)
mais bff e SPA, e nao os 13 de um cliente: a Athletic Map nao e escolinha.
Ingress escrito do zero, sem o stub backend legado e sem catch-all /api. Duas
rotas publicas, ambas por desenho: /api/public/leads (o formulario da landing
page) e /api/public/webhooks/asaas (o aviso de pagamento, que chega da internet
sem token nosso).
Dominio em *.athleticmap.influxdigital.com.br, e nao no canonico athleticmap.com
do P0.9: aquele ainda nao tem registro A, e com desafio HTTP-01 nascer nele
daria certificado nao emitido e login quebrado.
Tres SealedSecret gerados para ESTE namespace, e a chave publica do backup no
lugar do placeholder. As 7 imagens locais exigidas estao no no, incluindo
servico-captacao:1.0 e atm-pg-backup:1.0, construidas hoje.
Preparado em P3.1 a P3.4. Validado com kubectl --dry-run: 32 documentos.