SENTINEL Tecnologia
DevOps18 de março de 20268 min

GitOps com ArgoCD: deploy contínuo sem kubectl apply

Setup do ArgoCD, app-of-apps pattern, sync strategies e como implementar GitOps de verdade em clusters Kubernetes.

GitOpsArgoCDKubernetesCI/CD

Se sua equipe ainda faz deploy com `kubectl apply` manual ou scripts imperativo, você está perdendo rastreabilidade, auditoria e a capacidade de rollback instantâneo. GitOps com ArgoCD resolve isso de forma elegante.

O que é GitOps

GitOps é um paradigma operacional onde o Git é a single source of truth para o estado desejado da infraestrutura e aplicações. O ArgoCD monitora repositórios Git e sincroniza automaticamente o cluster Kubernetes com o estado declarado.

Princípios GitOps:

  • Estado desejado versionado no Git
  • Mudanças via Pull Request (auditável)
  • Reconciliação automática (drift detection)
  • Sistema declarativo (não imperativo)
  • Instalando ArgoCD

    ```bash

    helm repo add argo https://argoproj.github.io/argo-helm

    helm install argocd argo/argo-cd \

    --namespace argocd \

    --create-namespace \

    --set server.service.type=LoadBalancer \

    --set configs.params.server.insecure=true

    kubectl -n argocd get secret argocd-initial-admin-secret \

    -o jsonpath="{.data.password}" | base64 -d

    ```

    Criando uma Application

    ```yaml

    apiVersion: argoproj.io/v1alpha1

    kind: Application

    metadata:

    name: api-producao

    namespace: argocd

    spec:

    project: default

    source:

    repoURL: https://github.com/empresa/k8s-manifests.git

    targetRevision: main

    path: apps/api/overlays/producao

    destination:

    server: https://kubernetes.default.svc

    namespace: producao

    syncPolicy:

    automated:

    prune: true

    selfHeal: true

    syncOptions:

  • CreateNamespace=true
  • ```

    App-of-Apps Pattern

    Para gerenciar dezenas de aplicações, use o pattern App-of-Apps: uma Application raiz que gerencia todas as outras.

    ```yaml

    apiVersion: argoproj.io/v1alpha1

    kind: Application

    metadata:

    name: root-app

    namespace: argocd

    spec:

    project: default

    source:

    repoURL: https://github.com/empresa/k8s-manifests.git

    path: apps

    targetRevision: main

    destination:

    server: https://kubernetes.default.svc

    namespace: argocd

    ```

    Cada subdiretório em `apps/` contém a definição de uma Application. O ArgoCD descobre e gerencia todas automaticamente.

    Sync Strategies

    Auto-sync: o ArgoCD aplica mudanças automaticamente quando detecta diff entre Git e cluster. Ideal para ambientes de dev/staging.

    Manual sync: mudanças são detectadas mas não aplicadas automaticamente. A equipe precisa aprovar via UI ou CLI. Recomendado para produção.

    Self-heal: se alguém alterar um recurso diretamente no cluster (kubectl edit), o ArgoCD reverte para o estado do Git.

    ```bash

    argocd app sync api-producao --prune

    argocd app diff api-producao

    ```

    Kustomize + ArgoCD

    ArgoCD suporta Kustomize nativamente. Organize seus manifests com overlays por ambiente:

    ```

    apps/api/

    ├── base/

    │ ├── deployment.yaml

    │ ├── service.yaml

    │ └── kustomization.yaml

    └── overlays/

    ├── dev/

    ├── staging/

    └── producao/

    ```

    Rollback instantâneo

    Com GitOps, rollback é um `git revert`. O ArgoCD detecta a mudança e sincroniza automaticamente. Sem scripts, sem SSH nos servidores, sem comandos manuais.

    Conclusão

    GitOps com ArgoCD elimina deploy manual, garante auditoria completa via Git history, detecta drift automaticamente e oferece rollback em segundos. É o padrão operacional para Kubernetes em produção.

    Precisa de ajuda com DevOps?

    Consultoria especializada com resultados mensuraveis. Fale com um especialista sem compromisso.

    Artigos relacionados

    Receba insights de TI no seu email

    Artigos praticos sobre Cloud, FinOps, IA e estrategia de TI. Sem spam.

    Ganhe o guia "Checklist de Otimizacao Cloud" ao se inscrever

    Cancele a qualquer momento.