Tous les produits
Search
Centre de documentation

Container Service for Kubernetes:Create multiple applications with an ApplicationSet

Dernière mise à jour :Aug 11, 2026

ApplicationSet simplifie l'orchestration des applications multi-clusters : à partir d'un modèle et d'un générateur uniques, il crée automatiquement une ou plusieurs applications Argo CD. Cette rubrique explique comment utiliser un ApplicationSet pour créer plusieurs applications.

Utilisez cette approche dans les cas suivants :

  • Déploiements multi-environnements : Déployez la même application en production et en préproduction avec des configurations spécifiques à chaque environnement.

  • Modules complémentaires de cluster : Installez des outils partagés (surveillance, journalisation, ingress) sur un parc de clusters.

  • Déploiements en libre-service : Permettez aux équipes de déployer vers les clusters qu'elles possèdent sans modifier la configuration partagée.

Fonctionnement

Le contrôleur ApplicationSet traite votre manifeste en quatre étapes :

  1. Le générateur produit des paramètres clé-valeur. Avec le générateur List, chaque élément devient un ensemble de paramètres.

  2. Les paramètres sont injectés dans le modèle, une fois par ensemble de paramètres.

  3. Chaque modèle généré devient une ressource Application Argo CD.

  4. Le contrôleur Argo CD détecte les nouvelles ressources Application et gère leur cycle de vie de synchronisation.

Prérequis

Avant de commencer, assurez-vous de disposer des éléments suivants :

  • Connexion au système GitOps.

  • kubectl installé avec un kubeconfig pour l'instance ACK One Fleet cible. Chemin par défaut : ~/.kube/config.

Déployer un ApplicationSet

Cet exemple déploie echo-server sur deux clusters (production et staging). Chaque cluster dispose de son propre sous-répertoire de manifestes pour la configuration spécifique à l'environnement.

Structure du référentiel :

.
├── Dockerfile
├── go.mod
├── go.sum
├── main.go
└── manifests
    └── directory
        ├── production
        │   ├── deployment.yaml
        │   └── service.yaml
        └── staging
            ├── deployment.yaml
            └── service.yaml

Créer le manifeste ApplicationSet

Créez applicationset.yaml avec le contenu suivant.

Le générateur List définit deux ensembles de paramètres, un par cluster. Les variables {{cluster}} et {{url}} sont injectées dans le modèle, ce qui produit deux applications : production-echo-server et staging-echo-server. Chacune pointe vers le sous-répertoire de manifestes de son environnement.

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

Appliquer l'ApplicationSet

kubectl -n argocd apply -f applicationset.yaml

Vérifier la création des applications

kubectl -n argocd get application

Sortie attendue :

NAME                     SYNC STATUS   HEALTH STATUS
production-echo-server   OutOfSync     Missing
staging-echo-server      OutOfSync     Missing

OutOfSync indique que les applications existent mais ne sont pas encore déployées.

Synchroniser les applications

argocd app sync production-echo-server staging-echo-server

Vérifier l'accès

Testez l'accès à chaque environnement une fois la synchronisation terminée.

Cluster Production (echo-server v1.0) :

curl XX.XX.XX.XX:8080/version

Sortie attendue :

"Hello Echo Server v1.0"

Cluster Staging (echo-server v2.0) :

curl XX.XX.XX.XX:8080/version

Sortie attendue :

"Hello Echo Server v2.0"

Remplacez XX.XX.XX.XX par l'adresse IP externe du service echo-server dans chaque cluster.

Étapes suivantes