Utiliser ApplicationSets - Amazon EKS

Aidez à améliorer cette page

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Pour contribuer à ce guide de l'utilisateur, cliquez sur le GitHub lien Modifier cette page sur qui se trouve dans le volet droit de chaque page.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utiliser ApplicationSets

ApplicationSets générez plusieurs applications à partir de modèles, ce qui vous permet de déployer la même application sur plusieurs clusters, environnements ou espaces de noms avec une seule définition de ressource.

Conditions préalables

Note

Il n'est pas nécessaire de disposer de plusieurs clusters cibles pour ApplicationSets. Vous pouvez utiliser des générateurs autres que le générateur de clusters (tels que des générateurs de listes, de git ou de matrices) pour déployer des applications sans clusters distants.

Comment ApplicationSets travailler

ApplicationSets utilisez des générateurs pour produire des paramètres, puis appliquez ces paramètres à un modèle d'application. Chaque ensemble de paramètres générés crée une application.

Générateurs courants pour les déploiements EKS :

  • Générateur de listes - Définissez explicitement les clusters et les paramètres pour chaque environnement

  • Générateur de clusters - Déploiement automatique sur tous les clusters enregistrés

  • Générateur Git - Génère des applications à partir de la structure du référentiel

  • Générateur de matrices - Combinez des générateurs pour des déploiements multidimensionnels

  • Générateur de fusion - Fusionnez les paramètres de plusieurs générateurs

Pour une référence complète sur le générateur, consultez ApplicationSet la documentation.

Générateur de listes

Déployez sur plusieurs clusters avec une configuration explicite :

apiVersion: argoproj.io/v1alpha1 kind: ApplicationSet metadata: name: guestbook-all-clusters namespace: argocd spec: generators: - list: elements: - environment: dev replicas: "2" - environment: staging replicas: "3" - environment: prod replicas: "5" template: metadata: name: 'guestbook-{{environment}}' spec: project: default source: repoURL: https://github.com/example/guestbook targetRevision: HEAD path: 'overlays/{{environment}}' destination: name: '{{environment}}-cluster' namespace: guestbook syncPolicy: automated: prune: true selfHeal: true
Note

À utiliser destination.name avec les noms de clusters pour une meilleure lisibilité. Le destination.server champ fonctionne également avec le cluster EKS ARNs si nécessaire.

Cela crée trois applications : guestbook-devguestbook-staging, etguestbook-prod.

Générateur de clusters

Déployez automatiquement sur tous les clusters enregistrés :

apiVersion: argoproj.io/v1alpha1 kind: ApplicationSet metadata: name: cluster-addons namespace: argocd spec: generators: - clusters: {} template: metadata: name: '{{name}}-addons' spec: project: default source: repoURL: https://github.com/example/cluster-addons targetRevision: HEAD path: addons destination: server: '{{server}}' namespace: kube-system syncPolicy: automated: prune: true selfHeal: true

Cela crée automatiquement une application pour chaque cluster enregistré.

Clusters de filtres :

matchLabelsÀ utiliser pour inclure des clusters spécifiques ou matchExpressions pour exclure des clusters :

spec: generators: - clusters: selector: matchLabels: environment: production matchExpressions: - key: skip-appset operator: DoesNotExist

Générateurs Git

Les générateurs Git créent des applications basées sur la structure du référentiel :

  • Générateur de répertoires - Déployez chaque répertoire en tant qu'application distincte (utile pour les microservices)

  • Générateur de fichiers : générez des applications à partir de fichiers de paramètres (utile pour les déploiements multi-locataires)

Exemple : déploiement de microservices

apiVersion: argoproj.io/v1alpha1 kind: ApplicationSet metadata: name: microservices namespace: argocd spec: generators: - git: repoURL: https://github.com/example/microservices revision: HEAD directories: - path: services/* template: metadata: name: '{{path.basename}}' spec: project: default source: repoURL: https://github.com/example/microservices targetRevision: HEAD path: '{{path}}' destination: name: my-cluster namespace: '{{path.basename}}' syncPolicy: automated: prune: true selfHeal: true syncOptions: - CreateNamespace=true

Pour plus de détails sur les générateurs Git et la configuration basée sur des fichiers, consultez Git Generator dans la documentation du CD Argo.

Générateur de matrices

Combinez plusieurs générateurs pour les déployer sur plusieurs dimensions (environnements × clusters) :

apiVersion: argoproj.io/v1alpha1 kind: ApplicationSet metadata: name: multi-env-multi-cluster namespace: argocd spec: generators: - matrix: generators: - list: elements: - environment: dev - environment: staging - environment: prod - clusters: selector: matchLabels: region: us-west-2 template: metadata: name: 'app-{{environment}}-{{name}}' spec: project: default source: repoURL: https://github.com/example/app targetRevision: HEAD path: 'overlays/{{environment}}' destination: name: '{{name}}' namespace: 'app-{{environment}}'

Pour plus de détails sur la combinaison de générateurs, voir Matrix Generator dans la documentation d'Argo CD.

Déploiement multirégional

Déployez sur des clusters répartis dans plusieurs régions :

apiVersion: argoproj.io/v1alpha1 kind: ApplicationSet metadata: name: global-app namespace: argocd spec: generators: - list: elements: - clusterName: prod-us-west region: us-west-2 - clusterName: prod-us-east region: us-east-1 - clusterName: prod-eu-west region: eu-west-1 template: metadata: name: 'app-{{region}}' spec: project: default source: repoURL: https://github.com/example/app targetRevision: HEAD path: kubernetes helm: parameters: - name: region value: '{{region}}' destination: name: '{{clusterName}}' namespace: app syncPolicy: automated: prune: true selfHeal: true

Gérez ApplicationSets

Afficher ApplicationSets et générer les applications :

kubectl get applicationsets -n argocd kubectl get applications -n argocd -l argocd.argoproj.io/application-set-name=<applicationset-name>

Mettez à jour et ApplicationSet :

Modifiez les ApplicationSet spécifications et réappliquez. Argo CD met automatiquement à jour toutes les applications générées :

kubectl apply -f applicationset.yaml

Supprimer un ApplicationSet :

kubectl delete applicationset <name> -n argocd
Avertissement

La suppression et la ApplicationSet suppression de toutes les applications générées. Si ces applications l'ont faitprune: true, leurs ressources seront également supprimées des clusters cibles.

Pour préserver les ressources déployées lors de la suppression d'un ApplicationSet, définissez .syncPolicy.preserveResourcesOnDeletion sur true dans la ApplicationSet spécification. Pour plus d'informations, consultez la section Élagage des applications et suppression des ressources dans la documentation d'Argo CD.

Important

La ApplicationSets fonctionnalité d'Argo CD comporte des considérations de sécurité que vous devez connaître avant de l'utiliser ApplicationSets. Pour plus d'informations, consultez ApplicationSet la section Sécurité dans la documentation d'Argo CD.

Ressources supplémentaires