ArgoCD e GitOps
Falando um pouco sobre GitOps
GitOps é uma prática de gerenciamento de infraestrutura e implantação de aplicativos que aproveita os recursos e o controle de versão fornecidos pelo sistema de controle de versão Git. A principal ideia por trás do GitOps é usar o Git como a fonte de verdade para a configuração da infraestrutura e das implantações de aplicativos.
O GitOps é particularmente eficaz em ambientes de contêineres e orquestradores como o Kubernetes, onde a configuração da aplicação e da infraestrutura é expressa como código YAML e gerenciada por meio de arquivos de manifesto versionados no Git. Ele oferece uma abordagem eficiente e controlada para gerenciar a infraestrutura e as implantações de aplicativos em ambientes modernos de desenvolvimento e operações.
Alguns pontos importantes do GitOps
Infraestrutura como Código (IaC): GitOps promove a ideia de tratar a infraestrutura como código, o que significa que as configurações de infraestrutura são expressas em arquivos de código e versionadas no Git. Isso facilita o controle de versão, colaboração e replicação do ambiente em diferentes estágios.
Git como Fonte de Verdade: No GitOps, o repositório Git é considerado a fonte de verdade para o estado desejado da infraestrutura e das implantações de aplicativos. Todas as mudanças são refletidas no Git antes de serem aplicadas no ambiente real.
Declarativo em Vez de Imperativo: O GitOps adota uma abordagem declarativa em vez de imperativa. Em vez de especificar passos detalhados para realizar uma alteração, você declara o estado desejado e deixa a ferramenta de GitOps garantir que o estado real corresponda ao estado declarado.
Automação e Sincronização Contínua: As ferramentas de GitOps automatizam o processo de sincronização entre o repositório Git e o ambiente de implantação. Isso significa que as alterações no Git são automaticamente refletidas no ambiente, mantendo a consistência e eliminando a necessidade de intervenção manual.
Implantações Contínuas (CI/CD): O GitOps é frequentemente integrado a pipelines de integração contínua/entrega contínua (CI/CD). Isso permite a automação completa desde a verificação de código até a implantação no ambiente de produção, com todas as alterações refletidas no Git.
Observabilidade e Rollback: A prática de GitOps também enfatiza a importância da observabilidade. Os estados e alterações no ambiente são registrados e podem ser revertidos facilmente em caso de problemas, permitindo um processo de rollback suave.
Agora vamos falar sobre o ArgoCD
O Argo CD é uma ferramenta de código aberto dedicada ao gerenciamento que facilita a implantação automatizada e declarativa de aplicativos. Com integração direta ao Git, possibilita o controle e a manutenção atualizados das configurações de implantação. Algumas das funcionalidades destacadas do Argo CD compreendem:
Sincronização contínua: monitora automaticamente as alterações no repositório Git e atualiza o ambiente de implantação em conformidade.
Implantação declarativa: define o estado desejado do aplicativo em um arquivo YAML e permite que o Argo CD mantenha o estado de implantação atualizado de acordo com as alterações realizadas no Git.
Rollback automatizado: permite que você reverta rapidamente para uma versão anterior do aplicativo em caso de erro.
Multi-cluster: suporta implantações em múltiplos clusters Kubernetes, permitindo uma gerenciamento centralizado da configuração de implantação.
Resumidamente, o Argo CD é uma ferramenta que automatiza o processo de implantação de aplicativos, assegurando que o estado de implantação esteja sempre atualizado conforme as modificações realizadas no Git.
Passos para utilizar ArgoCD com Kubernetes
Instalando ArgoCD
Após estar conectado no cluster kubernetes, execute os passos.
kubectl create namespace argocd
kubectl apply -n argocd \
-f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yamlEsse passo acima irá criar um namespace e irá criar todos os objetos necessários para o ArgoCD trabalhar no nosso cluster.
Port-Forward Kubernetes
O kubernetes tem um recurso muito legal que se chama port-forward, ele redireciona uma aplicação do kubernetes para um porta local, execute o comando abaixo:
kubectl -n argocd port-forward svc/argocd-server -n argocd 8080:443Após a execução do comando, tente acessar o ArgoCD no https://localhost:8080, se voce tiver algum problema para acessar nessa porta pode trocar para outra porta.
Get William Nascimento’s stories in your inbox
Join Medium for free to get updates from this writer.
Para entrar no ArgoCD é preciso executar esse comando abaixo para obter a senha do admin.
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -dImplantação Contínua
Após efetuar login no ArgoCD, você fará a sua primeira implantação de uma aplicação, como vemos a abaixo:
Clique em New App
Application Name — Aqui eu informo o nome do repositório da minha aplicação.
Ex: url do repositório: https://github.com/willamnascimento/back-end-rcc-manager
Application Name: back-end-rcc-manager
Project — Eu deixo ele como default
Sync Policy — Aqui podemos escolher entre Manual ou Automatic.
Manual -> Essa opção depende da nossa ação para atualizar a nossa aplicação, acho essa opção muito segura e bem importante.
Automatic -> Essa opção vai atualizar a nossa aplicação conforme houver modificações no nosso repositório git.
Repository URL — Aqui informamos o nosso repositório que é a fonte da verdade
Revision — manter a revisão como está HEAD
Path — O Path é onde estão os nosso arquivos de kubernetes como:
- deployment.yaml
- service.yaml
No meu caso eu sempre tenho uma pasta na raiz do meu projeto chamado k8s ou kubernetes.
Cluster — Esse campo já vai vir preenchido, manter como está
Namespace — Aqui é o namespace que vai ser implantado a aplicação no kubernetes, eu sugiro criar um namespace para cada aplicação isso ajuda na divisão lógica do cluster.
Na minha versão que utilizo em produção, eu uso o Kustomize para alterar o arquivos do kubernetes
Conclusão
Eu ja tinha ouvido falar sobre o ArgoCD em uma empresa onde trabalhei e achei bem interessante, hoje eu faço o gerencimento de 4 aplicações backend e frontend pelo ArgoCD ele me ajuda bastante nas implantações e rollback das aplicações.









