106 lines
4.8 KiB
YAML
106 lines
4.8 KiB
YAML
# Apps do tenant escolinha:
|
|
# - backend: Spring Boot OAuth2 Resource Server (imagem athletic-map-backend:1.0, importada no k3s)
|
|
# - frontend: SPA OIDC Authorization Code + PKCE (keycloak-js) chamando /api/me
|
|
# - bff: stub (whoami) — sera substituido na evolucao
|
|
---
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata: { name: backend, namespace: escolinha-prod, labels: { app: backend } }
|
|
spec:
|
|
replicas: 1
|
|
selector: { matchLabels: { app: backend } }
|
|
template:
|
|
metadata: { labels: { app: backend } }
|
|
spec:
|
|
containers:
|
|
- name: backend
|
|
image: docker.io/library/athletic-map-backend:1.3
|
|
imagePullPolicy: Never
|
|
env:
|
|
- { name: ATM_JWK_SET_URI, value: "http://keycloak:8080/realms/athleticmap/protocol/openid-connect/certs" }
|
|
- { name: ATM_ISSUER, value: "https://auth-escolinha.athleticmap.com/realms/athleticmap" }
|
|
- { name: ATM_TENANT, value: "escolinha" }
|
|
ports: [{ containerPort: 8083 }]
|
|
readinessProbe:
|
|
httpGet: { path: /api/public/health, port: 8083 }
|
|
initialDelaySeconds: 20
|
|
periodSeconds: 10
|
|
failureThreshold: 24
|
|
---
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata: { name: backend, namespace: escolinha-prod, labels: { app: backend } }
|
|
spec:
|
|
selector: { app: backend }
|
|
ports: [{ name: http, port: 80, targetPort: 8083 }]
|
|
---
|
|
apiVersion: networking.k8s.io/v1
|
|
kind: Ingress
|
|
metadata:
|
|
name: escolinha
|
|
namespace: escolinha-prod
|
|
annotations:
|
|
cert-manager.io/cluster-issuer: letsencrypt-prod
|
|
traefik.ingress.kubernetes.io/router.middlewares: escolinha-prod-redirect-https@kubernetescrd
|
|
spec:
|
|
ingressClassName: traefik
|
|
tls:
|
|
- hosts:
|
|
- escolinha.athleticmap.influxdigital.com.br
|
|
- escolinha.athleticmap.com
|
|
- auth-escolinha.athleticmap.influxdigital.com.br
|
|
- auth-escolinha.athleticmap.com
|
|
secretName: escolinha-tls
|
|
rules:
|
|
- host: escolinha.athleticmap.influxdigital.com.br
|
|
http:
|
|
paths:
|
|
# P4.6: o nginx da SPA resolve /bff e /api/<contexto> por dentro.
|
|
#
|
|
# Ate 2026-09-22 havia UMA linha por contexto aqui, mais o /bff — catorze
|
|
# ao todo. Cada mudanca de topologia obrigava a editar o Ingress de todos
|
|
# os tenants; agora quem conhece a topologia interna e o
|
|
# `frontend/nginx.conf.template`, que viaja junto com a imagem.
|
|
#
|
|
# O destino deste /api mudou de `backend` (o legado) para `frontend-spa`.
|
|
# **O que o visitante ve NAO muda:** um caminho nao mapeado continua
|
|
# recebendo 401 — antes do backend legado, agora do BFF, para onde o
|
|
# nginx manda o /api que sobra. A decisao "401 ou 404" segue aberta e
|
|
# intacta; isto so tira o legado do caminho do trafego.
|
|
#
|
|
# ORDEM: `/api/public` e `/api/public/webhooks/asaas` vivem no
|
|
# `96-ingress-garmin-public.yaml` e tem prefixo MAIS LONGO, entao vencem
|
|
# este — o Traefik ordena por tamanho. Conferido.
|
|
- { path: /api, pathType: Prefix, backend: { service: { name: frontend-spa, port: { number: 80 } } } }
|
|
- { path: /, pathType: Prefix, backend: { service: { name: frontend-spa, port: { number: 80 } } } }
|
|
- host: escolinha.athleticmap.com
|
|
http:
|
|
paths:
|
|
# P4.6: o nginx da SPA resolve /bff e /api/<contexto> por dentro.
|
|
#
|
|
# Ate 2026-09-22 havia UMA linha por contexto aqui, mais o /bff — catorze
|
|
# ao todo. Cada mudanca de topologia obrigava a editar o Ingress de todos
|
|
# os tenants; agora quem conhece a topologia interna e o
|
|
# `frontend/nginx.conf.template`, que viaja junto com a imagem.
|
|
#
|
|
# O destino deste /api mudou de `backend` (o legado) para `frontend-spa`.
|
|
# **O que o visitante ve NAO muda:** um caminho nao mapeado continua
|
|
# recebendo 401 — antes do backend legado, agora do BFF, para onde o
|
|
# nginx manda o /api que sobra. A decisao "401 ou 404" segue aberta e
|
|
# intacta; isto so tira o legado do caminho do trafego.
|
|
#
|
|
# ORDEM: `/api/public` e `/api/public/webhooks/asaas` vivem no
|
|
# `96-ingress-garmin-public.yaml` e tem prefixo MAIS LONGO, entao vencem
|
|
# este — o Traefik ordena por tamanho. Conferido.
|
|
- { path: /api, pathType: Prefix, backend: { service: { name: frontend-spa, port: { number: 80 } } } }
|
|
- { path: /, pathType: Prefix, backend: { service: { name: frontend-spa, port: { number: 80 } } } }
|
|
- host: auth-escolinha.athleticmap.influxdigital.com.br
|
|
http:
|
|
paths:
|
|
- { path: /, pathType: Prefix, backend: { service: { name: keycloak, port: { number: 8080 } } } }
|
|
|
|
- host: auth-escolinha.athleticmap.com
|
|
http:
|
|
paths:
|
|
- { path: /, pathType: Prefix, backend: { service: { name: keycloak, port: { number: 8080 } } } }
|