Registra i cluster di destinazione - 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à.

Registra i cluster di destinazione

Registra i cluster per consentire ad Argo CD di distribuire applicazioni su di essi. È possibile registrare lo stesso cluster su cui è in esecuzione Argo CD (cluster locale) o cluster remoti in account o regioni diversi.

Prerequisiti

  • È stato creato un cluster EKS con funzionalità Argo CD

  • kubectlconfigurato per comunicare con il cluster

  • Per i cluster remoti: autorizzazioni IAM e voci di accesso appropriate

Registra il cluster locale

Per distribuire le applicazioni nello stesso cluster su cui è in esecuzione Argo CD, registratelo come obiettivo di distribuzione.

Importante

La funzionalità Argo CD non registra automaticamente il cluster locale. È necessario registrarlo in modo esplicito per distribuire le applicazioni nello stesso cluster. È possibile utilizzare il nome del cluster in-cluster per motivi di compatibilità con la maggior parte degli esempi di Argo CD online.

Nota

Un EKS Access Entry viene creato automaticamente per il cluster locale con l'Argo CD Capability Role, ma per impostazione predefinita non vengono concesse autorizzazioni RBAC per Kubernetes. Ciò segue il principio del privilegio minimo: è necessario configurare in modo esplicito le autorizzazioni richieste da Argo CD in base al caso d'uso. Ad esempio, se si utilizza questo cluster solo come hub Argo CD per gestire cluster remoti, non sono necessarie autorizzazioni di distribuzione locale. Per le opzioni di configurazione, consulta la sezione relativa ai requisiti RBAC di Access Entry di seguito.

Utilizzo dell'Argo CD CLI:

argocd cluster add <cluster-context-name> \ --aws-cluster-name arn:aws:eks:us-west-2:111122223333:cluster/my-cluster \ --name local-cluster

Utilizzo di un segreto Kubernetes:

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

Applica la configurazione:

kubectl apply -f local-cluster.yaml
Nota

Utilizza l'ARN del cluster EKS nel server campo, non l'URL del server API Kubernetes. La funzionalità gestita richiede ARNs l'identificazione dei cluster. L'impostazione predefinita non kubernetes.default.svc è supportata.

Registra cluster remoti

Per eseguire la distribuzione su cluster remoti:

Fase 1: Creare la voce di accesso sul cluster remoto

Sostituisci region-code con la AWS regione in cui si trova il cluster remoto, sostituisci remote-cluster con il nome del cluster remoto e sostituisci l'ARN con il tuo ruolo di funzionalità Argo CD ARN.

aws eks create-access-entry \ --region region-code \ --cluster-name remote-cluster \ --principal-arn arn:aws:iam::[.replaceable]111122223333:role/ArgoCDCapabilityRole \ --type STANDARD

Fase 2: Associare una politica di accesso alle autorizzazioni RBAC di Kubernetes

L'Access Entry richiede le autorizzazioni RBAC di Kubernetes per Argo CD per distribuire le applicazioni. Per iniziare rapidamente, puoi utilizzare: AmazonEKSClusterAdminPolicy

aws eks associate-access-policy \ --region region-code \ --cluster-name remote-cluster \ --principal-arn arn:aws:iam::[.replaceable]111122223333:role/ArgoCDCapabilityRole \ --policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy \ --access-scope type=cluster
Importante

AmazonEKSClusterAdminPolicyFornisce l'accesso completo all'amministratore del cluster (equivalente asystem:masters). È utile per iniziare, ma non deve essere utilizzato in produzione. Per gli ambienti di produzione, utilizza autorizzazioni più restrittive associando l'Access Entry a gruppi Kubernetes personalizzati e creando ruoli o associazioni appropriati. ClusterRole Consulta la sezione sulla configurazione di produzione di seguito per la configurazione con privilegi minimi.

Fase 3: Registrare il cluster in Argo CD

Utilizzo dell'Argo CD CLI:

argocd cluster add <cluster-context-name> \ --aws-cluster-name arn:aws:eks:us-west-2:111122223333:cluster/remote-cluster \ --name remote-cluster

Utilizzo di un segreto Kubernetes:

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

Applica la configurazione:

kubectl apply -f remote-cluster.yaml

Cluster tra account

Per eseguire la distribuzione su cluster con account diversi: AWS

  1. Nell'account di destinazione, creare un Access Entry sul cluster EKS di destinazione utilizzando l'ARN Argo CD IAM Capability Role dall'account di origine come principale

  2. Associa una politica di accesso alle autorizzazioni Kubernetes RBAC appropriate

  3. Registra il cluster in Argo CD utilizzando il relativo ARN del cluster EKS

Non è richiesta la creazione di ruoli IAM aggiuntivi o la configurazione delle policy di fiducia: EKS Access Entries gestisce l'accesso tra account.

Il formato ARN del cluster include la regione, quindi le distribuzioni interregionali utilizzano lo stesso processo delle distribuzioni nella stessa regione.

Verifica la registrazione del cluster

Visualizza i cluster registrati:

kubectl get secrets -n argocd -l argocd.argoproj.io/secret-type=cluster

Oppure controlla lo stato del cluster nell'interfaccia utente di Argo CD in Impostazioni → Cluster.

Cluster privati

La funzionalità Argo CD fornisce un accesso trasparente a 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.

È sufficiente registrare il cluster privato utilizzando la relativa ARN: non è richiesta alcuna configurazione di rete aggiuntiva.

Accedi ai requisiti RBAC di ingresso

Quando si crea una funzionalità Argo CD, viene creata automaticamente una voce EKS Access Entry per il ruolo Capability, ma per impostazione predefinita non vengono concesse autorizzazioni RBAC per Kubernetes. Questa progettazione intenzionale segue il principio del privilegio minimo: casi d'uso diversi richiedono autorizzazioni diverse.

