Considerazioni su Argo CD - Amazon EKS

View a markdown version of this page

Considerazioni su 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 su che si trova 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à.

Considerazioni su Argo CD

Questo argomento tratta importanti considerazioni sull'utilizzo del CD EKS Capability for Argo, tra cui pianificazione, autorizzazioni, autenticazione e modelli di distribuzione multi-cluster.

Pianificazione

Prima di distribuire Argo CD, considera quanto segue:

Strategia di deposito: determina dove verranno archiviati i manifesti dell'applicazione (CodeCommit,, GitHub, GitLab Bitbucket). Pianifica la struttura del tuo repository e la strategia di ramificazione per diversi ambienti.

Strategia RBAC: pianifica quali team o utenti devono avere accesso come amministratore, editor o visualizzatore. Associali ai gruppi AWS Identity Center o ai ruoli Argo CD.

Multi-cluster architettura: Determina se gestirai più cluster da una singola istanza Argo CD. Prendi in considerazione l'utilizzo di un cluster di gestione dedicato per Argo CD.

Organizzazione delle applicazioni: pianifica come strutturerai le applicazioni e ApplicationSets. Prendi in considerazione l'utilizzo di progetti per organizzare le applicazioni per team o ambiente.

Criteri di sincronizzazione: decidi se le applicazioni devono essere sincronizzate automaticamente o richiedere l'approvazione manuale. La sincronizzazione automatica è comune per lo sviluppo, manuale per la produzione.

Permissions

Per informazioni dettagliate sui ruoli di capacità di IAM, sulle politiche di fiducia e sulle best practice di sicurezza, consulta Funzionalità Amazon EKS, ruolo IAM eConsiderazioni sulla sicurezza per EKS Capabilities.

Panoramica del ruolo di capacità IAM

Quando crei una risorsa di funzionalità Argo CD, fornisci un ruolo di capacità IAM. A differenza di ACK, Argo CD gestisce principalmente le risorse Kubernetes, non le risorse direttamente. AWS Tuttavia, l'IAM Capability Role è richiesto per:

  • Accesso ai repository Git privati in CodeCommit

  • Integrazione con AWS Identity Center per l'autenticazione

  • Accesso ai AWS segreti in Secrets Manager (se configurato)

  • Cross-cluster implementazioni su altri cluster EKS

CodeCommit integrazione

Se utilizzi i CodeCommit repository, allega una policy con autorizzazioni di lettura:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codecommit:GitPull" ], "Resource": "*" } ] }
Importante

Per l'uso in produzione, limita il Resource campo a specifici ARN del repository invece di utilizzarlo. "*"

Esempio:

"Resource": "arn:aws:codecommit:us-west-2:111122223333:my-app-repo"

Ciò limita l'accesso della funzionalità Argo CD ai soli repository che deve gestire.

Integrazione di Secrets Manager

Se stai archiviando le credenziali del repository in Secrets Manager, allega la policy gestita per l'accesso in lettura:

arn:aws:iam::aws:policy/AWSSecretsManagerClientReadOnlyAccess

Questa politica include le autorizzazioni necessarie:secretsmanager:GetSecretValue, e le autorizzazioni di secretsmanager:DescribeSecret decrittografia KMS.

Configurazione di base

Per le funzionalità di base di Argo CD con repository Git pubblici, non sono richieste politiche IAM aggiuntive oltre alla policy di fiducia.

Autenticazione

AWS Integrazione con Identity Center

La funzionalità gestita da Argo CD si integra direttamente con AWS Identity Center (precedentemente AWS SSO), consentendoti di utilizzare il tuo provider di identità esistente per l'autenticazione.

Quando si configura l'integrazione con Identity Center: AWS

  1. Gli utenti accedono all'interfaccia utente di Argo CD tramite la console EKS

  2. Si autenticano utilizzando AWS Identity Center (che può essere federato con il provider di identità aziendale)

  3. AWS Identity Center fornisce informazioni su utenti e gruppi ad Argo CD

  4. Argo CD associa utenti e gruppi ai ruoli RBAC in base alla configurazione

  5. Gli utenti vedono solo le applicazioni e le risorse a cui hanno il permesso di accedere

Semplificazione dell'accesso con i set di autorizzazioni di Identity Center

AWS Identity Center fornisce due percorsi di autenticazione distinti quando si lavora con Argo CD:

Autenticazione API Argo CD: Identity Center fornisce l'autenticazione SSO all'interfaccia utente e all'API Argo CD. Questo è configurato tramite le mappature dei ruoli RBAC della funzionalità Argo CD.

Accesso al cluster EKS: la funzionalità Argo CD utilizza il ruolo IAM fornito dal cliente per autenticarsi con i cluster EKS tramite voci di accesso. Queste voci di accesso possono essere configurate manualmente per aggiungere o rimuovere autorizzazioni.

