Skip to content

flowramps/argowave

Repository files navigation

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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published