kb.erickguedes.com
ArgoCD: GitOps na Prática

Fundamentos do GitOps e ArgoCD

Aula 1 de 5

O que é GitOps?

GitOps usa Git como única fonte de verdade para infraestrutura e aplicações. O estado desejado do cluster está no Git; o operador reconcilia automaticamente.

Git (declarativo) ←→ GitOps Operator ←→ Kubernetes
      ↑                        ↓
  Desenvolvedor            Cluster real
    (push)            (reconciliação contínua)

Princípios GitOps (CNCF)

PrincípioDescrição
DeclarativoEstado desejado descrito em manifestos
VersionadoGit é a única fonte de verdade
AutomatizadoOperador reconcilia continuamente
GarantidoCorreção automática de drift

ArgoCD — GitOps Operator

# Instalar ArgoCD
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

# Acessar UI
kubectl port-forward svc/argocd-server -n argocd 8080:443

# Obter senha admin
kubectl -n argocd get secret argocd-initial-admin-secret \
  -o jsonpath="{.data.password}" | base64 -d

# CLI
curl -sSL -o argocd https://github.com/argoproj/argo-cd/releases/latest/download/argocd-linux-amd64
chmod +x argocd && sudo mv argocd /usr/local/bin/

argocd login localhost:8080 --insecure --username admin

Primeira Aplicação

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: guestbook
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://github.com/argoproj/argocd-example-apps
    targetRevision: HEAD
    path: guestbook
  destination:
    server: https://kubernetes.default.svc
    namespace: guestbook
  syncPolicy:
    automated:
      prune: true      # remove recursos que sumiram do Git
      selfHeal: true   # corrige drift automaticamente
    syncOptions:
      - CreateNamespace=true
      - ApplyOutOfSyncOnly=true
argocd app create guestbook \
  --repo https://github.com/argoproj/argocd-example-apps \
  --path guestbook \
  --dest-server https://kubernetes.default.svc \
  --dest-namespace guestbook \
  --sync-policy automated \
  --auto-prune \
  --self-heal

argocd app sync guestbook
argocd app get guestbook
argocd app list

Arquitetura

┌──────────────┐
│  Git Repo    │  ← Dev faz push
│  ├── apps/   │
│  ├── k8s/    │
│  └── helm/   │
└──────┬───────┘
       │ poll/webhook (3min default)
       ▼
┌──────────────┐
│  ArgoCD      │  ← reconciliação
│  ├── API     │
│  ├── Server  │
│  └── Repo    │  ← clona repo
└──────┬───────┘
       │ sync
       ▼
┌──────────────┐
│  Kubernetes  │  ← estado real
└──────────────┘

GitOps = Git como verdade absoluta + operador que reconcilia + auto-healing de drift. ArgoCD é o padrão CNCF para GitOps em Kubernetes. Sempre use auto-prune e self-heal.