Ferramentas · Deploy

GitOps com ArgoCD

Git como fonte da verdade para o estado do cluster. ArgoCD detecta divergências e reconcilia automaticamente — tudo auditável, reversível e sem kubectl manual em produção.

Os 4 princípios do GitOps

1.Declarativo

Todo o sistema é descrito de forma declarativa. YAMLs no Git definem o estado desejado, não scripts imperativos.

2.Versionado

Estado desejado armazenado no Git. Histórico completo, auditoria automática, rollback por git revert.

3.Pull automático

Agentes aprovados (ArgoCD) puxam o estado desejado do Git. Nunca empurrado de fora para dentro do cluster.

4.Reconciliação contínua

Agentes observam continuamente e corrigem divergências. Se alguém fizer kubectl manual, é revertido.

// FLUXO GITOPS COM ARGOCD
👨‍💻
Dev faz PR
Merge no Git
👁️
ArgoCD detecta
🔍
Calcula diff
Aplica no cluster
📊
Monitora saúde

Application — o CRD principal

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: meu-api
  namespace: argocd
spec:
  project: default

  source:
    repoURL: https://github.com/org/k8s-config
    targetRevision: main
    path: apps/meu-api/production

  destination:
    server: https://kubernetes.default.svc
    namespace: production

  syncPolicy:
    automated:
      prune: true      # remove recursos deletados do Git
      selfHeal: true   # desfaz mudanças manuais
    syncOptions:
    - CreateNamespace=true

Estados de Sync e Health

SyncedCluster === Git. Estado ideal.
OutOfSyncCluster divergiu do Git. Precisa de sync.
UnknownNão foi possível determinar o estado.
HealthyTodos os recursos estão saudáveis.
DegradedAlgum recurso está com problema.
ProgressingRecursos estão sendo atualizados.
SuspendedSync pausado manualmente.
MissingRecurso existe no Git mas não no cluster.

Sync Policies

🖱️Manual

Você revisa o diff e clica 'Sync' no painel. Indicado para produção onde mudanças precisam de aprovação humana.

Automated

ArgoCD detecta divergência e sincroniza automaticamente. Ideal para dev/staging. Pode incluir auto-pruning de recursos removidos do Git.

🔄Automated + Self-Heal

Além de sync automático, desfaz qualquer mudança manual feita diretamente no cluster via kubectl. Git é sempre a fonte da verdade.

Uma Application raiz que aponta para um diretório com outras Applications. Permite gerenciar todo o cluster via um único ponto de entrada no Git.

# root-app/applications/
├── production/
│   ├── api.yaml         # Application
│   ├── frontend.yaml    # Application
│   └── workers.yaml     # Application
└── monitoring/
    ├── prometheus.yaml  # Application
    └── grafana.yaml     # Application
💡 Estrutura de repositório recomendada: Separe o repo de código da aplicação do repo de configuração K8s. O CI/CD atualiza o values.yaml ou a tag da imagem no repo de config via PR, e o ArgoCD detecta e aplica. Isso mantém o histórico de deploys 100% no Git.