Skip to content

fabioaragao/gitops-argocd

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GitOps com ArgoCD

Demonstração de GitOps profissional com ArgoCD em cluster Kind local. Usa App of Apps + ApplicationSet com directory generator para gerenciar múltiplos ambientes (dev/staging/prod) automaticamente a partir do Git.

Arquitetura

Git Repository (fonte da verdade)
        │
        ▼
   ArgoCD (namespace: argocd)
        │
        ▼
   Root App (App of Apps)
   apps/root-app.yaml
        │
        ▼
   ApplicationSet (directory generator)
   apps/children/appset-podinfo.yaml
   escaneia: environments/*/podinfo/
        │
        ├──▶ podinfo-dev      (v6.0.0, 1 replica)  → namespace: podinfo-dev
        ├──▶ podinfo-staging  (v6.3.0, 2 replicas) → namespace: podinfo-staging
        └──▶ podinfo-prod     (v6.7.0, 3 replicas) → namespace: podinfo-prod

Pré-requisitos

Uso

# Clonar o repositório
git clone https://github.com/fabioaragao/gitops-argocd
cd gitops-argocd

# Executar o setup (idempotente)
./scripts/setup.sh

O script:

  1. Cria o cluster Kind portfolio
  2. Instala ArgoCD via Helm
  3. Aplica o Root App — ArgoCD assume o controle de tudo a partir daqui

Acessando as UIs

# ArgoCD
kubectl port-forward svc/argocd-server -n argocd 8080:443
# Acesse: http://localhost:8080
# Usuário: admin  |  Senha: exibida no final do setup.sh

# podinfo dev
kubectl port-forward svc/podinfo -n podinfo-dev 9898:9898
# Acesse: http://localhost:9898

# podinfo staging
kubectl port-forward svc/podinfo -n podinfo-staging 9899:9898
# Acesse: http://localhost:9899

# podinfo prod
kubectl port-forward svc/podinfo -n podinfo-prod 9900:9898
# Acesse: http://localhost:9900

Demonstração GitOps

Promover versão no ambiente prod

# 1. Editar environments/prod/podinfo/Chart.yaml
#    Mudar: version: "6.7.0"  →  version: "6.7.3"
#    E a linha: version: "6.7.0"  →  version: "6.7.3"  (em dependencies)

# 2. Editar environments/prod/podinfo/values.yaml
#    Mudar: tag: "6.7.0"  →  tag: "6.7.3"

# 3. Commitar e fazer push
git add environments/prod/podinfo/
git commit -m "chore: promote podinfo v6.7.3 to prod"
git push

# 4. Observar o ArgoCD sincronizar automaticamente (~30s)
kubectl get applications -n argocd --watch

Na UI do ArgoCD, a Application podinfo-prod passará de SyncedOutOfSyncSynced.

Adicionar novo ambiente

Ver: docs/adding-environments.md

Estrutura do Repositório

.
├── argocd/
│   └── install-values.yaml    # Helm values do ArgoCD
├── apps/
│   ├── root-app.yaml          # App of Apps (único apply manual)
│   └── children/
│       └── appset-podinfo.yaml # ApplicationSet com directory generator
├── environments/
│   ├── dev/podinfo/           # Chart.yaml + values.yaml (v6.0.0, 1 replica)
│   ├── staging/podinfo/       # Chart.yaml + values.yaml (v6.3.0, 2 replicas)
│   └── prod/podinfo/          # Chart.yaml + values.yaml (v6.7.0, 3 replicas)
├── scripts/
│   └── setup.sh               # Setup idempotente
└── docs/
    └── adding-environments.md # Como adicionar novos ambientes

Limpeza

# Remover o cluster (preserva o código local)
kind delete cluster --name portfolio

About

GitOps com ArgoCD: App of Apps + ApplicationSet multi-environment (dev/staging/prod) em Kind

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages