Usa ApplicationSets - Amazon EKS

Contribuisci a migliorare questa pagina

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Per contribuire a questa guida per l'utente, scegli il GitHub link Modifica questa pagina nel riquadro destro di ogni pagina.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Usa ApplicationSets

ApplicationSets genera più applicazioni da modelli, consentendoti di distribuire la stessa applicazione su più cluster, ambienti o namespace con un'unica definizione di risorsa.

Prerequisiti

Come ApplicationSets funziona

ApplicationSets utilizzate i generatori per produrre parametri, quindi applicate tali parametri a un modello di applicazione. Ogni set di parametri generati crea un'applicazione.

Generatori comuni per le implementazioni EKS:

  • Generatore di elenchi: definisce in modo esplicito cluster e parametri per ogni ambiente

  • Generatore di cluster: implementa automaticamente su tutti i cluster registrati

  • Generatore Git: genera applicazioni dalla struttura del repository

  • Generatore di matrici: combina generatori per implementazioni multidimensionali

Per un riferimento completo al generatore, consultate la documentazione. ApplicationSet

Generatore di elenchi

Esegui la distribuzione su più cluster con configurazione esplicita:

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
Nota

Utilizza il cluster ARNs EKS server sul campo quando scegli come target i cluster EKS registrati. Puoi anche usare i nomi dei cluster con destination.name invece di. destination.server

Questo crea tre applicazioni: guestbook-devguestbook-staging, eguestbook-prod.

Generatore di cluster

Implementa automaticamente su tutti i cluster registrati:

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

Questo crea automaticamente un'applicazione per ogni cluster registrato.

Cluster di filtri:

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

Generatori Git

I generatori Git creano applicazioni basate sulla struttura del repository:

  • Generatore di directory: distribuisci ogni directory come applicazione separata (utile per i microservizi)

  • Generatore di file: genera applicazioni da file di parametri (utile per le implementazioni multi-tenant)

Esempio: implementazione di microservizi

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

Per i dettagli sui generatori Git e sulla configurazione basata su file, consultate Git Generator nella documentazione del CD Argo.

Generatore di matrici

Combina più generatori da implementare su più dimensioni (ambienti × cluster):

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}}'

Per i dettagli sulla combinazione dei generatori, consultate Matrix Generator nella documentazione di Argo CD.

Implementazione progressiva

Implementa in ambienti in sequenza con diverse politiche di sincronizzazione:

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}}'

Lo sviluppo e lo staging si sincronizzano automaticamente, mentre la produzione richiede l'approvazione manuale.

Implementazione in più regioni

Implementa su cluster in più regioni:

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

Gestisci ApplicationSets

Visualizza ApplicationSets e genera applicazioni:

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

Aggiorna un ApplicationSet:

Modifica le ApplicationSet specifiche e riapplica. Argo CD aggiorna automaticamente tutte le applicazioni generate:

kubectl apply -f applicationset.yaml

Eliminare un ApplicationSet:

kubectl delete applicationset <name> -n argocd
avvertimento

Eliminazione ed ApplicationSet eliminazione di tutte le applicazioni generate. Se tali applicazioni lo hanno fattoprune: true, le relative risorse verranno eliminate anche dai cluster di destinazione.

Risorse aggiuntive