GitOps é uma abordagem de DevOps que utiliza o Git como única fonte de verdade para a infraestrutura e aplicações. Com o GitOps, todas as alterações na infraestrutura e nas aplicações são feitas, por exemplo, através de pull requests no repositório Git, permitindo um controle de versão completo e auditável.
ArgoCD é uma ferramenta de entrega contínua (CD) para Kubernetes que permite implementar práticas de GitOps. Ele monitora repositórios Git e aplica automaticamente as alterações no cluster Kubernetes, garantindo que o estado desejado da aplicação esteja sempre em sincronia com o estado real.
Helm é um gerenciador de pacotes para Kubernetes que facilita a instalação e o gerenciamento de aplicações no cluster. Ele utiliza charts, que são pacotes pré-configurados de recursos do Kubernetes, permitindo uma instalação rápida e fácil de aplicações complexas.
Kustomize é uma ferramenta de personalização de manifestos do Kubernetes que permite criar e gerenciar configurações específicas para diferentes ambientes (desenvolvimento, teste, produção) sem duplicar os manifestos. Ele utiliza arquivos de configuração YAML para aplicar patches e sobreposições nos manifestos existentes.
O objetivo deste projeto é exemplificar o uso de GitOps para deploy automatizado e versionado de aplicações no Kubernetes, utilizando o ArgoCD como ferramenta principal de entrega contínua. São utilizados Helm e Kustomize para gerenciamento e customização dos manifestos.
-
Instale o ArgoCD no cluster Kubernetes (caso ainda não tenha):
kubectl create namespace argocd kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
-
Crie um novo Application no ArgoCD apontando para este repositório e o caminho desejado (
giropops-senhas/helm
,giropops-senhas/kustomization
ourandom-logger/helm
).
- giropops-senhas: Aplicação principal, com dependência Redis, disponível para deploy via Helm ou Kustomize.
- random-logger: Aplicação de exemplo para geração de logs aleatórios, deploy via Helm.
- Helm: Edite os arquivos
values.yaml
para customizar imagens, réplicas, portas e variáveis de ambiente. - Kustomize: Modifique o
kustomization.yaml
para adicionar labels, patches ou alterar recursos.
Contribuições são bem-vindas!
Para contribuir, faça um fork deste repositório, crie uma branch com sua feature ou correção e abra um Pull Request.
Este projeto está licenciado sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.