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
-
Cluster di destinazione multipli registrati (vedi) Registra i cluster di destinazione
-
Accesso al repository configurato (vedi) Configurare l'accesso al repository
-
kubectlconfigurato per comunicare con il cluster
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
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
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
-
Lavorare con Argo CD Projects- Organizza ApplicationSets con progetti
-
Creazione di applicazioni- Comprendi la configurazione dell'applicazione
-
ApplicationSet Documentazione
: riferimenti e modelli completi del generatore -
Generator Reference
- Specifiche dettagliate del generatore