Concetti di Argo CD - 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à.

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-charts public.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 del CD Argo.

Sincronizzazione e riconciliazione

Argo CD monitora continuamente le sorgenti e i cluster per rilevare e correggere le differenze:

  1. Esamina le fonti delle modifiche (impostazione predefinita: ogni 6 minuti)

  2. Confronta lo stato desiderato con lo stato del cluster

  3. Contrassegna le applicazioni come o Synced OutOfSync

  4. Sincronizza automaticamente le modifiche (se configurate) o attende l'approvazione manuale

  5. 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.

Per informazioni dettagliate sulle fasi di sincronizzazione, gli hook e i pattern avanzati, consulta la documentazione di sincronizzazione con Argo CD.

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 nella documentazione del CD Argo.

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