# RASCUNHO — tenants/plataforma/66-runtime-operacao.yaml (commit A). Nao aplicar daqui. # # runtime-operacao no tenant `plataforma`: o FINANCEIRO da Athletic Map (webhook # Asaas, notas fiscais N18, conciliacao, mensalidades) — e, por ser o mesmo # processo, planejamento, campeonato e administrativo, que nascem VAZIOS aqui. # # Substitui `servico-financeiro:1.7-n18-standalone`. O standalone so existiu # porque o financeiro virou biblioteca em 18/09 e a plataforma precisava da # metrica N18 (29/09, scripts/publicar_financeiro_plataforma.py). O runtime-operacao # ja publica as mesmas series `atm_nota_fiscal_*`. # # Env copiado do 79-servico-financeiro.yaml atual (Asaas de PRODUCAO, conta da # Athletic Map). CRITICOS: # * ATM_PLANO=institucional. Sem ele o runtime nasce BRONZE e a BarreiraDePlano # (prefixo /api/financeiro, minimo prata) responde 403 aos tres CronJobs. # * ATM_ISSUER/JWK do realm `athleticmap` da plataforma (auth-plataforma). # * ASAAS_API_KEY e ASAAS_WEBHOOK_TOKEN do mesmo Secret asaas-credentials # (o AsaasConfig recusa subir se forem iguais — ja sao diferentes hoje). # * SEM ASAAS_SPLIT_WALLET_ID: sem carteira, nao ha split (AsaasProvedorPagamento). # * SEM ATM_CONSENTIMENTO_SEGREDO (Secret consentimento-selo nao existe aqui; o # standalone de hoje tambem roda sem: so loga aviso). SEM desafio de campeonato. apiVersion: apps/v1 kind: Deployment metadata: name: runtime-operacao namespace: plataforma-prod labels: app: runtime-operacao spec: replicas: 1 selector: matchLabels: { app: runtime-operacao } template: metadata: labels: app: runtime-operacao athleticmap.io/contexto: runtime-operacao spec: containers: - name: runtime-operacao image: docker.io/library/runtime-operacao:1.26-sem-fed-admin 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: SPRING_DATASOURCE_HIKARI_MAXIMUM_POOL_SIZE, value: "10" } - { name: ATM_JWK_SET_URI, value: "http://keycloak:8080/realms/athleticmap/protocol/openid-connect/certs" } - { name: ATM_ISSUER, value: "https://auth-plataforma.athleticmap.com/realms/athleticmap" } - { name: ATM_TENANT, value: "plataforma" } - { name: ATM_PLANO, value: "institucional" } # ── Asaas de PRODUCAO (conta da Athletic Map), igual ao 79- de hoje ── - { name: ASAAS_BASE_URL, value: "https://api.asaas.com/v3" } - { name: ASAAS_AMBIENTE, value: "producao" } - { name: ASAAS_USER_AGENT, value: "AthleticMap/plataforma" } - name: ASAAS_API_KEY valueFrom: secretKeyRef: { name: asaas-credentials, key: api-key } - name: ASAAS_WEBHOOK_TOKEN valueFrom: secretKeyRef: { name: asaas-credentials, key: webhook-token } resources: requests: { cpu: 50m, memory: 384Mi } limits: { cpu: "1", memory: 768Mi } readinessProbe: httpGet: { path: /actuator/health/readiness, port: 8083 } initialDelaySeconds: 25 periodSeconds: 10 failureThreshold: 30 livenessProbe: httpGet: { path: /actuator/health/liveness, port: 8083 } initialDelaySeconds: 90 periodSeconds: 20 failureThreshold: 6 --- apiVersion: v1 kind: Service metadata: name: runtime-operacao namespace: plataforma-prod labels: app: runtime-operacao spec: selector: { app: runtime-operacao } ports: [{ name: http, port: 80, targetPort: 8083 }]