Oi, pessoal! Hoje vamos falar sobre ArgoCD e Helm, que são ferramentas poderosas e populares no ecossistema de Kubernetes para realizar deploys e gerenciar configurações de aplicativos. A combinação de ambas possibilita um fluxo de trabalho eficiente e uma maneira fácil de aplicar mudanças nos clusters Kubernetes.

Visão geral

  • ArgoCD: É uma ferramenta de GitOps para Kubernetes que automatiza o deployment de aplicações, mantendo o estado do cluster sincronizado com o repositório Git.
  • Helm: É um gerenciador de pacotes para Kubernetes, que simplifica a criação e a instalação de aplicações no cluster usando charts (modelos de configuração).
ArgoCD e Helm logos

Por que usar ArgoCD com Helm?

O ArgoCD é uma ferramenta de GitOps que permite fazer deploys no Kubernetes usando repositórios Git como fonte de verdade. Ele sincroniza automaticamente o estado do cluster com o que está definido no repositório. Já o Helm é um gerenciador de pacotes para Kubernetes que facilita a instalação e gestão de aplicações usando templates e valores configuráveis, conhecidos como Helm Charts. Quando combinados, você ganha controle e flexibilidade para gerenciar o ciclo de vida de aplicações de forma centralizada e automatizada.

Como Funciona ArgoCD com Helm

  1. Configuração do Repositório: Primeiro, é necessário configurar ArgoCD para se conectar ao repositório Git onde estão os Helm Charts.
  2. Configuração da Aplicação no ArgoCD: ArgoCD permite definir uma aplicação que utiliza Helm Charts. É possível especificar o local do repositório, o caminho do chart e os valores customizados para a instalação.
  3. Deploy e Sincronização: Uma vez configurada a aplicação, ArgoCD aplicará o chart no cluster Kubernetes. Se houver mudanças nos charts ou nos valores, ArgoCD detectará e poderá sincronizar automaticamente, mantendo o ambiente atualizado.

Configurando o ArgoCD para usar Helm

Vamos a um exemplo prático de como configurar o ArgoCD para trabalhar com Helm Charts. Isso envolve definir uma aplicação no ArgoCD que utiliza um Helm Chart, seja do seu próprio repositório ou de uma fonte pública.

Passo 1: Criando um Helm Chart

Caso ainda não tenha um chart configurado, você pode criar um com o comando:

helm create minha-aplicacao

Esse comando gera a estrutura básica do Chart. No diretório minha-aplicacao, você terá pastas e arquivos como templates/, values.yaml, Chart.yaml, que são a base para customizar e parametrizar seu deployment.

Passo 2: Configurando a aplicação no ArgoCD

No ArgoCD, você cria uma aplicação que apontará para o seu Helm Chart no Git, configurando-a para atualizar automaticamente seu cluster. Se você usa o ArgoCD pela interface web ou via YAML, o princípio é o mesmo. Aqui está um exemplo de como configurar uma aplicação no ArgoCD que utiliza um Helm Chart:

piVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: minha-aplicacao
  namespace: argocd
spec:
  project: default
  source:
    repoURL: 'https://github.com/seu-usuario/seu-repositorio'
    targetRevision: main
    path: charts/minha-aplicacao
    helm:
      valueFiles:
        - values.yaml
      parameters:
        - name: replicaCount
          value: "3"
  destination:
    server: 'https://kubernetes.default.svc'
    namespace: default
  syncPolicy:
    automated:
      prune: true
      selfHeal: true

Nesse exemplo:

  • repoURL: o link do repositório Git onde está o Helm Chart.
  • targetRevision: branch ou tag do repositório.
  • path: o caminho no repositório até o Helm Chart.
  • valueFiles: lista dos arquivos de valores do Helm para personalizar o deployment.
  • parameters: parâmetros que sobrescrevem configurações no values.yaml.
  • syncPolicy: configuração para atualizar automaticamente e corrigir discrepâncias no cluster.

Passo 3: Gerenciamento e sincronização

Com o ArgoCD configurado, você pode ver e monitorar o estado da sua aplicação via interface web ou CLI. Ao fazer mudanças no repositório Git (como atualizar o values.yaml), o ArgoCD detectará automaticamente e fará a sincronização, aplicando as alterações no cluster.

Sobrescrevendo parâmetros com ArgoCD

Se você precisa ajustar rapidamente algum valor específico do Helm (como o número de réplicas, sem alterar o arquivo values.yaml), pode sobrescrever parâmetros diretamente no ArgoCD. Isso é útil para mudanças temporárias ou personalizações rápidas.

Por exemplo:

parameters:
  - name: image.tag
    value: "v1.2.3"

Com essa configuração, você define um novo valor para a tag de imagem diretamente no ArgoCD, sem alterar o Helm Chart ou o values.yaml.

Vantagens da integração ArgoCD + Helm

  • Automação GitOps: Com ArgoCD, todas as mudanças feitas no repositório são refletidas automaticamente no ambiente.
  • Facilidade de Customização: Helm facilita a customização e o versionamento dos parâmetros do aplicativo, sendo uma abordagem eficiente para ambientes de múltiplos clusters ou diferentes configurações.
  • Rollback Simplificado: ArgoCD e Helm facilitam o rollback de versões, permitindo um gerenciamento seguro e controlado de releases.

Conclusão

Combinar ArgoCD com Helm é uma ótima escolha para quem quer uma solução robusta de CI/CD no Kubernetes, unindo a flexibilidade dos Helm Charts com a automação e monitoramento GitOps do ArgoCD. Essa dupla pode simplificar bastante a gestão de aplicações, além de proporcionar uma infraestrutura de deploy segura e replicável.

Se você já está usando essa configuração, compartilhe sua experiência! Vamos continuar essa conversa e trocar dicas sobre como otimizar ainda mais nossos workflows no Kubernetes. 🚀

Até a próxima!


Referências:

Helm. Documentação do Helm. Disponível em: https://helm.sh/pt/docs/.

Argo CD. Documentação do Argo CD. Disponível em: https://argo-cd.readthedocs.io/en/stable/.

Share this post