È possibile utilizzare i set di autorizzazioni di Identity Center per semplificare la gestione delle identità consentendo a una singola identità di accedere ai cluster Argo CD ed EKS. Ciò riduce il sovraccarico richiedendo la gestione di una sola identità su entrambi i sistemi, anziché mantenere credenziali separate per l'accesso al CD Argo e l'accesso al cluster.

Mappature dei ruoli RBAC

Argo CD ha ruoli integrati che puoi mappare agli utenti e ai gruppi di AWS Identity Center:

ADMIN: accesso completo a tutte le applicazioni e le impostazioni. Può creare, aggiornare ed eliminare applicazioni. Può gestire la configurazione del CD Argo.

EDITOR: Può creare e modificare applicazioni. Non è possibile modificare le impostazioni del CD Argo o eliminare applicazioni.

VIEWER: Read-only accesso alle applicazioni. Può visualizzare lo stato e la cronologia delle applicazioni. Non è possibile apportare modifiche.

Nota

I nomi dei ruoli fanno distinzione tra maiuscole e minuscole e devono essere in maiuscolo (ADMIN, EDITOR, VIEWER).

Importante

L'integrazione di EKS Capabilities con AWS Identity Center supporta fino a 1.000 identità per funzionalità Argo CD. Un'identità può essere un utente o un gruppo.

Multi-cluster distribuzioni

La funzionalità gestita di Argo CD supporta le implementazioni multi-cluster, consentendo di gestire le applicazioni tra cluster di sviluppo, staging e produzione da una singola istanza Argo CD.

Come funziona il multi-cluster

Quando si registrano cluster aggiuntivi con Argo CD:

  1. Crei i segreti dei cluster che fanno riferimento ai cluster EKS di destinazione tramite ARN

  2. Si creano applicazioni o destinate a ApplicationSets cluster diversi

  3. Argo CD si connette a ciascun cluster per distribuire e controllare le risorse

  4. Puoi visualizzare e gestire tutti i cluster da un'unica interfaccia utente di Argo CD

Prerequisiti per il multi-cluster

Prima di registrare cluster aggiuntivi:

  • Crea una voce di accesso sul cluster di destinazione per il ruolo di funzionalità Argo CD

  • Garantisci la connettività di rete tra la funzionalità Argo CD e i cluster di destinazione

  • Verifica le autorizzazioni IAM per accedere ai cluster di destinazione

Registra un cluster

Registra i cluster utilizzando Kubernetes Secrets nel namespace. argocd

Ottieni l'ARN del cluster di destinazione. Sostituiscilo region-code con la AWS regione in cui si trova il cluster di destinazione e sostituiscilo target-cluster con il nome del cluster di destinazione.

aws eks describe-cluster \ --region region-code \ --name target-cluster \ --query 'cluster.arn' \ --output text

Crea un cluster segreto utilizzando l'ARN del cluster:

apiVersion: v1 kind: Secret metadata: name: target-cluster namespace: argocd labels: argocd.argoproj.io/secret-type: cluster type: Opaque stringData: name: target-cluster server: arn:aws:eks:us-west-2:111122223333:cluster/target-cluster project: default
Importante

Utilizza l'ARN del cluster EKS nel server campo, non l'URL del server API Kubernetes. La funzionalità gestita richiede che gli ARN identifichino i cluster di destinazione.

Applica il segreto:

kubectl apply -f cluster-secret.yaml

Configurare Access Entry sul cluster di destinazione

Il cluster di destinazione deve disporre di una voce di accesso che conceda al ruolo di capacità Argo CD l'autorizzazione per distribuire le applicazioni. Sostituisci region-code con la AWS regione in cui si trova il cluster di destinazione, sostituisci target-cluster con il nome del cluster di destinazione e sostituisci l'ARN con il tuo ruolo di funzionalità Argo CD ARN.

aws eks create-access-entry \ --region region-code \ --cluster-name target-cluster \ --principal-arn arn:aws:iam::111122223333:role/ArgoCDCapabilityRole \ --type STANDARD \ --kubernetes-groups system:masters
Nota

Per l'uso in produzione, prendi in considerazione l'utilizzo di gruppi Kubernetes più restrittivi anziché. system:masters

Accesso privato al cluster

La funzionalità gestita da Argo CD può essere implementata su cluster EKS completamente privati senza richiedere peering VPC o configurazioni di rete specializzate. AWS gestisce automaticamente la connettività tra la funzionalità Argo CD e i cluster remoti privati. Assicurati che i controlli di accesso al repository e le policy RBAC di Argo CD siano configurati correttamente.

Cross-account implementazioni

Per le distribuzioni su più account, aggiungi il ruolo Argo CD IAM Capability dall'account di origine all'EKS Access Entry del cluster di destinazione:

  1. Nell'account di destinazione, crea una voce di accesso sul cluster EKS di destinazione

  2. Utilizzate l'Argo CD IAM Capability Role ARN dell'account di origine come principale

  3. Configura le autorizzazioni RBAC Kubernetes appropriate per l'Access Entry

  4. Registra il cluster di destinazione in Argo CD utilizzando il relativo cluster EKS ARN

