GitOps
Do pull request ao cluster: ArgoCD app-of-apps, Crossplane e o gate humano obrigatório.
O estado desejado vive em Git e é reconciliado continuamente pelo ArgoCD (padrão app-of-apps). Nenhuma mudança chega ao cluster sem PR aprovado por um humano.
Fluxo
- Humano ou agente propõe uma mudança e abre um Pull Request — em
platform(componentes de plataforma, XRDs, Compositions, app-delivery) ou emtenants(onboarding, scaling, offboarding de tenant). - Revisão humana — aprovação obrigatória. Este é o gate de segurança do modelo operacional.
- Merge → main registra o novo estado desejado.
- ArgoCD detecta o merge e aplica no cluster (
selfHealreverte drift automaticamente). - Crossplane reconcilia os claims de tenant (quando aplicável), criando os building blocks.
- Karpenter provisiona nodes sob demanda no pool
data/prophubse necessário. - Validação do estado pós-apply — hoje feita por humano; a validação por agente é destino (AI Ops).
Um tenant fica operacional em menos de 10 minutos após o merge.
Repositórios
| Repo | Conteúdo | Ciclo de vida |
|---|---|---|
plat-eng-bootstrap | Substrato: Terraform (VCN/OKE/IAM) + seed do ArgoCD | one-shot |
plat-eng-platform | Componentes de plataforma, XRDs/Compositions, app-delivery | contínuo |
plat-eng-tenants | Claims por tenant (tenants/<nome>/*.yaml) | por tenant |
plat-eng-scaffolder | O tool que gera app.yaml/CI e abre PRs de onboarding | release |
bootstrap só cria o cluster e semeia o ArgoCD uma vez — depois disso sai de cena, não é alvo de
PR contínuo como os outros três. A separação por repo dá RBAC distinto, menor blast radius e
ciclos de vida independentes. O provisionamento por tenant usa Crossplane + ArgoCD em vez de
Terraform-por-tenant. Detalhe completo em ADR-0008-separacao-responsabilidades-repos.
Rollback
GitOps torna o rollback trivial: git revert → o ArgoCD reaplica o estado
anterior em < 5 min. Para tenants, remover os YAMLs do Git faz o ArgoCD
prune dos recursos.