Crea 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à.

Crea 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: name: in-cluster namespace: default
Nota

Usalo destination.name con il nome del cluster che hai usato durante la registrazione del cluster (come in-cluster per il cluster locale). Il destination.server campo funziona anche con il cluster EKS ARNs, ma si consiglia di utilizzare i nomi dei cluster per una migliore leggibilità.

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 con valori dal repository Git esterno (modello multi-source):

spec: sources: - repoURL: https://github.com/example/helm-charts targetRevision: main path: charts/my-app helm: valueFiles: - $values/environments/production/values.yaml - repoURL: https://github.com/example/config-repo targetRevision: main ref: values

Per ulteriori informazioni, consultate Helm Value Files from External Git Repository nella documentazione del CD Argo.

Diagramma Helm tratto da 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

Riprova la configurazione:

Configura il comportamento dei tentativi di ripetizione per le sincronizzazioni non riuscite:

spec: syncPolicy: retry: limit: 5 # Number of failed sync attempts; unlimited if less than 0 backoff: duration: 5s # Amount to back off (default unit: seconds, also supports "2m", "1h") factor: 2 # Factor to multiply the base duration after each failed retry maxDuration: 3m # Maximum amount of time allowed for the backoff strategy

Ciò è particolarmente utile per le risorse che dipendono dal fatto di CRDs essere state create per prime o quando si lavora con istanze kro in cui il CRD potrebbe non essere immediatamente disponibile.

Opzioni di sincronizzazione

Configurazione di sincronizzazione aggiuntiva:

Crea lo spazio dei nomi se non esiste:

spec: syncPolicy: syncOptions: - CreateNamespace=true

Salta la corsa a secco per le risorse mancanti:

Utile quando si applicano risorse che dipendono da CRDs ciò che non esistono ancora (come le istanze kro):

spec: syncPolicy: syncOptions: - SkipDryRunOnMissingResource=true

Questo può essere applicato anche a risorse specifiche utilizzando un'etichetta sulla risorsa stessa.

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

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

Utilizzo dell'Argo CD CLI:

argocd app rollback argocd/my-app <revision-id>
Nota

Quando si utilizza l'Argo CD CLI con la funzionalità gestita, specificare le applicazioni con il prefisso dello spazio dei nomi:. namespace/appname

Per ulteriori informazioni, consulta il rollback dell'app argocd nella documentazione di Argo CD.

Risorse aggiuntive