Skip to content

Latest commit

 

History

History
211 lines (130 loc) · 6.46 KB

README.md

File metadata and controls

211 lines (130 loc) · 6.46 KB

ArgoCD

image

Objetivo

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.

  1. Instalação do ArgoCD: Guiar na instalação e configuração básica do ArgoCD no cluster.
  2. Aplicação Go: Introduzir a aplicação em Go, fornecendo instruções para execução local e integração com o ArgoCD.
  3. GitOps e Primeira Aplicação: Configurar o ArgoCD para gerenciar a aplicação via repositório GitOps.
  4. 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.

Passo 01 - Instalação do ArgoCD

  • 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

ArgoCD via CLI

  • 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

Passo 02 - Conhecendo nossa aplicação em GO

Instale as dependências

go mod download

Compile e execute a aplicação Go localmente

go run main.go

Passo 03 - Conhecendo nosso repositório do GitOps

Passo 04 - Configurando nossa primeira App no ArgoCD

Configurando uma nova App

New App image

General image

Source image

Destination image

Kustomize image

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 image

Passo 05 - Simular alterações com o auto sync desabilitado.

  • 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 o HPA para surtir efeito das alterações.

  • Veja o argo OutOfSync image

  • App Diff image

Passo 06 - Habilitando auto sync

image

image

image

Role a barra até o final para localizar o SYN POLICY e habilite image

Ao clicar, irá pedir um ok dizendo, Tem certeza de que deseja habilitar a sincronização automatizada de aplicativos? image

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. image