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

  • È stato creato un cluster EKS con funzionalità Argo CD

  • Accesso al repository configurato (vedi) Configurare l'accesso al repository

  • kubectlconfigurato per comunicare con il cluster

Nota

Non sono necessari cluster di destinazione multipli per ApplicationSets. È possibile utilizzare generatori diversi dal generatore di cluster (come i generatori list, git o matrix) per distribuire applicazioni senza cluster remoti.

Come funziona ApplicationSets

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

  • Generatore di fusione: unisce i parametri di più generatori

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: - 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
Nota

Utilizzalo destination.name con i nomi dei cluster per una migliore leggibilità. ARNs Se necessario, il destination.server campo funziona anche con il cluster EKS.

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:

Utilizza matchLabels per includere cluster specifici o matchExpressions per escludere cluster:

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

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

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

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: - 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

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.

Per preservare le risorse distribuite durante l'eliminazione di un file ApplicationSet, impostate su true nelle .syncPolicy.preserveResourcesOnDeletion specifiche. ApplicationSet Per ulteriori informazioni, consultate Application Pruning & Resource Deletion nella documentazione del CD Argo.

Importante

La ApplicationSets funzionalità di Argo CD prevede considerazioni sulla sicurezza di cui è necessario tenere conto prima di utilizzarla. ApplicationSets Per ulteriori informazioni, consultate la sezione ApplicationSet Sicurezza nella documentazione del CD Argo.

Risorse aggiuntive