0 XP
Módulo 9 · GitOps com ArgoCD

ArgoCD: instalação, Application e sync

Avançado 45 min+25 XPArgoCDkubectl

Objetivos desta aula

  • Instalar o ArgoCD no cluster
  • Declarar Application
  • Operar sync manual e automático

O ArgoCD roda dentro do cluster e observa repositórios Git. Cada Application define origem (repo, revisão, caminho) e destino (cluster, namespace), além da política de sincronização. Instalar é simples; o valor está em configurar bem a política.

Auto-sync aplica mudanças automaticamente. prune remove recursos que saíram do Git — poderoso e perigoso, porque um caminho errado pode apagar objetos. selfHeal desfaz alterações manuais no cluster, garantindo que o Git prevaleça. Em staging, ligue os três; em produção, muitos times mantêm sync manual ou com janela de aprovação.

Use a interface e a CLI para diagnóstico: status de saúde por recurso, diff entre Git e cluster, histórico de sync e logs do controller. É a visão mais clara de 'o que está rodando' que uma equipe pode ter.

1. Componentes do ArgoCD

  • repo-server: clona o Git e renderiza Helm/Kustomize
  • application-controller: compara o renderizado com o cluster e sincroniza
  • argocd-server: API e interface web

2. O objeto Application

Liga uma source (repo, caminho, revisão) a um destination (cluster, namespace). Status importantes: Synced/OutOfSync (igual ao Git?) e Healthy/Degraded/Progressing (está funcionando?).

3. Políticas de sync

automated aplica sozinho; prune apaga o que saiu do Git; selfHeal desfaz mudanças manuais. Comece com automated em staging e aprovação manual em produção, se o time preferir.

4. Ordem e hooks

sync-wave ordena recursos (CRDs e namespaces antes dos apps); hooks PreSync rodam migrações de banco antes da nova versão.

5. App of Apps e ApplicationSet

Uma Application que cria outras Applications permite subir um cluster inteiro a partir de um único apontamento. O ApplicationSet gera Applications por lista, pastas ou clusters.

6. Acesso e projetos

AppProject limita quais repositórios, clusters e tipos de recurso cada time pode usar. Integre SSO e desative o usuário admin local após configurar.

Na prática

Instalar e declarar a Application

bash

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

kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath='{.data.password}' | base64 -d
kubectl -n argocd port-forward svc/argocd-server 8081:443

argocd login localhost:8081 --username admin --insecure
argocd app list
argocd app get cloudshop-staging
argocd app diff cloudshop-staging
argocd app sync cloudshop-staging
argocd app history cloudshop-staging

Nota de segurança: Troque a senha inicial do admin, habilite SSO quando possível e não exponha o argocd-server publicamente sem autenticação forte.

Application declarativa

yaml

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: cloudshop-staging
  namespace: argocd
spec:
  project: default
  source:
    repoURL: git@github.com:sua-org/cloudshop-gitops.git
    targetRevision: main
    path: overlays/staging
  destination:
    server: https://kubernetes.default.svc
    namespace: cloudshop
  syncPolicy:
    automated:
      prune: true
      selfHeal: true
    syncOptions:
      - CreateNamespace=true
    retry:
      limit: 3
      backoff: { duration: 10s, factor: 2, maxDuration: 2m }

Application da API em staging

yaml

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: api-staging
  namespace: argocd
spec:
  project: cloudshop
  source:
    repoURL: https://github.com/cloudshop/cloudshop-gitops.git
    targetRevision: main
    path: apps/api/overlays/staging
  destination:
    server: https://kubernetes.default.svc
    namespace: cloudshop-staging
  syncPolicy:
    automated: { prune: true, selfHeal: true }
    syncOptions: [CreateNamespace=true]

Operando pela CLI

bash

argocd app list
argocd app get api-staging        # Sync status + Health
argocd app diff api-staging       # o que difere do Git
argocd app sync api-staging
argocd app history api-staging

Por que isso importa

Operar ArgoCD é tarefa concreta de vaga de Platform Engineering.

Erro comum

Ligar prune com caminho errado no repositório e apagar recursos do namespace.

Dica de produção

Produção com sync manual ou aprovação; staging com auto-sync total para feedback rápido.

Alerta de segurança

Repositório privado exige credencial de leitura no ArgoCD; use deploy key restrita.

Pergunta de entrevista

O que fazem prune e selfHeal e quais riscos trazem?

Glossário

Application
Recurso do ArgoCD que liga um caminho do Git a um destino no cluster.
selfHeal
Reverte automaticamente alterações feitas diretamente no cluster.
Application
Recurso do ArgoCD que liga uma fonte Git a um destino no cluster.
selfHeal
Opção que desfaz automaticamente alterações feitas fora do Git.
Sync wave
Número que define a ordem de aplicação dos recursos.
ApplicationSet
Gerador de várias Applications a partir de um modelo.

Conexão com o CloudShop

Criar as Applications de staging e produção do CloudShop.

Quiz da aula

  1. 1. Alguém editou um Deployment com kubectl. Com selfHeal ativo, o que ocorre?

  2. 2. Uma app aparece 'Synced' mas 'Degraded'. O que significa?

  3. 3. Para rodar uma migração de banco antes da nova versão, use:

Minhas anotações

Salvo automaticamente neste navegador.

AnteriorPróxima