Acesse o painel da sua conta

Não tem uma conta? Registrar

Entrar em contato

Visite também nosso site craftxp.com.br

  • img
  • img
  • img
  • img
  • img
  • img

Entre em contato

ArgoCD e GitOps: Deploy Automatizado e Declarativo no Kubernetes

ArgoCD e GitOps: Deploy Automatizado e Declarativo no Kubernetes

Kubernetes revolucionou a forma como implantamos e gerenciamos aplicações em produção. Mas a pergunta que ficou foi: como garantir que o estado real do cluster corresponda exatamente ao que foi definido no repositório? A resposta é GitOps, e o ArgoCD é a ferramenta mais popular para implementar essa abordagem no ecossistema Kubernetes.

Neste artigo, você vai entender o que é GitOps, como o ArgoCD funciona, seus principais conceitos e um passo a passo prático para configurar deploys automatizados e declarativos no seu cluster.

O que é GitOps?

GitOps é um modelo de operação para Kubernetes — e outros sistemas — onde o repositório Git se torna a fonte única da verdade (single source of truth) para a infraestrutura e as aplicações. Toda alteração no cluster é feita através de commits e pull requests no Git. Um operador automatizado (como o ArgoCD) sincroniza continuamente o cluster com o que está definido no repositório.

Os princípios fundamentais do GitOps são:

  • Declaratividade: todo o estado desejado do sistema é descrito em arquivos YAML ou JSON, versionados no Git.
  • Imutabilidade: a infraestrutura é tratada como código — qualquer alteração gera uma nova versão.
  • Sincronização contínua: um operador automatizado garante que o cluster sempre reflita o estado descrito no repositório.
  • Recuperação automática: se alguém alterar manualmente o cluster (drift), o operador reverte automaticamente para o estado desejado.

O que é o ArgoCD?

O ArgoCD é uma ferramenta open-source de entrega contínua (CD) para Kubernetes, construída especificamente para implementar o modelo GitOps. Ele faz parte da CNCF (Cloud Native Computing Foundation) e é um dos projetos mais adotados no ecossistema cloud-native.

Principais características do ArgoCD:

  • Painel web (Web UI) intuitivo com visualização em tempo real do estado do cluster
  • Suporte a múltiplas fontes: Git, Helm Charts, Kustomize, e até mesmo diretórios JSON/YAML
  • SSO integrado com OIDC, LDAP, GitHub, GitLab e Google
  • Webhooks para sincronização automática ao receber push no repositório
  • Rollback com um clique para versões anteriores
  • Suporte a multi-cluster a partir de uma única instância do ArgoCD

Arquitetura do ArgoCD

O ArgoCD opera com uma arquitetura de componentes bem definida:

  • API Server: expõe a API gRPC/REST e a interface web. Gerencia autenticação, autorização e armazena o estado das aplicações.
  • Repository Server: clona e mantém o cache dos repositórios Git. Gera os manifests finais aplicando templates (Helm, Kustomize).
  • Application Controller: o coração do ArgoCD. Compara continuamente o estado desejado (repo Git) com o estado real (cluster) e dispara sincronizações.
  • Redis: usado para cache do estado e sessões de usuário.
  • Dex/SSO: provedor de autenticação opcional para integração com serviços externos.

Principais Conceitos

Application

O recurso central do ArgoCD. Uma Application define:

  • source: URL do repositório Git, caminho do diretório e a branch/rev a ser seguida.
  • destination: URL do cluster Kubernetes e namespace onde os recursos serão implantados.
  • syncPolicy: define se a sincronização é automática ou manual, e como tratar prunes (remoção de recursos que não estão mais no Git).

Sync (Sincronização)

O processo de sincronização compara os manifests do Git com os recursos atuais no cluster e aplica as diferenças. O ArgoCD oferece três modos de sync:

  • Manual: você decide quando sincronizar.
  • Automático (Auto-Sync): sincroniza automaticamente sempre que detecta drift ou mudanças no Git.
  • Auto-Sync com Prune: além de sincronizar, remove recursos que não existem mais no Git.

Health Status

O ArgoCD avalia a "saúde" de cada recurso implantado com base em regras específicas. Por exemplo, um Deployment é considerado "Healthy" quando todos os Pods estão rodando e prontos. Recursos com saúde ruim são destacados no dashboard com cores vermelhas.

App of Apps Pattern

Para gerenciar múltiplas aplicações, o ArgoCD suporta o padrão App of Apps: uma Application raiz que cria outras Applications. Isso permite gerenciar todo o ecossistema de microsserviços com um único repositório.

