Files
athletic-map-deploy/moldes/consolidado/16-rolebinding-provisionamento.yaml
T
deploy dc510205d1 feat(tenant): Role por tenant para os dois Secrets que o provisionamento le
db-credentials (a senha do papel) e <tenant>-tls (so a existencia, que e como a
etapa DNS_PUBLICADO sabe que o cert-manager terminou). Por tenant porque o nome
do TLS depende dele e resourceNames nao aceita curinga — e dar get em qualquer
Secret do namespace deixaria o provisionamento ler a chave Asaas DO CLIENTE.
2026-09-24 22:39:50 +00:00

60 lines
2.1 KiB
YAML

# =============================================================================
# P5.6/P5.9 — a plataforma pode esperar rollout e suspender ESTE tenant.
#
# O ClusterRole (`atm-provisionamento-tenants`, em
# `tenants/plataforma/16-rbac-provisionamento.yaml`) e so a lista de verbos;
# quem concede e este RoleBinding, e ele vale SO neste namespace. Um tenant sem
# este arquivo simplesmente nao e alcancado pelo provisionamento — a etapa falha
# com 403 dizendo o caminho que tentou, que e melhor do que um acesso amplo.
# =============================================================================
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: atm-provisionamento
namespace: {{TENANT}}-prod
subjects:
- kind: ServiceAccount
name: atm-provisionamento
namespace: plataforma-prod
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: atm-provisionamento-tenants
---
# Os DOIS Secrets que o provisionamento le neste namespace, pelo nome.
#
# Role por tenant, e nao regra no ClusterRole, porque os nomes dependem do
# tenant e `resourceNames` nao aceita curinga. A alternativa seria dar `get` em
# QUALQUER Secret do namespace — e ai o provisionamento passaria a poder ler a
# chave Asaas DO CLIENTE, que e dele e nao nossa.
#
# db-credentials a senha do papel no Postgres, que a etapa BANCO_CRIADO
# precisa para dar a senha ao papel e ao pool
# {{TENANT}}-tls so a EXISTENCIA, que e como a etapa DNS_PUBLICADO sabe que
# o cert-manager terminou de emitir
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: atm-provisionamento-segredos
namespace: {{TENANT}}-prod
rules:
- apiGroups: [""]
resources: ["secrets"]
verbs: ["get"]
resourceNames: ["db-credentials", "{{TENANT}}-tls"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: atm-provisionamento-segredos
namespace: {{TENANT}}-prod
subjects:
- kind: ServiceAccount
name: atm-provisionamento
namespace: plataforma-prod
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: atm-provisionamento-segredos