Benutzen ApplicationSets - Amazon EKS

Unterstützung für die Verbesserung dieser Seite beitragen

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Um zu diesem Benutzerhandbuch beizutragen, wählen Sie den GitHub Link Diese Seite bearbeiten auf, der sich im rechten Bereich jeder Seite befindet.

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Benutzen ApplicationSets

ApplicationSets Generieren Sie mehrere Anwendungen aus Vorlagen, sodass Sie dieselbe Anwendung mit einer einzigen Ressourcendefinition in mehreren Clustern, Umgebungen oder Namespaces bereitstellen können.

Voraussetzungen

Wie ApplicationSets funktioniert

ApplicationSets Verwenden Sie Generatoren, um Parameter zu erzeugen, und wenden Sie diese Parameter dann auf eine Anwendungsvorlage an. Jeder Satz generierter Parameter erstellt eine Anwendung.

Allgemeine Generatoren für EKS-Bereitstellungen:

  • Listengenerator — Definieren Sie explizit Cluster und Parameter für jede Umgebung

  • Cluster-Generator — Automatische Bereitstellung auf allen registrierten Clustern

  • Git Generator - Generieren Sie Anwendungen aus der Repository-Struktur

  • Matrixgenerator — Kombinieren Sie Generatoren für mehrdimensionale Bereitstellungen

Eine vollständige Generator-Referenz finden ApplicationSet Sie in der Dokumentation.

Listengenerator

Bereitstellung auf mehreren Clustern mit expliziter Konfiguration:

apiVersion: argoproj.io/v1alpha1 kind: ApplicationSet metadata: name: guestbook-all-clusters namespace: argocd spec: generators: - list: elements: - cluster: arn:aws:eks:us-west-2:111122223333:cluster/dev-cluster environment: dev replicas: "2" - cluster: arn:aws:eks:us-west-2:111122223333:cluster/staging-cluster environment: staging replicas: "3" - cluster: arn:aws:eks:us-west-2:111122223333:cluster/prod-cluster 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: server: '{{cluster}}' namespace: guestbook syncPolicy: automated: prune: true selfHeal: true
Anmerkung

Verwenden Sie den EKS-Cluster ARNs vor server Ort, wenn Sie auf registrierte EKS-Cluster abzielen. Sie können auch Clusternamen mit destination.name anstelle von verwendendestination.server.

Dadurch werden drei Anwendungen erstellt: guestbook-devguestbook-staging, undguestbook-prod.

Clustergenerator

Automatisch auf allen registrierten Clustern bereitstellen:

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

Dadurch wird automatisch eine Anwendung für jeden registrierten Cluster erstellt.

Cluster filtern:

spec: generators: - clusters: selector: matchLabels: environment: production

Git-Generatoren

Git-Generatoren erstellen Anwendungen auf der Grundlage der Repository-Struktur:

  • Verzeichnisgenerator — Stellen Sie jedes Verzeichnis als separate Anwendung bereit (nützlich für Microservices)

  • Dateigenerator — Generieren Sie Anwendungen aus Parameterdateien (nützlich für Bereitstellungen mit mehreren Mandanten)

Beispiel: Bereitstellung von 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: server: arn:aws:eks:us-west-2:111122223333:cluster/my-cluster namespace: '{{path.basename}}' syncPolicy: automated: prune: true selfHeal: true syncOptions: - CreateNamespace=true

Einzelheiten zu Git-Generatoren und dateibasierter Konfiguration finden Sie unter Git Generator in der Argo-CD-Dokumentation.

Matrixgenerator

Kombinieren Sie mehrere Generatoren, um sie in mehreren Dimensionen (Umgebungen × Cluster) einzusetzen:

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: server: '{{server}}' namespace: 'app-{{environment}}'

Einzelheiten zur Kombination von Generatoren finden Sie unter Matrix Generator in der Argo-CD-Dokumentation.

Schrittweiser Rollout

Sequenziell in Umgebungen mit unterschiedlichen Synchronisierungsrichtlinien bereitstellen:

apiVersion: argoproj.io/v1alpha1 kind: ApplicationSet metadata: name: progressive-rollout namespace: argocd spec: generators: - list: elements: - environment: dev autoSync: "true" - environment: staging autoSync: "true" - environment: prod autoSync: "false" template: metadata: name: 'app-{{environment}}' spec: project: default source: repoURL: https://github.com/example/app targetRevision: HEAD path: 'overlays/{{environment}}' destination: server: arn:aws:eks:us-west-2:111122223333:cluster/{{environment}}-cluster namespace: app syncPolicy: automated: prune: true selfHeal: '{{autoSync}}'

Entwicklung und Staging werden automatisch synchronisiert, während für die Produktion eine manuelle Genehmigung erforderlich ist.

Einsatz in mehreren Regionen

Bereitstellung auf Clustern in mehreren Regionen:

apiVersion: argoproj.io/v1alpha1 kind: ApplicationSet metadata: name: global-app namespace: argocd spec: generators: - list: elements: - cluster: arn:aws:eks:us-west-2:111122223333:cluster/prod-us-west region: us-west-2 - cluster: arn:aws:eks:us-east-1:111122223333:cluster/prod-us-east region: us-east-1 - cluster: arn:aws:eks:eu-west-1:111122223333:cluster/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: server: '{{cluster}}' namespace: app syncPolicy: automated: prune: true selfHeal: true

Verwalten ApplicationSets

Anwendungen anzeigen ApplicationSets und generieren:

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

Aktualisieren und ApplicationSet:

Ändern Sie die ApplicationSet Spezifikation und wenden Sie sie erneut an. Argo CD aktualisiert automatisch alle generierten Anwendungen:

kubectl apply -f applicationset.yaml

Löschen und: ApplicationSet

kubectl delete applicationset <name> -n argocd
Warnung

Beim Löschen und ApplicationSet Löschen aller generierten Anwendungen werden alle generierten Anwendungen gelöscht. Wenn dies bei diesen Anwendungen der Fall istprune: true, werden ihre Ressourcen ebenfalls aus den Zielclustern gelöscht.

Weitere Ressourcen