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à.
Concetti di Argo CD
Argo CD implementa GitOps trattando Git come l'unica fonte di verità per le implementazioni delle applicazioni. Questo argomento illustra un esempio pratico, quindi spiega i concetti fondamentali da comprendere quando si lavora con il CD EKS Capability for Argo.
Guida introduttiva ad Argo CD
Dopo aver creato la funzionalità Argo CD (vediCrea una funzionalità Argo CD), puoi iniziare a distribuire le applicazioni. Questo esempio illustra la registrazione di un cluster e la creazione di un'applicazione.
Fase 1: configurazione
Registra il tuo cluster (richiesto)
Registra il cluster in cui desideri distribuire le applicazioni. Per questo esempio, registreremo lo stesso cluster su cui è in esecuzione Argo CD (potete usare il nome in-cluster per motivi di compatibilità con la maggior parte degli esempi di Argo CD):
# Get your cluster ARN CLUSTER_ARN=$(aws eks describe-cluster \ --name my-cluster \ --query 'cluster.arn' \ --output text) # Register the cluster using Argo CD CLI argocd cluster add $CLUSTER_ARN \ --aws-cluster-name $CLUSTER_ARN \ --name in-cluster \ --project default
Nota
Per informazioni sulla configurazione dell'Argo CD CLI per funzionare con la funzionalità Argo CD in EKS, vedere. Utilizzo dell'Argo CD CLI con funzionalità gestite
In alternativa, registra il cluster utilizzando un Kubernetes Secret (vedi per i dettagli). Registra i cluster di destinazione
Configura l'accesso al repository (opzionale)
Questo esempio utilizza un GitHub archivio pubblico, quindi non è richiesta alcuna configurazione del repository. Per gli archivi privati, configura l'accesso utilizzando AWS Secrets Manager o Kubernetes Secrets (vedi Configurare l'accesso al repository per i dettagli). CodeConnections
Per AWS i servizi (grafici ECR for Helm e CodeCommit) CodeConnections, puoi farvi riferimento direttamente nelle risorse dell'applicazione senza creare un repository. Il Capability Role deve disporre delle autorizzazioni IAM richieste. Per informazioni dettagliate, vedi Configurare l'accesso al repository.
Fase 2: crea un'applicazione
Crea questo manifesto dell'applicazione inmy-app.yaml:
apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: guestbook namespace: argocd spec: project: default source: repoURL: https://github.com/argoproj/argocd-example-apps.git targetRevision: HEAD path: guestbook destination: name: in-cluster namespace: guestbook syncPolicy: automated: prune: true selfHeal: true syncOptions: - CreateNamespace=true
Applica l'applicazione:
kubectl apply -f my-app.yaml
Dopo aver applicato questa applicazione, Argo CD: 1. Sincronizza l'applicazione da Git al tuo cluster (distribuzione iniziale) 2. Monitora il repository Git per le modifiche 3. Sincronizza automaticamente le modifiche successive al cluster 4. Rileva e corregge qualsiasi deriva dallo stato desiderato 5. Fornisce lo stato di salute e la cronologia di sincronizzazione nell'interfaccia utente
Visualizza lo stato dell'applicazione:
kubectl get application guestbook -n argocd
È inoltre possibile visualizzare l'applicazione utilizzando l'Argo CD CLI argocd app get guestbook () o l'interfaccia utente di Argo CD (accessibile dalla console EKS nella scheda Capacità del cluster).
Nota
Utilizzate il nome del cluster in destination.name (il nome usato durante la registrazione del cluster). La funzionalità gestita non supporta l'impostazione predefinita locale all'interno del cluster ()kubernetes.default.svc.
Concetti principali
GitOps principi e tipi di fonti
Argo CD implementa GitOps, in cui la fonte dell'applicazione è l'unica fonte attendibile per le implementazioni:
-
Dichiarativo: lo stato desiderato viene dichiarato utilizzando i manifesti YAML, i grafici Helm o gli overlay Kustomize
-
Versionato: ogni modifica viene tracciata con un audit trail completo
-
Automatizzato: Argo CD monitora continuamente le sorgenti e sincronizza automaticamente le modifiche
-
Riparazione automatica: rileva e corregge lo scostamento tra lo stato desiderato e quello effettivo del cluster
Tipi di sorgenti supportati:
-
Archivi Git - GitHub GitLab, Bitbucket, CodeCommit (HTTPS, SSH o) CodeConnections
-
Registri Helm: registri HTTP (simili) e registri OCI (simili)
https://aws.github.io/eks-chartspublic.ecr.aws -
Immagini OCI: immagini dei contenitori contenenti manifesti o grafici Helm (come)
oci://registry-1.docker.io/user/my-app
Questa flessibilità consente alle organizzazioni di scegliere fonti che soddisfino i propri requisiti di sicurezza e conformità. Ad esempio, le organizzazioni che limitano l'accesso a Git dai cluster possono utilizzare ECR per i grafici Helm o le immagini OCI.
Per ulteriori informazioni, consultate Application Sources nella documentazione
Sincronizzazione e riconciliazione
Argo CD monitora continuamente le sorgenti e i cluster per rilevare e correggere le differenze:
-
Esamina le fonti delle modifiche (impostazione predefinita: ogni 6 minuti)
-
Confronta lo stato desiderato con lo stato del cluster
-
Contrassegna le applicazioni come o
SyncedOutOfSync -
Sincronizza automaticamente le modifiche (se configurate) o attende l'approvazione manuale
-
Monitora lo stato delle risorse dopo la sincronizzazione
Le onde di sincronizzazione controllano l'ordine di creazione delle risorse utilizzando le annotazioni:
metadata: annotations: argocd.argoproj.io/sync-wave: "0" # Default if not specified
Le risorse vengono applicate in ordine ondulatorio (partendo dai numeri più bassi, inclusi i numeri negativi, ad esempio-1). Ciò consente di creare dipendenze come i namespace (wave-1) prima delle distribuzioni (wave). 0
La riparazione automatica annulla automaticamente le modifiche manuali:
spec: syncPolicy: automated: selfHeal: true
Nota
La funzionalità gestita utilizza il tracciamento delle risorse basato sulle annotazioni (non basato su etichette) per una migliore compatibilità con le convenzioni Kubernetes e altri strumenti.
Integrità dell'applicazione
Argo CD monitora lo stato di tutte le risorse dell'applicazione:
Stati di salute : * Integro: tutte le risorse funzionano come previsto * In corso di avanzamento - Risorse in fase di creazione o aggiornamento * Degradate - Alcune risorse non integre (pod bloccati, processi non riusciti) * Sospesa - Applicazione intenzionalmente sospesa * Mancante - Risorse definite in Git non presenti nel cluster
Argo CD include controlli di integrità integrati per le risorse Kubernetes più comuni (implementazioni, lavori, ecc.) e supporta controlli di integrità personalizzati per. StatefulSets CRDs
Lo stato dell'applicazione è determinato da tutte le sue risorse: se una risorsa lo è, l'applicazione sì. Degraded Degraded
Per ulteriori informazioni, consultate Resource Health
Schemi multicluster
Argo CD supporta due modelli di implementazione principali:
H ub-and-spoke - Esegui Argo CD su un cluster di gestione dedicato che viene distribuito su più cluster di carichi di lavoro: * Controllo e visibilità centralizzati * Policy coerenti su tutti i cluster * Un'istanza Argo CD da gestire * Chiara separazione tra piano di controllo e carichi di lavoro
Per cluster: esegui Argo CD su ogni cluster, gestendo solo le applicazioni del cluster: * Separazione del cluster (un errore non influisce sugli altri) * Rete più semplice (nessuna comunicazione tra cluster) * Configurazione iniziale più semplice (nessuna registrazione del cluster)
Scegliete tra hub-and-spoke i team di piattaforma che gestiscono più cluster o per i team indipendenti per i cluster o quando i cluster devono essere completamente isolati.
Per una configurazione multi-cluster dettagliata, consulta. Considerazioni su Argo CD
Progetti
I progetti forniscono il raggruppamento logico e il controllo degli accessi per le applicazioni:
-
Restrizioni all'origine: limita i repository Git che possono essere utilizzati
-
Restrizioni sulla destinazione: limita i cluster e i namespace a cui è possibile rivolgersi
-
Restrizioni alle risorse: limita i tipi di risorse Kubernetes che possono essere distribuiti
-
Integrazione RBAC: mappa i progetti all'utente e al gruppo di Identity Center AWS IDs
Tutte le applicazioni appartengono a un progetto. Se non specificato, usano il default progetto (che non ha restrizioni). Per la produzione, crea progetti con le restrizioni appropriate.
Per la configurazione del progetto e i modelli RBAC, vedere. Configurare le autorizzazioni di Argo CD
Organizzazione del repository
La maggior parte dei team utilizza un'organizzazione basata su directory con sovrapposizioni Kustomize o file di valori Helm per ambienti diversi:
my-app/ ├── base/ │ ├── deployment.yaml │ └── service.yaml └── overlays/ ├── dev/ │ └── kustomization.yaml ├── staging/ │ └── kustomization.yaml └── prod/ └── kustomization.yaml
Questo approccio offre flessibilità e chiarezza mantenendo tutte le configurazioni dell'ambiente in un unico repository.
Per modelli dettagliati di struttura del repository e best practice, consultate la documentazione sulle best practice di Argo CD
Opzioni di sincronizzazione
Ottimizza il comportamento di sincronizzazione con opzioni comuni:
-
CreateNamespace=true- Crea automaticamente lo spazio dei nomi di destinazione -
ServerSideApply=true- Utilizza server-side apply per una migliore risoluzione dei conflitti -
SkipDryRunOnMissingResource=true- Salta il dry run quando CRDs non esistono ancora (utile per le istanze kro)
spec: syncPolicy: syncOptions: - CreateNamespace=true - ServerSideApply=true
Per un elenco completo delle opzioni di sincronizzazione, consultate la documentazione sulle opzioni di sincronizzazione di Argo CD
Fasi successive
-
Configurare l'accesso al repository- Configura l'accesso al repository Git
-
Registra i cluster di destinazione- Registra i cluster di destinazione per la distribuzione
-
Creazione di applicazioni- Crea la tua prima applicazione
-
Considerazioni su Argo CD- Modelli specifici di EKS, integrazione con Identity Center e configurazione multicluster
-
Documentazione su Argo CD - Documentazione
completa su Argo CD, inclusi hook di sincronizzazione, controlli di integrità e modelli avanzati