Creazione di applicazioni - 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à.

Creazione di applicazioni

Le applicazioni rappresentano distribuzioni nei cluster di destinazione. Ogni applicazione definisce una fonte (repository Git) e una destinazione (cluster e namespace). Una volta applicato, Argo CD creerà le risorse specificate dai manifest nel repository Git nello spazio dei nomi del cluster. Le applicazioni spesso specificano le distribuzioni dei carichi di lavoro, ma possono gestire qualsiasi risorsa Kubernetes disponibile nel cluster di destinazione.

Prerequisiti

Crea un'applicazione di base

Definisci un'applicazione che viene distribuita da un repository Git:

apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: guestbook namespace: argocd spec: project: default source: repoURL: https://github.com/argoproj/argocd-example-apps targetRevision: HEAD path: guestbook destination: server: arn:aws:eks:us-west-2:111122223333:cluster/my-cluster namespace: default
Importante

Utilizza l'ARN del cluster EKS nel destination.server campo, non l'URL del server API Kubernetes. La funzionalità gestita richiede ARNs l'identificazione dei cluster.

Applica l'applicazione:

kubectl apply -f application.yaml

Visualizza lo stato dell'applicazione:

kubectl get application guestbook -n argocd

Configurazione dell'origine

Archivio Git:

spec: source: repoURL: https://github.com/example/my-app targetRevision: main path: kubernetes/manifests

Tag o commit Git specifici:

spec: source: targetRevision: v1.2.0 # or commit SHA

Diagramma di Helm:

spec: source: repoURL: https://github.com/example/helm-charts targetRevision: main path: charts/my-app helm: valueFiles: - values.yaml parameters: - name: image.tag value: v1.2.0

Grafico Helm di ECR:

spec: source: repoURL: oci://account-id.dkr.ecr.region.amazonaws.com/repository-name targetRevision: chart-version chart: chart-name

Se il Capability Role dispone delle autorizzazioni ECR richieste, il repository viene utilizzato direttamente e non è richiesta alcuna configurazione del repository. Per informazioni dettagliate, vedi Configurare l'accesso al repository.

Repository Git da CodeCommit:

spec: source: repoURL: https://git-codecommit.region.amazonaws.com/v1/repos/repository-name targetRevision: main path: kubernetes/manifests

Se il Capability Role dispone delle CodeCommit autorizzazioni richieste, il repository viene utilizzato direttamente e non è richiesta alcuna configurazione del repository. Per informazioni dettagliate, vedi Configurare l'accesso al repository.

Repository Git da CodeConnections:

spec: source: repoURL: https://codeconnections.region.amazonaws.com/git-http/account-id/region/connection-id/owner/repository.git targetRevision: main path: kubernetes/manifests

Il formato dell'URL del repository è derivato dall'ARN della CodeConnections connessione. Se il Capability Role dispone delle CodeConnections autorizzazioni richieste ed è configurata una connessione, il repository viene utilizzato direttamente e non è richiesta alcuna configurazione del repository. Per informazioni dettagliate, vedi Configurare l'accesso al repository.

Personalizza:

spec: source: repoURL: https://github.com/example/kustomize-app targetRevision: main path: overlays/production kustomize: namePrefix: prod-

Politiche di sincronizzazione

Controlla il modo in cui Argo CD sincronizza le applicazioni.

Sincronizzazione manuale (impostazione predefinita):

Le applicazioni richiedono l'approvazione manuale per la sincronizzazione:

spec: syncPolicy: {} # No automated sync

Attiva manualmente la sincronizzazione:

kubectl patch application guestbook -n argocd \ --type merge \ --patch '{"operation": {"initiatedBy": {"username": "admin"}, "sync": {}}}'

Sincronizzazione automatica:

Le applicazioni si sincronizzano automaticamente quando vengono rilevate modifiche a Git:

spec: syncPolicy: automated: {}

Autoriparazione:

Ripristina automaticamente le modifiche manuali al cluster:

spec: syncPolicy: automated: selfHeal: true

Se abilitato, Argo CD ripristina qualsiasi modifica manuale apportata direttamente al cluster, assicurando che Git rimanga la fonte della verità.

Potatura:

Elimina automaticamente le risorse rimosse da Git:

spec: syncPolicy: automated: prune: true
avvertimento

Il pruning eliminerà le risorse dal cluster. Usare con cautela negli ambienti di produzione.

Sincronizzazione automatica combinata:

spec: syncPolicy: automated: prune: true selfHeal: true syncOptions: - CreateNamespace=true

Opzioni di sincronizzazione

Configurazione di sincronizzazione aggiuntiva:

Crea lo spazio dei nomi se non esiste:

spec: syncPolicy: syncOptions: - CreateNamespace=true

Convalida le risorse prima di applicarle:

spec: syncPolicy: syncOptions: - Validate=true

Applica solo non sincronizzato:

spec: syncPolicy: syncOptions: - ApplyOutOfSyncOnly=true

Funzionalità di sincronizzazione avanzate

Argo CD supporta funzionalità di sincronizzazione avanzate per implementazioni complesse:

  • Sync waves: controlla l'ordine di creazione delle risorse con le annotazioni argocd.argoproj.io/sync-wave

  • Sync hooks: esegui i lavori prima o dopo la sincronizzazione con argocd.argoproj.io/hook le annotazioni (PreSync,,) PostSync SyncFail

  • Valutazione dello stato delle risorse: controlli di integrità personalizzati per le risorse specifiche dell'applicazione

Per i dettagli, consultate Sync Waves e Resource Hooks nella documentazione del CD Argo.

Ignora le differenze

Impedisci ad Argo CD di sincronizzare campi specifici gestiti da altri controller (come HPA che gestisce le repliche):

spec: ignoreDifferences: - group: apps kind: Deployment jsonPointers: - /spec/replicas

Per i dettagli sugli schemi di ignoramento e sulle esclusioni dei campi, consultate Diffing Customization nella documentazione del CD Argo.

Implementazione multiambiente

Implementa la stessa applicazione in più ambienti:

Sviluppo:

apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: my-app-dev namespace: argocd spec: project: default source: repoURL: https://github.com/example/my-app targetRevision: develop path: overlays/development destination: server: arn:aws:eks:us-west-2:111122223333:cluster/dev-cluster namespace: my-app

Produzione:

apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: my-app-prod namespace: argocd spec: project: default source: repoURL: https://github.com/example/my-app targetRevision: main path: overlays/production destination: server: arn:aws:eks:us-west-2:111122223333:cluster/prod-cluster namespace: my-app syncPolicy: automated: prune: true selfHeal: true

Monitora e gestisci le applicazioni

Visualizza lo stato dell'applicazione:

kubectl get application my-app -n argocd

Accedi all'interfaccia utente di Argo CD:

Apri l'interfaccia utente di Argo CD tramite la console EKS per visualizzare la topologia dell'applicazione, lo stato di sincronizzazione, lo stato delle risorse e la cronologia di distribuzione. Vedi Lavorare con Argo CD per le istruzioni di accesso all'interfaccia utente.

Applicazioni di rollback:

Torna a una revisione precedente utilizzando l'interfaccia utente di Argo CD o aggiornando le specifiche dell'applicazione targetRevision a un commit o tag Git precedente.

Risorse aggiuntive