55 lines
2.5 KiB
YAML
55 lines
2.5 KiB
YAML
# =============================================================================
|
|
# P5.6/P5.9 — a permissao que o provisionamento precisa nos tenants.
|
|
#
|
|
# ── O QUE O CODIGO FAZ (e nada alem disso) ──────────────────────────────────
|
|
#
|
|
# `ApiDoKubernetes`, no `servico-captacao`, faz exatamente duas coisas com o
|
|
# token do proprio pod:
|
|
#
|
|
# GET /apis/apps/v1/namespaces/<tenant>-prod/deployments/<nome>
|
|
# — esperar o rollout do tenant novo terminar (P5.6);
|
|
# PATCH /apis/apps/v1/namespaces/<tenant>-prod/deployments/<nome>/scale
|
|
# — suspender o cliente inadimplente, zerando replicas (P5.9).
|
|
#
|
|
# Sem estas regras a etapa falha com 403. No caso da suspensao, o 403 vem DEPOIS
|
|
# de o realm ja ter sido desligado: o cliente fica bloqueado com os pods de pe —
|
|
# gasta memoria, mas nenhum dado corre risco — e o evento fica FALHOU ate a
|
|
# permissao existir.
|
|
#
|
|
# ── POR QUE ClusterRole + RoleBinding, E NAO ClusterRoleBinding ─────────────
|
|
#
|
|
# O ClusterRole aqui e so a LISTA de verbos (um ClusterRole sem binding nao da
|
|
# acesso a nada). Quem concede e o RoleBinding, que vive DENTRO do namespace do
|
|
# tenant — um por tenant, em `tenants/<tenant>/16-rolebinding-provisionamento.yaml`.
|
|
# Com um ClusterRoleBinding, a plataforma passaria a ler e escalar Deployment de
|
|
# QUALQUER namespace, inclusive `kube-system` e `argocd`.
|
|
#
|
|
# Tenant novo entra pelo molde consolidado, que ja traz o RoleBinding.
|
|
#
|
|
# ── A ServiceAccount ────────────────────────────────────────────────────────
|
|
#
|
|
# Dedicada. Ate aqui o `servico-captacao` rodava com a `default` do namespace, e
|
|
# dar poder a `default` significa dar poder a QUALQUER pod que suba sem
|
|
# `serviceAccountName` — inclusive um pod de teste.
|
|
# =============================================================================
|
|
apiVersion: v1
|
|
kind: ServiceAccount
|
|
metadata:
|
|
name: atm-provisionamento
|
|
namespace: plataforma-prod
|
|
---
|
|
apiVersion: rbac.authorization.k8s.io/v1
|
|
kind: ClusterRole
|
|
metadata:
|
|
name: atm-provisionamento-tenants
|
|
rules:
|
|
# Esperar o rollout: so leitura.
|
|
- apiGroups: ["apps"]
|
|
resources: ["deployments"]
|
|
verbs: ["get"]
|
|
# Suspender e reativar: o subrecurso `scale` altera SO as replicas. Escrever no
|
|
# Deployment inteiro deixaria trocar imagem e variavel de ambiente.
|
|
- apiGroups: ["apps"]
|
|
resources: ["deployments/scale"]
|
|
verbs: ["get", "patch"]
|