GitOps é a prática de gerenciar a infraestrutura e os deployments a partir de repositórios Git, tratando o repositório como a única fonte de verdade. O ArgoCD é a ferramenta líder para aplicar esse padrão em clusters Kubernetes, oferecendo sincronização automática, visualização de diff e auditoria completa.
Por que adotar GitOps?
- Consistência, o estado desejado está versionado no Git; qualquer desvio pode ser revertido.
- Auditoria, cada mudança tem histórico de commit, autor e revisão.
- Rollback instantâneo, basta reverter o commit e o ArgoCD reconcilia o cluster.
- Colaboração, pull-requests permitem revisão de alterações de infra antes de aplicar.
Arquitetura básica do ArgoCD
- Repository Server, armazena manifests (YAML, Helm, Kustomize).
- Application Controller, compara o estado do cluster com o manifesto no Git e aplica diferenças.
- API Server, expõe UI e API REST para gerenciamento.
- Dex / SSO, integração com provedores de identidade (GitHub, Okta).
O fluxo de trabalho é direto: o ArgoCD Controller faz git pull do repositório, aplica os manifestos no cluster Kubernetes via kubectl apply e lê continuamente o status do cluster para compará-lo com o estado desejado. Usuários interagem com o controller pela UI ou pela API. Assim, o repositório permanece como a única fonte de verdade e o cluster é mantido sincronizado de forma automática.
Configurando o repositório
A estrutura recomendada separa uma camada base/, com recursos compartilhados como namespace.yaml e rbac.yaml, de uma camada apps/, na qual cada aplicação (por exemplo, frontend e backend) tem seus próprios kustomization.yaml e deployment.yaml. O Kustomize permite sobrepor configurações por ambiente (dev, staging, prod) sem duplicar manifestos.
Manifesto de aplicação ArgoCD (YAML), 7 linhas
apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: my-app namespace: argocd spec: project: default source: repoURL: https://github.com/yourorg/infra.git targetRevision: HEAD path: apps/frontend destination: server: https://kubernetes.default.svc namespace: production syncPolicy: automated: prune: true selfHeal: true
O
syncPolicy.automatedhabilita sincronização automática e limpeza de recursos obsoletos.
Estratégias de sincronização
- Automática, ideal para ambientes de staging onde a velocidade é crítica.
- Manual (PR-driven), para produção, onde cada mudança passa por revisão antes de ser aplicada.
- Hooks, scripts que rodam antes ou depois da sincronização (ex.: migrações de DB).
Observabilidade e auditoria
- UI, mostra diff entre o estado desejado e o real, com botão “Sync”.
- Webhooks, notifica Slack/Teams em eventos de sync ou falha.
- Metrics, expõe Prometheus metrics (
argocd_app_sync_total,argocd_app_health_status). - Logs, centralize com Loki ou Elasticsearch para rastrear ações.
Segurança
- RBAC, defina papéis (
admin,read-only,dev) no namespaceargocd. - SSO, integre com OAuth2/OIDC (GitHub, Google, Okta).
- TLS mutuo, entre ArgoCD e o API server do Kubernetes.
- Política de branch protection, exija revisões e status checks antes de merge.
Checklist de implementação
- Criar repositório Git com estrutura
base/eapps/. - Instalar ArgoCD (
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml). - Configurar SSO/Dex para autenticação corporativa.
- Definir Application CRDs para cada micro-serviço.
- Habilitar
syncPolicy.automatednos ambientes de teste. - Configurar alertas no Prometheus/Alertmanager para falhas de sync.
- Documentar fluxo de PR → Merge → Sync.
Conclusão
GitOps com ArgoCD traz controle de versão, auditabilidade e automação para a entrega de aplicações Kubernetes. Ao seguir as boas-práticas de estrutura de repositório, segurança e observabilidade, sua equipe pode implantar mudanças com confiança e rapidez.
Já usa ArgoCD? Compartilhe suas dicas e desafios nos comentários!
Leia também
- Arquitetura de Edge Computing: Estratégias para Processamento Distribuído
- HashiCorp Vault: Gerenciamento Seguro de Segredos em Aplicações
- CI/CD Moderno: A Arte de Fazer Deploy com Confiança
- Serverless para aplicativos: arquitetura no dia a dia
- Cloudflare Workers em produção: o que muda depois do hello world
- Consumo de Bateria em Apps: Comparativo e Checklist
