Este repositório foi criado para demonstrar a instalação e configuração do ArgoCD em um ambiente Kubernetes, junto com uma aplicação em Go. Ele é organizado em passos detalhados, cobrindo desde a instalação do ArgoCD usando Helm até a configuração de sincronização automática e controle de versões no GitOps.
- Instalação do ArgoCD: Guiar na instalação e configuração básica do ArgoCD no cluster.
- Aplicação Go: Introduzir a aplicação em Go, fornecendo instruções para execução local e integração com o ArgoCD.
- GitOps e Primeira Aplicação: Configurar o ArgoCD para gerenciar a aplicação via repositório GitOps.
- Sincronização e Monitoramento: Demonstrar o uso do "auto sync" para facilitar o processo de atualização contínua e gerenciamento de mudanças.
Esse repositório serve como uma referência para implementar práticas de GitOps, utilizando ArgoCD para automação e gestão de deploys em Kubernetes.
- Documentação do repositório de instalação
https://artifacthub.io/packages/helm/argo/argo-cd
- Add repo via helm argocd
helm repo add argo https://argoproj.github.io/argo-helm
- Instalação via helm
helm install argo-cd argo/argo-cd --version 7.6.12 -f values-of.yaml --namespace argocd --create-namespace
- Caso não esteja utilizando ingress, expor a porta
kubectl port-forward service/argo-cd-argocd-server -n argocd 8080:443
- Recuperando a senha
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d
Considerando que você já tem o ingress funcionando no seu cluster
- Acesse via browser
http://dev.goapp.127.0.0.1.nip.io
Usuário padrão é
admin
- Instuções de instalação doc oficial, necessário para intereção via terminal
https://kostis-argo-cd.readthedocs.io/en/refresh-docs/getting_started/install_cli/
- Login via cli expondo a porta
argocd login localhost:8080 --username admin --password changeme
- Exemplos possiveis para login, doc oficial
https://argo-cd.readthedocs.io/en/stable/user-guide/commands/argocd_login/
- Adicionar repositório git no argocd via cli
argocd repo add https://github.com/flowramps/argowave.git --name "argowave" --project testeds --username nonexistant --password changeme --insecure-skip-server-verification --grpc-web --upsert
Listar apps existentes
kubectl get app -n argocd
Observar informações de uma app especifica
argocd app get flow-ramps
Listar repositórios
argocd repo list
Listar projetos
kubectl get appprojects -n argocd
Anotações para testes, label fake
kubectl patch configmap argocd-cm -n argocd --type='merge' -p '{"data": {"globalProjects": "- labelSelector:\n matchExpressions:\n - key: fake.label\n operator: DoesNotExist\n projectName: default"}}'
kubectl rollout restart deployment argo-cd-argocd-server -n argocd
Instale as dependências
go mod download
Compile e execute a aplicação Go localmente
go run main.go
Para o nosso exemplo acima vou utilizar o
Kustomize
, mas pode ser variado dependendo do fluxo do deploy que você estiver criando, podendo ser helm, kustomize, plugin ...
Clique em Create
Agora faça o sync, para que o deploy conclua com sucesso
- Aumente o número de replicas do deployment
kubectl -n flowramps scale deployment goapp --replicas 5
OBS, se estiver utilizando
HPA
como no meu caso, edite oHPA
para surtir efeito das alterações.
Role a barra até o final para localizar o SYN POLICY
e habilite
Ao clicar, irá pedir um ok dizendo, Tem certeza de que deseja habilitar a sincronização automatizada de aplicativos?
Feito isso, o Auto sync estará ativo e você pode esperar ele fazer o processo automatico ou forçar ele da seguinte forma caso esteja ansioso.