Desafio 5: ApplicationSet com Cluster Generator Dinâmico
Criar um ApplicationSet que descobre clusters automaticamente e faz deploy de uma aplicação em todos eles, sem precisar editar o manifesto quando novos clusters são adicionados.
O workshop base usa o List Generator no ApplicationSet - você define uma lista estática de clusters no YAML. Funciona, mas não escala: cada novo cluster exige uma edição manual.
O Cluster Generator resolve isso. Ele consulta os clusters registrados no ArgoCD e gera Applications automaticamente para cada um. Você pode filtrar por labels para controlar quais clusters recebem qual aplicação.
No EKS Capabilities, os clusters são registrados via Kubernetes Secrets com a label argocd.argoproj.io/secret-type: cluster. O Cluster Generator lê esses secrets e usa os metadados como parâmetros no template.
- Dois clusters registrados no ArgoCD com labels diferentes:
env: stagingeenv: prod - ApplicationSet usando Cluster Generator que filtra por label
env: staging - Deploy da aplicação
guestbookapenas nos clusters de staging - Quando um novo cluster staging for registrado, o deploy deve acontecer automaticamente
Crie os secrets de registro dos dois clusters e o ApplicationSet com Cluster Generator filtrado por label. Valide que apenas o cluster staging recebe a aplicação.
Dica: O Cluster Generator usa spec.generators[].clusters.selector.matchLabels para filtrar. As labels do secret do cluster ficam disponÃveis como {{.metadata.labels.env}} no template.
- Usar Matrix Generator para combinar clusters com ambientes (dev/staging/prod)
- Adicionar Git Generator para descobrir aplicações automaticamente por diretório no repositório
- Implementar ApplicationSet com Pull Request Generator para preview environments