Come posso utilizzare l'API delle voci di accesso Amazon EKS per ripristinare l'accesso a un cluster EKS?
A causa di una modifica dell'utente Single Sign-On o di un'eliminazione o un danneggiamento di aws-auth ConfigMap, non riesco ad accedere al mio servizio Amazon Elastic Kubernetes (Amazon EKS).
Breve descrizione
Se perdi l'accesso a un cluster EKS, visualizzi un errore simile al seguente quando esegui i comandi kubectl:
"error: You must be logged in to the server (Unauthorized)."
Per riottenere l'accesso al cluster, utilizza le voci di accesso per gestire le autorizzazioni dei principali AWS Identity and Access Management (AWS IAM). Questa operazione viene eseguita dall'esterno del cluster Amazon EKS.
Nota: se il creatore del cluster EKS esiste, assumi il principale IAM del creatore del cluster EKS per effettuare il login e accedere al cluster. Per impostazione predefinita, il creatore del cluster EKS è l'amministratore del cluster. La procedura di seguito crea un ruolo di amministratore che coesiste con il ruolo IAM originale del creatore del cluster.
Risoluzione
Prerequisiti:
- Installa kubectl.
- Installa e configura l'ultima versione dell'Interfaccia della linea di comando AWS (AWS CLI).
- Hai un ruolo IAM con le seguenti autorizzazioni: CreateAccessEntry, ListAccessEntries, DescribeAccessEntry, DeleteAccessEntry e UpdateAccessEntry.
Nota: se visualizzi dei messaggi di errore quando esegui i comandi dell'interfaccia della linea di comando AWS, consulta la sezione Risolvere gli errori AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.
Utilizza l'API delle voci di accesso aws eks per gestire l'accesso al cluster Amazon EKS
Nota: nei seguenti comandi, sostituisci quanto segue:
Sostituisci <ACCOUNT_ID> con l'ID dell'account di origine in cui esiste il cluster EKS.
Sostituisci <REGION> con il nome della tua Regione AWS.
Sostituisci <CLUSTER_NAME> con il nome del tuo cluster EKS.
Sostituisci <IAM_PRINCIPAL_ARN> con l'ARN del ruolo per il quale desideri avere i diritti di amministratore.
Per utilizzare un'API delle voci di accesso aws eks per gestire l'accesso al cluster Amazon EKS, completa i seguenti passaggi:
-
Sul computer host dove è installato kubectl, assumi il ruolo IAM con le seguenti autorizzazioni:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "eks:ListAccessEntries", "eks:CreateAccessEntry", "eks:DescribeCluster", "eks:UpdateClusterConfig" ], "Resource": [ "arn:aws:eks:<REGION>:<ACCOUNT_ID>:cluster/<CLUSTER_NAME>" ] }, { "Effect": "Allow", "Action": [ "eks:DeleteAccessEntry", "eks:ListAssociatedAccessPolicies", "eks:DisassociateAccessPolicy", "eks:AssociateAccessPolicy", "eks:UpdateAccessEntry", "eks:DescribeAccessEntry" ], "Resource": [ "arn:aws:eks:<REGION>:<ACCOUNT_ID>:access-entry/<CLUSTER_NAME>/*" ] } ] } -
Per verificare la tua identità, esegui il seguente comando:
aws sts get-caller-identityNell'output del comando, prendi nota dell'ARN. È simile al seguente esempio: arn:aws:iam::<ACCOUNT_ID>:user/new-cluster-admin
-
Esegui il seguente comando per convalidare la modalità di autenticazione corrente del cluster Amazon EKS:
aws eks describe-cluster --name <CLUSTER_NAME> --query 'cluster.accessConfig.authenticationMode' --region <REGION>Se la modalità di autenticazione corrente del cluster Amazon EKS è API_AND_CONFIG_MAP, il cluster dispone già della modalità di accesso richiesta. Passa al punto 5.
-
Esegui il seguente comando per aggiornare la modalità di autenticazione del cluster Amazon EKS:
aws eks update-cluster-config --name <CLUSTER_NAME> --access-config authenticationMode=API_AND_CONFIG_MAP --region <REGION>Nota: puoi passare da una modalità di autenticazione CONFIG_MAP a una modalità API, ma non puoi tornare da una modalità API alla modalità CONFIG\ _MAP.
-
Esegui il seguente comando per creare una voce di accesso per il cluster e il ruolo IAM:
aws eks create-access-entry --cluster-name <CLUSTER_NAME> --principal-arn <IAM_PRINCIPAL_ARN> --region <REGION>L'output è simile al seguente:
{ "accessEntry": { "clusterName": "<CLUSTER_NAME>", "principalArn": "arn:aws:iam::<ACCOUNT_ID>:user/new-cluster-admin", "kubernetesGroups": [], "accessEntryArn": "arn:aws:eks:<REGION>:<ACCOUNT_ID>:access-entry/<CLUSTER_NAME>/user/<ACCOUNT_ID>/new-cluster-admin/26c6d1f8-4211-3fe0-f9d2-734b912dcd9a", "createdAt": "2024-02-13T19:27:45.370000+00:00", "modifiedAt": "2024-02-13T19:27:45.370000+00:00", "tags": {}, "username": "arn:aws:iam::<ACCOUNT_ID>:user/new-cluster-admin", "type": "STANDARD" } } -
Esegui il seguente comando per associare la policy AmazonEKSClusterAdminPolicy al cluster Amazon EKS e al ruolo IAM:
aws eks associate-access-policy --cluster-name <CLUSTER_NAME> \ --principal-arn <IAM_PRINCIPAL_ARN> \ --policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy \ --access-scope type=cluster \ --region <REGION>L'output è simile al seguente:
{ "accessEntry": { "clusterName": "<CLUSTER_NAME>", "principalArn": "arn:aws:iam::<ACCOUNT_ID>:user/new-cluster-admin", "kubernetesGroups": [], "accessEntryArn": "arn:aws:eks:<REGION>:<ACCOUNT_ID>:access-entry/<cluster_name>/user/<ACCOUNT_ID>/new-cluster-admin/7ec6efb3-31c8-edcf-3039-ca2b38e0d708", "createdAt": "2024-02-25T08:34:06.002000+00:00", "modifiedAt": "2024-02-25T08:34:06.002000+00:00", "tags": {}, "username": "arn:aws:iam::<ACCOUNT_ID>:user/new-cluster-admin", "type": "STANDARD" } } -
Per aggiornare o generare il file kubeconfig, esegui il seguente comando per connetterti al cluster EKS:
aws eks update-kubeconfig --name <CLUSTER_NAME> --region <REGION> -
Esegui il seguente comando per verificare che l'utente possa accedere al cluster EKS come amministratore:
kubectl auth can-i '*' '*' --all-namespaces
Nota: se puoi accedere al cluster EKS come amministratore, l'output mostra yes.
Informazioni correlate
A deep dive into simplified Amazon EKS access management controls (Approfondimento dei controlli semplificati di gestione degli accessi di Amazon EKS)
EKS Access Entries (Voci di accesso EKS) sul sito web di eksctl
- Argomenti
- Containers
- Lingua
- Italiano
