GitOps: Flux vs Argo CD

GitOps é uma metodologia de desenvolvimento e operações de software que utiliza o Git como fonte de verdade para configurações de implantação. Ela envolve manter o estado desejado de um aplicativo ou infraestrutura em um repositório Git e usar fluxos de trabalho baseados em Git para gerenciar e implantar mudanças. Duas ferramentas de código aberto populares que ajudam as organizações a implementar GitOps para gerenciar seus aplicativos Kubernetes são Flux e Argo CD. Neste artigo, vamos dar uma olhada mais de perto nessas ferramentas, seus prós e contras, e como configurá-las. Leia o tutorial relacionado do DZone sobre como automatizar pipelines CI/CD com Jenkins e Kubernetes.

Casos de Uso Comuns para Flux e Argo CD

Flux

  • Entrega contínua: Flux pode ser usado para automatizar o pipeline de implantação e garantir que as alterações sejam implantadas automaticamente assim que forem enviadas para o repositório Git.
  • Gerenciamento de configuração: Flux permite que você armazene e gerencie a configuração do seu aplicativo como código, facilitando o controle de versão e rastreamento de mudanças.
  • Infraestrutura imutável: Flux ajuda a impor uma abordagem de infraestrutura imutável—onde as mudanças são feitas apenas através do repositório Git e não através de intervenção manual no cluster.
  • Implantações blue-green: Flux suporta implantações blue-green onde uma nova versão de uma aplicação é implantada ao lado da versão existente, e o tráfego é gradualmente transferido para a nova versão.

Argo CD

  • Implantação contínua: Argo CD pode ser usado para automatizar o processo de implantação, garantindo que as aplicações estejam sempre atualizadas com as últimas mudanças do repositório Git.
  • Promoção de aplicação: Argo CD suporta promoção de aplicação—onde aplicações podem ser promovidas de um ambiente para outro. Por exemplo, de desenvolvimento para produção.
  • Gerenciamento multi-cluster: Argo CD pode ser usado para gerenciar aplicações em vários clusters, garantindo que o estado desejado das aplicações seja consistente em todos os clusters.
  • Gerenciamento de rollback: Argo CD fornece capacidades de rollback, facilitando a reversão de mudanças em caso de falhas.

A escolha entre as duas ferramentas depende dos requisitos específicos da organização e do aplicativo, mas ambas oferecem uma abordagem GitOps para simplificar o processo de implantação e reduzir o risco de erros manuais. Ambas têm seus prós e contras, e neste artigo, vamos analisar o que são e como configurá-las.

O que é Flux?

Flux é uma ferramenta GitOps que automatiza a implantação de aplicativos no Kubernetes. Ele funciona monitorando continuamente o estado de um repositório Git e aplicando quaisquer alterações em um cluster. Flux se integra a vários provedores Git, como GitHub, GitLab e Bitbucket. Quando são feitas alterações no repositório, Flux as detecta automaticamente e atualiza o cluster de acordo. Tutorial Relacionado: Como implantar automaticamente aplicativos Spring Boot usando o GitLab CI/CD.

Vantagens do Flux

  • Implantações automatizadas: Flux automatiza o processo de implantação, reduzindo erros manuais e liberando desenvolvedores para se concentrarem em outras tarefas.
  • Fluxo de trabalho baseado em Git: Flux utiliza o Git como fonte de verdade, o que facilita o rastreamento e a reversão de alterações.
  • Configuração declarativa: Flux usa manifests Kubernetes para definir o estado desejado de um cluster, facilitando a gestão e o rastreamento de alterações.

Contras do Flux

  • Personalização limitada: O Flux suporta apenas um conjunto limitado de personalizações, o que pode não ser adequado para todos os casos de uso.
  • Curva de aprendizado acentuada: O Flux possui uma curva de aprendizado acentuada para novos usuários e requer uma compreensão profunda do Kubernetes e do Git.

Como Configurar o Flux

Pré-requisitos

  • A running Kubernetes cluster.
  • Helm instalado na sua máquina local.
  • A Git repository for your application’s source code and Kubernetes manifests.
  • A URL do repositório e uma chave SSH para o repositório Git.

Passo 1: Adicionar o Repositório Helm do Flux

O primeiro passo é adicionar o repositório Helm do Flux à sua máquina local. Execute o seguinte comando para adicionar o repositório:

Shell

 

helm repo add fluxcd https://charts.fluxcd.io

Passo 2: Instalar o Flux

Agora que o repositório Helm do Flux foi adicionado, você pode instalar o Flux no cluster. Execute o seguinte comando para instalar o Flux:

Shell

 

helm upgrade -i flux fluxcd/flux \
--set [email protected]:/.git \
--set git.path= \
--set git.pollInterval=1m \
--set git.ssh.secretName=flux-git-ssh

No comando acima, substitua os valores de espaço reservado pelas informações do seu repositório Git. O parâmetro git.url é a URL do repositório Git, o parâmetro git.path é o caminho para o diretório contendo os manifests do Kubernetes, e o parâmetro git.ssh.secretName é o nome do segredo SSH contendo a chave SSH para o repositório.

Passo 3: Verificar a Instalação

Após executar o comando acima, você pode verificar a instalação verificando o status dos pods do Flux. Execute o seguinte comando para visualizar os pods:

Shell

 

kubectl get pods -n <flux-namespace>

Se os pods estiverem em execução, o Flux foi instalado com sucesso.

Etapa 4: Conectar o Flux ao seu Repositório Git

O passo final é conectar o Flux ao seu repositório Git. Execute o seguinte comando para gerar uma chave SSH e criar um segredo:

Shell

 

