O ApplicationSet simplifica a orquestração de aplicações em vários clusters: a partir de um único modelo e gerador, cria automaticamente uma ou mais Argo CD Applications. Este tópico explica como usar um ApplicationSet para criar várias aplicações.
Use esta abordagem quando:
Implantações multiambiente: for necessário implantar a mesma aplicação em produção e staging com configurações específicas por ambiente.
Complementos de cluster: precisar instalar ferramentas compartilhadas (monitoramento, logs, ingress) em um conjunto de clusters.
Implantações self-service: quiser permitir que as equipes implantem nos clusters sob sua responsabilidade sem modificar configurações compartilhadas.
Como funciona
O controlador do ApplicationSet processa o manifesto em quatro etapas:
O gerador produz parâmetros de chave-valor. No gerador List, cada elemento se torna um conjunto de parâmetros.
Os parâmetros são substituídos no modelo, uma vez para cada conjunto de parâmetros.
Cada modelo renderizado se transforma em um recurso Argo CD Application.
O controlador do Argo CD detecta os novos recursos Application e gerencia o ciclo de vida de sincronização.
Pré-requisitos
Antes de começar, verifique se você tem:
O kubectl instalado com kubeconfig para a instância ACK One Fleet de destino. Caminho padrão:
~/.kube/config.
Implante um ApplicationSet
Este exemplo implanta o echo-server em dois clusters (produção e staging), cada um com seu próprio subdiretório de manifestos para configuração específica do ambiente.
Estrutura do repositório:
.
├── Dockerfile
├── go.mod
├── go.sum
├── main.go
└── manifests
└── directory
├── production
│ ├── deployment.yaml
│ └── service.yaml
└── staging
├── deployment.yaml
└── service.yaml
Crie o manifesto do ApplicationSet
Crie o arquivo applicationset.yaml com o seguinte conteúdo.
O gerador List define dois conjuntos de parâmetros, um por cluster. Os valores {{cluster}} e {{url}} são substituídos no modelo e geram duas Applications: production-echo-server e staging-echo-server. Cada uma aponta para o subdiretório de manifestos do respectivo ambiente.
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
name: echo-server
spec:
generators:
- list:
elements:
- cluster: production
url: https://47.91.XX.XX:6443
- cluster: staging
url: https://47.111.XX.XX:6443
# To add more clusters, append another element here:
# - cluster: <cluster-name>
# url: <cluster-api-server-url>
template:
metadata:
name: '{{cluster}}-echo-server'
spec:
project: default
source:
repoURL: https://code.aliyun.com/shuwei.hsw/echo-server.git
targetRevision: main
path: manifests/directory/{{cluster}}
destination:
server: '{{url}}'
namespace: multi-echo-server
Aplique o ApplicationSet
kubectl -n argocd apply -f applicationset.yaml
Verifique a criação das aplicações
kubectl -n argocd get application
Saída esperada:
NAME SYNC STATUS HEALTH STATUS
production-echo-server OutOfSync Missing
staging-echo-server OutOfSync Missing
O status OutOfSync indica que as Applications existem, mas ainda não foram implantadas.
Sincronize as aplicações
argocd app sync production-echo-server staging-echo-server
Verifique o acesso
Teste o acesso a cada ambiente após a conclusão da sincronização.
Cluster Production (echo-server v1.0):
curl XX.XX.XX.XX:8080/version
Saída esperada:
"Hello Echo Server v1.0"
Cluster Staging (echo-server v2.0):
curl XX.XX.XX.XX:8080/version
Saída esperada:
"Hello Echo Server v2.0"
Substitua XX.XX.XX.XX pelo IP externo do Service echo-server em cada cluster.
Próximos passos
O Argo CD oferece suporte a geradores de ApplicationSet adicionais (Cluster, Git, Matrix, entre outros). Comece pelos geradores List e Cluster.
Consulte a especificação completa do ApplicationSet.