From ead4f004a9d1cf001469b7bf8ed10251eb06fd99 Mon Sep 17 00:00:00 2001 From: Athletic Map Deploy Date: Thu, 17 Sep 2026 18:32:10 +0000 Subject: [PATCH] fix(plataforma): sonda de readiness do captacao em /actuator/health/readiness O caminho anterior, /api/public/leads/health, nao existe: o LeadController tem um unico @PostMapping. O pod subia e ficava 0/1 com a aplicacao dizendo Started no log. --- tenants/plataforma/82-servico-captacao.yaml | 118 +++++++++++--------- 1 file changed, 63 insertions(+), 55 deletions(-) diff --git a/tenants/plataforma/82-servico-captacao.yaml b/tenants/plataforma/82-servico-captacao.yaml index 8949c06..98948cb 100644 --- a/tenants/plataforma/82-servico-captacao.yaml +++ b/tenants/plataforma/82-servico-captacao.yaml @@ -8,36 +8,36 @@ # preenche o formulario ainda nao e cliente. O que substitui a autenticacao # esta no proprio servico — CORS restrito, rate limit por IP e consent # obrigatorio. -# Bounded context "financeiro" (2a onda): Cobranca + ApuracaoRateio (centros de custo). -# Schema proprio "financeiro" (Flyway). Roteado em /api/public/leads no ingress. ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: servico-captacao - namespace: plataforma-prod - labels: - app: servico-captacao - athleticmap.io/contexto: financeiro -spec: - replicas: 1 - selector: { matchLabels: { app: servico-captacao } } - template: - metadata: - labels: - app: servico-captacao - athleticmap.io/contexto: financeiro - spec: - containers: - - name: servico-captacao - image: docker.io/library/servico-captacao:1.0 - imagePullPolicy: Never - ports: [{ containerPort: 8083 }] - env: - - { name: SPRING_DATASOURCE_URL, value: "jdbc:postgresql://postgres:5432/athleticmap?sslmode=require" } - - { name: SPRING_DATASOURCE_USERNAME, value: "atm" } - - name: SPRING_DATASOURCE_PASSWORD - valueFrom: +# Bounded context "financeiro" (2a onda): Cobranca + ApuracaoRateio (centros de custo). +# Schema proprio "financeiro" (Flyway). Roteado em /api/public/leads no ingress. +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: servico-captacao + namespace: plataforma-prod + labels: + app: servico-captacao + athleticmap.io/contexto: financeiro +spec: + replicas: 1 + selector: { matchLabels: { app: servico-captacao } } + template: + metadata: + labels: + app: servico-captacao + athleticmap.io/contexto: financeiro + spec: + containers: + - name: servico-captacao + image: docker.io/library/servico-captacao:1.0 + imagePullPolicy: Never + ports: [{ containerPort: 8083 }] + env: + - { name: SPRING_DATASOURCE_URL, value: "jdbc:postgresql://postgres:5432/athleticmap?sslmode=require" } + - { name: SPRING_DATASOURCE_USERNAME, value: "atm" } + - name: SPRING_DATASOURCE_PASSWORD + valueFrom: secretKeyRef: { name: db-credentials, key: password } - { name: ATM_TENANT, value: "plataforma" } # CORS: so a landing page. Formulario publico com CORS aberto @@ -54,28 +54,36 @@ spec: - { name: CAPTACAO_LIMITE_POR_IP, value: "5" } # Destino do aviso ao comercial. Vazio = lead e gravado e o # aviso vira log sem PII. Preencher quando houver SMTP. - - { name: CAPTACAO_EMAIL_COMERCIAL, value: "" } - resources: - requests: { cpu: 150m, memory: 320Mi } - limits: { cpu: "1", memory: 768Mi } - readinessProbe: - httpGet: { path: /api/public/leads/health, port: 8083 } - initialDelaySeconds: 25 - periodSeconds: 10 - failureThreshold: 30 - livenessProbe: - httpGet: { path: /actuator/health/liveness, port: 8083 } - initialDelaySeconds: 60 - periodSeconds: 20 - failureThreshold: 6 ---- -apiVersion: v1 -kind: Service -metadata: - name: servico-captacao - namespace: plataforma-prod - labels: - app: servico-captacao -spec: - selector: { app: servico-captacao } - ports: [{ name: http, port: 80, targetPort: 8083 }] + - { name: CAPTACAO_EMAIL_COMERCIAL, value: "" } + resources: + requests: { cpu: 150m, memory: 320Mi } + limits: { cpu: "1", memory: 768Mi } + # `/actuator/health/readiness`, e nao um health de dominio. + # + # A primeira versao apontava para `/api/public/leads/health`, copiado + # do manifesto do financeiro por analogia. Esse caminho NAO EXISTE: + # o `LeadController` tem um unico `@PostMapping`, e por desenho — a + # superficie deste servico publico e exatamente um POST. O pod ficou + # 0/1 enquanto a aplicacao dizia "Started" no log, que e o sintoma + # mais confuso possivel. + readinessProbe: + httpGet: { path: /actuator/health/readiness, port: 8083 } + initialDelaySeconds: 25 + periodSeconds: 10 + failureThreshold: 30 + livenessProbe: + httpGet: { path: /actuator/health/liveness, port: 8083 } + initialDelaySeconds: 60 + periodSeconds: 20 + failureThreshold: 6 +--- +apiVersion: v1 +kind: Service +metadata: + name: servico-captacao + namespace: plataforma-prod + labels: + app: servico-captacao +spec: + selector: { app: servico-captacao } + ports: [{ name: http, port: 80, targetPort: 8083 }]