Non è richiesta alcuna creazione aggiuntiva di ruoli IAM o configurazione di policy di trust: EKS Access Entries gestisce l'accesso tra account.

Best practice

Usa fonti dichiarative come fonte di verità: archivia tutti i manifesti delle tue applicazioni in fonti dichiarative (repository Git, registri Helm o immagini OCI), abilitando il controllo della versione, gli audit trail e la collaborazione.

Implementa un RBAC adeguato: utilizza l'integrazione con AWS Identity Center per controllare chi può accedere e gestire le applicazioni in Argo CD. Argo CD supporta il controllo granulare degli accessi alle risorse all'interno delle applicazioni (Deployments, Pods, Secrets). ConfigMaps

Utilizzo ApplicationSets per implementazioni multiambiente: da utilizzare per distribuire applicazioni su più cluster o ApplicationSets namespace con configurazioni diverse.

Gestione del ciclo di vita

Politiche di sincronizzazione delle applicazioni

Controlla il modo in cui Argo CD sincronizza le applicazioni:

Sincronizzazione manuale: le applicazioni richiedono l'approvazione manuale per sincronizzare le modifiche. Consigliato per ambienti di produzione.

Sincronizzazione automatica: le applicazioni si sincronizzano automaticamente quando vengono rilevate modifiche a Git. Comune negli ambienti di sviluppo e staging.

Self-healing: ripristina automaticamente le modifiche manuali apportate al cluster. Assicura che lo stato del cluster corrisponda a Git.

Eliminazione: elimina automaticamente le risorse rimosse da Git. Usalo con cautela in quanto può eliminare risorse.

Integrità delle applicazioni

Argo CD monitora continuamente lo stato delle applicazioni:

  • Sano: tutte le risorse funzionano come previsto

  • Progresso: le risorse vengono create o aggiornate

  • Degradato: alcune risorse non sono integre

  • Sospesa: l'applicazione è in pausa

  • Mancante: mancano delle risorse dal cluster

Sincronizza finestre

Configura le finestre di sincronizzazione per controllare quando le applicazioni possono essere sincronizzate:

  • Consenti le sincronizzazioni solo durante le finestre di manutenzione

  • Blocca le sincronizzazioni durante l'orario lavorativo

  • Pianifica le sincronizzazioni automatiche per orari specifici

  • Usa le finestre di sincronizzazione nelle situazioni in cui devi apportare modifiche e interrompere qualsiasi sincronizzazione (scenari rivoluzionari)

Configurazione Webhook per una sincronizzazione più rapida

Per impostazione predefinita, Argo CD esegue il polling dei repository Git ogni 6 minuti per rilevare le modifiche. Per implementazioni più reattive, configura i webhook Git in modo che attivino sincronizzazioni immediate quando vengono inviate modifiche.

I webhook offrono diversi vantaggi:

  • Risposta di sincronizzazione immediata quando viene inviato il codice (secondi anziché minuti)

  • Riduzione del sovraccarico di polling e miglioramento delle prestazioni del sistema

  • Uso più efficiente dei limiti di velocità delle API

  • Migliore esperienza utente con un feedback più rapido

Endpoint Webhook

L'URL del webhook segue lo schema${serverUrl}/api/webhook, serverUrl dov'è l'URL del server CD Argo. Per trovare l'URL del tuo server, consulta. URL dell'endpoint Argo CD

Ad esempio, se l'URL del server CD Argo èhttps://my-argocd-dc855fdf-111122223333.eks-capabilities.us-west-2.amazonaws.com, l'URL del webhook è:

https://my-argocd-dc855fdf-111122223333.eks-capabilities.us-west-2.amazonaws.com/api/webhook

Configura i webhook in base al provider Git

GitHub: Nelle impostazioni del tuo repository, aggiungi un webhook con l'URL del webhook Argo CD. Imposta il tipo di contenuto su application/json e seleziona «Solo l'evento push».

GitLab: Nelle impostazioni del progetto, aggiungete un webhook con l'URL del webhook Argo CD. Abilita «Eventi push» e opzionalmente «Tag push events».

Bitbucket: nelle impostazioni del tuo repository, aggiungi un webhook con l'URL del webhook Argo CD. Seleziona «Repository push» come trigger.

CodeCommit: crea una EventBridge regola Amazon che attiva le modifiche allo stato del CodeCommit repository e invia notifiche all'endpoint webhook Argo CD.

Per istruzioni dettagliate sulla configurazione del webhook, consulta Argo CD Webhook Configuration. https://argo-cd.readthedocs.io/en/stable/operator-manual/webhook/

Nota

I webhook completano il polling, non lo sostituiscono. Argo CD continua a eseguire il polling dei repository come meccanismo di riserva nel caso in cui le notifiche dei webhook non vengano rilevate.

Fasi successive