# Bounded context "documentos" (servico de anexos centralizado, ADR-0002 + decisao 2026-06-18). # Schema proprio "documentos"; roteado em /api/documentos no ingress do tenant. --- apiVersion: apps/v1 kind: Deployment metadata: name: servico-documentos namespace: acme-prod labels: { app: servico-documentos, athleticmap.io/contexto: documentos } spec: replicas: 1 selector: { matchLabels: { app: servico-documentos } } template: metadata: labels: { app: servico-documentos, athleticmap.io/contexto: documentos } spec: containers: - name: servico-documentos image: docker.io/library/servico-documentos:1.0 imagePullPolicy: Never ports: [{ containerPort: 8083 }] env: - { name: SPRING_DATASOURCE_URL, value: "jdbc:postgresql://postgres:5432/athleticmap" } - { name: SPRING_DATASOURCE_USERNAME, value: "atm" } - name: SPRING_DATASOURCE_PASSWORD valueFrom: secretKeyRef: { name: db-credentials, key: password } - { name: ATM_JWK_SET_URI, value: "http://keycloak:8080/realms/athleticmap/protocol/openid-connect/certs" } - { name: ATM_ISSUER, value: "https://auth-acme.athleticmap.influxdigital.com.br/realms/athleticmap" } - { name: ATM_TENANT, value: "acme" } resources: requests: { cpu: 100m, memory: 300Mi } limits: { cpu: "1", memory: 640Mi } readinessProbe: httpGet: { path: /api/documentos/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-documentos namespace: acme-prod labels: { app: servico-documentos } spec: selector: { app: servico-documentos } ports: [{ name: http, port: 80, targetPort: 8083 }]