Ad esempio: * Se si utilizza il cluster solo come hub Argo CD per gestire cluster remoti, non sono necessarie autorizzazioni di distribuzione locale* Se si distribuiscono applicazioni localmente, è necessario l'accesso in lettura a livello di cluster e l'accesso in scrittura a namespace specifici * Se è necessario creare, sono necessarie autorizzazioni di amministratore del cluster aggiuntive CRDs

È necessario configurare in modo esplicito le autorizzazioni richieste da Argo CD in base alle proprie esigenze.

Autorizzazioni minime per Argo CD

Argo CD necessita di due tipi di autorizzazioni per funzionare senza errori:

Autorizzazioni di lettura (a livello di cluster): Argo CD deve essere in grado di leggere tutti i tipi di risorse e le definizioni di risorse personalizzate (CRDs) in tutto il cluster per:

  • Scoperta delle risorse e controlli dello stato

  • Rilevamento della deriva tra lo stato desiderato e quello effettivo

  • Convalida delle risorse prima della distribuzione

Autorizzazioni di scrittura (specifiche dello spazio dei nomi): Argo CD richiede le autorizzazioni di creazione, aggiornamento ed eliminazione per le risorse definite in Applicazioni:

  • Implementa i carichi di lavoro delle applicazioni (implementazioni, servizi, ecc.) ConfigMaps

  • Applica risorse personalizzate (CRDs specifiche per le tue applicazioni)

  • Gestisci il ciclo di vita delle applicazioni

Configurazione rapida

Per iniziare rapidamente, in ambienti di test o sviluppo, utilizza: AmazonEKSClusterAdminPolicy

aws eks associate-access-policy \ --region region-code \ --cluster-name my-cluster \ --principal-arn arn:aws:iam::[.replaceable]111122223333:role/ArgoCDCapabilityRole \ --policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy \ --access-scope type=cluster
Importante

AmazonEKSClusterAdminPolicyFornisce l'accesso completo all'amministratore del cluster (equivalente asystem:masters), inclusa la possibilità di creare CRDs, modificare risorse a livello di cluster e distribuirle in qualsiasi spazio dei nomi. Questa funzionalità è utile per lo sviluppo, POCs ma non deve essere utilizzata in produzione. Per la produzione, utilizzate la configurazione con privilegi minimi riportata di seguito.

Configurazione di produzione con privilegi minimi

Per gli ambienti di produzione, crea un RBAC Kubernetes personalizzato che garantisca:

  • Accesso in lettura a livello di cluster a tutte le risorse (per il rilevamento e i controlli di integrità)

  • Accesso in scrittura specifico per lo spazio dei nomi (per le distribuzioni)

Fase 1: Associare Access Entry a un gruppo Kubernetes personalizzato

aws eks associate-access-policy \ --region region-code \ --cluster-name my-cluster \ --principal-arn arn:aws:iam::[.replaceable]111122223333:role/ArgoCDCapabilityRole \ --policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSEditPolicy \ --access-scope type=namespace,namespaces=app-namespace

Fase 2: ClusterRole Creazione per l'accesso in lettura

apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: argocd-read-all rules: # Read access to all resources for discovery and health checks - apiGroups: ["*"] resources: ["*"] verbs: ["get", "list", "watch"]

Fase 3: Creazione di un ruolo per l'accesso in scrittura ai namespace delle applicazioni

apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: argocd-deploy namespace: app-namespace rules: # Full access to deploy application resources - apiGroups: ["*"] resources: ["*"] verbs: ["*"]

Fase 4: Associare i ruoli al gruppo Kubernetes

apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: argocd-read-all subjects: - kind: Group name: eks-access-entry:arn:aws:iam::111122223333:role/ArgoCDCapabilityRole apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: argocd-read-all apiGroup: rbac.authorization.k8s.io --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: argocd-deploy namespace: app-namespace subjects: - kind: Group name: eks-access-entry:arn:aws:iam::111122223333:role/ArgoCDCapabilityRole apiGroup: rbac.authorization.k8s.io roleRef: kind: Role name: argocd-deploy apiGroup: rbac.authorization.k8s.io
Nota

Il formato del nome del gruppo per Access Entries è eks-access-entry: seguito dall'ARN principale. Ripetere l'operazione RoleBinding per ogni namespace in cui Argo CD deve distribuire le applicazioni.

Importante

Argo CD deve essere in grado di leggere tutti i tipi di risorse del cluster a fini di verifica e individuazione dello stato, anche se viene distribuito solo su namespace specifici. Senza accesso in lettura a livello di cluster, Argo CD mostrerà errori durante il controllo dello stato delle applicazioni.

Limita l'accesso ai cluster con Projects

Importante

Nella funzionalità gestita, ogni cluster di destinazione può essere associato solo a un progetto Argo CD. Ciò differisce dall'Argo CD open source, in cui più progetti possono essere implementati nello stesso cluster. Specificate il progetto al momento della registrazione del cluster utilizzando il project campo nel segreto del cluster.

Usa Projects per controllare in quali cluster e namespace le applicazioni possono effettuare la distribuzione configurando i cluster e i namespace di destinazione consentiti in: spec.destinations

apiVersion: argoproj.io/v1alpha1 kind: AppProject metadata: name: production namespace: argocd spec: destinations: - server: arn:aws:eks:us-west-2:111122223333:cluster/prod-cluster namespace: '*' - server: arn:aws:eks:eu-west-1:111122223333:cluster/prod-eu-cluster namespace: '*' sourceRepos: - 'https://github.com/example/production-apps'

Per informazioni dettagliate, vedi Lavorare con Argo CD Projects.

Risorse aggiuntive