GitOps é um modelo operacional em que o Git é a fonte única de verdade para a infraestrutura e para as aplicações. Em vez de alguém correr kubectl apply à mão, um agente dentro do cluster compara continuamente o estado desejado (no repositório) com o estado real e corrige qualquer diferença.
Os quatro princípios
- Declarativo: o sistema é descrito pelo estado desejado, não por passos.
- Versionado e imutável: todo o estado vive no Git, com histórico completo.
- Obtido automaticamente: agentes aprovados puxam o estado do repositório.
- Reconciliado continuamente: desvios são detetados e corrigidos.
Instalar o Argo CD
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
A primeira Application
Uma Application liga um caminho de um repositório Git a um namespace do cluster:
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: minha-app
namespace: argocd
spec:
project: default
source:
repoURL: https://github.com/empresa/k8s-manifests.git
targetRevision: main
path: apps/minha-app/overlays/prod
destination:
server: https://kubernetes.default.svc
namespace: minha-app
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
Dica: com selfHeal: true, alterações manuais no cluster são revertidas automaticamente. Ative-o só quando a equipa já trabalhar exclusivamente via pull request.
Próximos passos
- Separar repositórios de código e de manifestos.
- Usar o padrão App of Apps ou ApplicationSets para gerir vários ambientes.
- Integrar a gestão de segredos (Sealed Secrets, External Secrets ou SOPS).
Precisa de ajuda com isto?
Fale connosco para um orçamento ou uma análise da sua infraestrutura.