
Organizando o repositório GitOps: ambientes, overlays e App of Apps
Objetivos desta aula
- Estruturar um repositório GitOps para vários ambientes
- Usar base + overlays do Kustomize sem duplicar YAML
- Gerenciar muitas Applications com o padrão App of Apps
- Definir quem pode mudar o quê no repositório
GitOps começa simples — uma pasta com YAMLs — e vira caos quando aparecem staging, produção e dez microsserviços. Esta aula mostra a estrutura que escala sem duplicar arquivo.
O padrão mais usado é base + overlays do Kustomize: a pasta base/ tem os manifests comuns (Deployment, Service); cada ambiente em overlays/staging e overlays/producao só declara o que muda — réplicas, imagem, domínio, recursos.
Exemplo de diferença entre ambientes: staging com 1 réplica e imagem :latest, produção com 3 réplicas e imagem com tag fixa. Tudo isso em patches pequenos, sem copiar o Deployment inteiro.
O App of Apps resolve outra escala: em vez de criar cada Application na mão, você cria uma Application “mãe” que aponta para uma pasta cheia de definições de Applications filhas. Adicionar um app novo = commitar um arquivo.
Estrutura recomendada: apps/ (uma pasta por aplicação, com base e overlays), clusters/producao/ (as Applications filhas apontando para os overlays certos) e um root-app.yaml apontando para clusters/producao.
Um repositório ou vários? Comece com um só (monorepo de config). Separe quando precisar de permissões diferentes por time ou de históricos independentes.
Controle de mudanças: toda alteração de produção passa por Pull Request com revisão. O Git vira a auditoria completa de quem mudou o quê, quando e por quê.
Dica final: valide os manifests no CI (kustomize build + kubeconform) antes do merge, para que YAML quebrado nunca chegue ao cluster.
Na prática
Estrutura de pastas
text
gitops-repo/
├── apps/
│ └── api/
│ ├── base/
│ │ ├── deployment.yaml
│ │ ├── service.yaml
│ │ └── kustomization.yaml
│ └── overlays/
│ ├── staging/ # 1 réplica, imagem :latest
│ └── producao/ # 3 réplicas, tag fixa, mais recursos
└── clusters/
└── producao/
├── root-app.yaml # App of Apps
└── api.yaml # Application apontando p/ overlayOverlay de produção (só o que muda)
yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../../base
replicas:
- name: api
count: 3
images:
- name: minha/api
newTag: 1.4.2Por que isso importa
Uma estrutura clara de repositório é o que separa GitOps sustentável de uma pilha de YAML copiado e colado.
Erro comum
Copiar a pasta inteira por ambiente: qualquer correção precisa ser lembrada e repetida em todos.
Dica de produção
Proteja a branch main com revisão obrigatória — em GitOps, merge em main é deploy.
Pergunta de entrevista
Como você estrutura um repositório GitOps para staging e produção sem duplicar manifests?
Glossário
- Kustomize
- Ferramenta que monta YAMLs a partir de base + patches.
- Overlay
- Conjunto de mudanças de um ambiente sobre a base.
- App of Apps
- Application que gerencia outras Applications.
- Monorepo
- Um único repositório para toda a configuração.
Conexão com o CloudShop
O repositório GitOps do CloudShop usa base + overlays: staging e produção compartilham 90% do YAML.
Quiz da aula
1. Para que serve o overlay do Kustomize?
2. O que é App of Apps?
3. Em GitOps, um merge na main equivale a:
Minhas anotações
Salvo automaticamente neste navegador.
