# ============================================================================= # P4.9 — runtime-core — configuracao, cadastro, organizacao, documentos, agenda # # `escolinha-de-teste` e substituido pelo nome do tenant ao provisionar. O molde inteiro usa # o mesmo marcador, para `sed`/script nao precisarem conhecer cada arquivo. # ============================================================================= apiVersion: apps/v1 kind: Deployment metadata: name: runtime-core namespace: escolinha-de-teste-prod spec: replicas: 1 selector: matchLabels: { app: runtime-core } template: metadata: labels: app: runtime-core athleticmap.io/contexto: runtime-core spec: containers: - name: runtime-core image: docker.io/library/runtime-core:1.4-consentimento-opcional # `Never`: a imagem tem de estar no containerd do no ANTES do deploy. # "Presente no no" tambem nao e "atual" — conferir a TAG, e nao o nome. imagePullPolicy: Never ports: [{ containerPort: 8083 }] env: # O banco e o PgBouncer do `plataforma-prod` (P4.7), e nao um # Postgres deste namespace: ele nao existe mais aqui. - { name: SPRING_DATASOURCE_URL, value: "jdbc:postgresql://pgbouncer.plataforma-prod.svc:6432/athleticmap_escolinha-de-teste" } - { name: SPRING_DATASOURCE_USERNAME, value: "r_escolinha-de-teste" } - name: SPRING_DATASOURCE_PASSWORD valueFrom: secretKeyRef: { name: db-credentials, key: password } # O Keycloak tambem e da plataforma (P4.8). O REALM passa a ser o # nome do tenant: uma instancia so nao comporta quatro realms # chamados `athleticmap`. - { name: ATM_JWK_SET_URI, value: "http://keycloak.plataforma-prod.svc:8080/realms/athleticmap-6/protocol/openid-connect/certs" } - { name: ATM_ISSUER, value: "https://auth.athleticmap.com/realms/athleticmap-6" } - { name: ATM_TENANT, value: "escolinha-de-teste" } - { name: ATM_PLANO, value: "bronze" } # Vinculo do funcionario ao usuario do Keycloak (RF-09). O Secret e # selado pelo provisionamento. NAO e `optional` de proposito: opcional, # o pod sobe antes de o controlador abrir o SealedSecret e fica com o # vinculo desligado em silencio (visto em 2026-09-26 em 3 tenants). - { name: ATM_KC_ADMIN_ENABLED, value: "true" } - { name: ATM_KC_ADMIN_URL, value: "http://keycloak.plataforma-prod.svc:8080" } - { name: ATM_KC_REALM, value: "athleticmap-6" } - name: ATM_KC_CLIENT_SECRET valueFrom: secretKeyRef: { name: kc-admin-secret, key: client-secret } resources: requests: { cpu: 50m, memory: 384Mi } limits: { cpu: "1", memory: 768Mi } readinessProbe: httpGet: { path: /actuator/health/readiness, port: 8083 } initialDelaySeconds: 20 periodSeconds: 10 livenessProbe: httpGet: { path: /actuator/health/liveness, port: 8083 } initialDelaySeconds: 60 periodSeconds: 30 --- apiVersion: v1 kind: Service metadata: name: runtime-core namespace: escolinha-de-teste-prod labels: app: runtime-core athleticmap.io/metricas: tenant spec: selector: { app: runtime-core } ports: [{ name: http, port: 80, targetPort: 8083 }]