ssh-keygen -t rsa -b 4096 -f id_rsa
kubectl create secret generic flux-git-ssh \
--from-file=id_rsa=./id_rsa --namespace=

No comando acima, substitua o espaço reservado <flux-namespace> pelo namespace onde o Flux está instalado.

Agora, adicione a chave pública gerada como uma chave de implantação em seu repositório Git.

Você configurou o Flux usando Helm com sucesso. Sempre que houver alterações no repositório Git, o Flux as detectará e atualizará o cluster conforme necessário.

Em conclusão, configurar o Flux usando Helm é um processo bastante simples. Ao usar o Git como fonte de verdade e monitorar continuamente o estado do cluster, o Flux ajuda a simplificar o processo de implantação e reduzir o risco de erros manuais.

O que é o Argo CD?

O Argo CD é uma ferramenta de código aberto de GitOps que automatiza o部署 de aplicativos no Kubernetes. Permite que os desenvolvedores gerenciem declarativamente seus aplicativos e mantém o estado desejado dos aplicativos alinhado com o estado ativo. O Argo CD se integra a repositórios Git e monitora continuamente por mudanças. Sempre que são detectadas alterações, o Argo CD as aplica ao cluster, garantindo que o aplicativo esteja sempre atualizado. Com o Argo CD, as organizações podem automatizar seu processo de部署, reduzir o risco de erros manuais e se beneficiar das capacidades de controle de versão do Git. O Argo CD oferece uma interface gráfica do usuário e uma interface de linha de comando, facilitando o uso e gerenciamento de aplicativos em escala.

Vantagens do Argo CD

  • Recursos avançados de部署: O Argo CD proporciona recursos avançados de部署, como atualizações em rolagem e deployments canários, facilitando o gerenciamento de deployments complexos.
  • Interface amigável: O Argo CD oferece uma interface amigável que facilita o gerenciamento de deployments, especialmente para usuários não técnicos.
  • Personalizável: O Argo CD permite maior personalização, facilitando a adequação da ferramenta a casos de uso específicos.

Desvantagens do Argo CD

  • Curva de aprendizado íngreme: O Argo CD possui uma curva de aprendizado íngreme para novos usuários e requer uma profunda compreensão do Kubernetes e do Git.
  • Complexidade: O Argo CD possui uma arquitetura mais complexa do que o Flux, o que pode torná-lo mais difícil de gerenciar e solucionar problemas.

Como Configurar o Argo CD

O Argo CD pode ser instalado em um cluster Kubernetes usando o Helm, um gerenciador de pacotes para Kubernetes. Nesta seção, vamos passar pelos passos para configurar o Argo CD usando o Helm.

Pré-requisitos

  • A running Kubernetes cluster.
  • Helm instalado na sua máquina local.
  • A Git repository for your application’s source code and Kubernetes manifests.

Passo 1: Adicionar o Repositório Helm do Argo CD

O primeiro passo é adicionar o repositório Helm do Argo CD à sua máquina local. Execute o seguinte comando para adicionar o repositório:

Shell

 

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

Passo 2: Instalar o Argo CD

Agora que o repositório Helm do Argo CD foi adicionado, você pode instalar o Argo CD no cluster. Execute o seguinte comando para instalar o Argo CD:

Shell

 

helm upgrade -i argocd argo/argo-cd --set server.route.enabled=true

Passo 3: Verificar a Instalação

Após executar o comando acima, você pode verificar a instalação verificando o status dos pods do Argo CD. Execute o seguinte comando para visualizar os pods:

Shell

 

kubectl get pods -n argocd

Se os pods estiverem em execução, o Argo CD foi instalado com sucesso.

Passo 4: Conectar o Argo CD ao Seu Repositório Git

O passo final é conectar o Argo CD ao seu repositório Git. O Argo CD fornece uma interface gráfica que você pode usar para criar aplicativos e conectar-se ao seu repositório Git.

Para acessar a interface do Argo CD, execute o seguinte comando para obter a URL:

Shell

 

kubectl get routes -n argocd

Use a URL em um navegador web para acessar a interface do Argo CD.

Uma vez na interface, você pode criar uma nova aplicação fornecendo a URL do repositório Git e o caminho para os manifestos do Kubernetes. O Argo CD monitorará continuamente o repositório em busca de alterações e as aplicará ao cluster.

Agora você configurou com sucesso o Argo CD usando o Helm.

Conclusão

Kubernetes e DevOps são parte fundamental do ciclo de vida do desenvolvimento de software, e o GitOps é uma abordagem valiosa para automatizar a implantação e o gerenciamento de aplicações no Kubernetes. O Flux e o Argo CD são duas ferramentas populares de GitOps que oferecem uma maneira simples e eficiente de automatizar o processo de implantação, impor uma infraestrutura imutável e gerenciar aplicações de forma consistente e previsível.

O Flux se concentra em automatizar o pipeline de implantação e fornecer gerenciamento de configuração como código, enquanto o Argo CD oferece uma solução GitOps mais completa, incluindo recursos como gerenciamento de multi-cluster, promoção de aplicações e gerenciamento de rollback. Ambas as ferramentas têm suas próprias forças e fraquezas, e a escolha entre elas dependerá das necessidades específicas da organização e da aplicação.

Independentemente da ferramenta escolhida, o GitOps oferece uma abordagem valiosa para simplificar o processo de implantação e reduzir o risco de erros manuais. Ao manter o estado desejado dos aplicativos sincronizado com o repositório Git, o GitOps garante que as alterações sejam feitas de forma consistente e previsível, resultando em um processo de implantação mais confiável e eficiente.

Source:
https://dzone.com/articles/gitops-flux-vs-argo-cd