Passo a Passo: Instalação e Configuração

1. Instalar o ArgoCD no Cluster

A maneira mais rápida de instalar o ArgoCD é usando os manifests oficiais:

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

2. Acessar o Dashboard

O ArgoCD expõe o API Server via serviço do tipo ClusterIP. Para acessar externamente, use port-forward:

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

Depois acesse https://localhost:8080 no navegador.

A senha inicial do admin é gerada automaticamente e armazenada em um Secret:

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

3. Instalar a CLI do ArgoCD

# Linux (amd64)
curl -sSL -o /usr/local/bin/argocd https://github.com/argoproj/argo-cd/releases/latest/download/argocd-linux-amd64
chmod +x /usr/local/bin/argocd

# Login
argocd login localhost:8080 --username admin --password $SENHA --insecure

4. Criar uma Application

Com a CLI instalada, você pode criar sua primeira aplicação:

argocd app create minha-app \
  --repo https://github.com/meu-usuario/meu-repo.git \
  --path k8s/production \
  --dest-server https://kubernetes.default.svc \
  --dest-namespace production \
  --sync-policy automated

Ou via YAML declarativo:

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: minha-app
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://github.com/meu-usuario/meu-repo.git
    targetRevision: main
    path: k8s/production
  destination:
    server: https://kubernetes.default.svc
    namespace: production
  syncPolicy:
    automated:
      prune: true
      selfHeal: true

5. Sincronização Automática com Webhooks

Para que o ArgoCD sincronize automaticamente ao receber um push no Git, configure webhooks no seu repositório (GitHub, GitLab ou Bitbucket) apontando para a URL do ArgoCD:

# No GitHub: Settings → Webhooks → Payload URL
https://argocd.meu-dominio.com/api/webhook

# Configure o segredo do webhook:
kubectl edit secret argocd-secret -n argocd
# Adicione: webhook.github.secret: $(echo -n "meu-segredo" | base64)

Vantagens do GitOps com ArgoCD

  • Auditabilidade: toda alteração no cluster fica registrada no histórico do Git — quem fez, o que, quando e por quê.
  • Segurança: o operador do ArgoCD tem acesso ao cluster, mas os desenvolvedores interagem apenas via Git e Pull Requests.
  • Recuperação rápida: se algo quebrar, basta reverter o commit no Git — o ArgoCD restaura o estado anterior automaticamente.
  • Consistência entre ambientes: o mesmo manifesto YAML que roda em staging roda exatamente igual em produção.
  • Visibilidade: o dashboard do ArgoCD mostra em tempo real o estado de cada aplicação — saudável, fora de sync, com erro.

ArgoCD vs. Flux CD

O Flux CD é outra ferramenta GitOps para Kubernetes, também da CNCF. A principal diferença é a abordagem:

  • ArgoCD usa o modelo push-based com um operador que consulta o Git periodicamente ou via webhook. Tem dashboard mais maduro e suporte nativo a multi-cluster.
  • Flux CD usa o modelo pull-based com agents instalados em cada cluster que fazem pull do Git. É mais leve e bem integrado com o ecossistema da Weaveworks.

Ambos são excelentes. A escolha depende do seu contexto: ArgoCD para quem precisa de um dashboard robusto e suporte multi-cluster; Flux para quem prefere simplicidade e baixo overhead.

Melhores Práticas

  • Sempre use Auto-Sync com Prune e Self-Heal — o valor real do GitOps está na automação completa.
  • Separe ambientes por branch ou diretório: branch main para produção, staging para homologação, ou k8s/overlays/ com Kustomize.
  • Utilize o App of Apps Pattern para gerenciar conjuntos inteiros de microsserviços com um único repositório.
  • Proteja a branch principal com regras de branch protection no GitHub/GitLab — ninguém faz push direto na main.
  • Configure notificações no ArgoCD para alertar o time sobre falhas de sincronização via Slack, e-mail ou Telegram.
  • Use Kustomize ou Helm para parametrizar seus manifests e evitar duplicação entre ambientes.

Conclusão

O ArgoCD é hoje a ferramenta padrão de fato para GitOps em Kubernetes. Combinado com o modelo declarativo do Git, ele transforma o deploy de aplicações em um processo auditável, automatizado e resiliente.

Se você já usa Kubernetes em produção, adotar o ArgoCD é o próximo passo natural para ter deploys previsíveis, reversões instantâneas e um cluster que sempre reflete exatamente o que está no seu repositório.

Comece com um projeto pequeno, configure o auto-sync, e em pouco tempo você vai se perguntar como vivia sem GitOps.

Craft XP
Craft XP