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ípio | Descrição |
|---|---|
| Declarativo | Estado desejado descrito em manifestos |
| Versionado | Git é a única fonte de verdade |
| Automatizado | Operador reconcilia continuamente |
| Garantido | Correçã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.