Perché non riesco a creare un file kubeconfig per il mio cluster Amazon EKS?

Ultimo aggiornamento: 22-11-2021

Viene visualizzato un errore AccessDeniedException quando provo a generare un file kubeconfig per un cluster Amazon Elastic Kubernetes Service (Amazon EKS).

Breve descrizione

È necessario disporre dell'autorizzazione per utilizzare l'operazione API eks:DescribeCluster con il cluster per generare un file kubeconfig per un cluster Amazon EKS. Per ottenere l'autorizzazione, allega una policy AWS Identity and Access Management (IAM) a un utente IAM.

Risoluzione

Per allegare una policy IAM a un utente IAM, completa la seguente procedura:

1.    Apri la console IAM.

2.    Nel pannello di navigazione, scegli Utenti o ruoli.

3.    Seleziona il nome dell'utente o del ruolo in cui incorporare una policy.

4.    Nella scheda Autorizzazioni, scegli Aggiungi policy in linea.

5.    Scegli la scheda JSON.

6.    Usa un editor di testo per sostituire il codice con la seguente policy IAM:

{
   "Version": "2012-10-17",
   "Statement": [
       { 
            "Effect": "Allow",
            "Action": [
                "eks:DescribeCluster"
            ],
            "Resource": "*"
       }
    ]
}

7.    Scegli Rivedi policy.

8.    Per Nome, inserisci un nome per la tua policy. Ad esempio: eks_update-kubeconfig.

Nota: puoi scegliere qualsiasi nome per la policy.

9.    Scegli Crea policy.

Un messaggio di rifiuto esplicito indica che se l'autenticazione a più fattori (MFA) è false, allora esiste una policy IAM che nega la maggior parte delle operazioni:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "BlockMostAccessUnlessSignedInWithMFA",
      "Effect": "Deny",
      "NotAction": [
        "iam:CreateVirtualMFADevice",
        "iam:EnableMFADevice",
        "iam:ListMFADevices",
        "iam:ListUsers",
        "iam:ListVirtualMFADevices",
        "iam:ResyncMFADevice",
        "sts:GetSessionToken"
      ],
      "Resource": "*",
      "Condition": {
        "BoolIfExists": {
          "aws:MultiFactorAuthPresent": "false"
        }
      }
    }
  ]
}

Nota: poiché utilizzi un dispositivo MFA, devi utilizzare un token MFA per autenticare l'accesso alle risorse AWS con AWS Command Line Interface (AWS CLI). Segui le operazioni riportate nell’articolo In che modo posso utilizzare un token MFA per autenticare l'accesso alle mie risorse AWS tramite l'AWS CLI? Quindi esegui il comando sts get-session-token di AWS CLI.

Ad esempio:

$ aws sts get-session-token --serial-number arn-of-the-mfa-device --token-code code-from-token

Nota: sostituisci arn-of-the-mfa-device con l’ARN del tuo dispositivo MFA e code-from-token con il codice del token.

Puoi utilizzare delle credenziali temporanee esportando i loro valori nelle variabili di ambiente utilizzando questi comandi.

Ad esempio:

$ export AWS_ACCESS_KEY_ID=example-access-key-as-in-previous-output

$ export AWS_SECRET_ACCESS_KEY=example-secret-access-key-as-in-previous-output

$ export AWS_SESSION_TOKEN=example-session-token-as-in-previous-output

Esegui il comando update-kubeconfig e verifica che il comando aggiorni il file di configurazione in ~/.kube/config:

aws eks --region region-code update-kubeconfig --name cluster_name

Nota: sostituisci region-code con il codice della regione AWS e cluster name con il nome del tuo cluster.


Questo articolo è stato utile?


Hai bisogno di supporto tecnico o per la fatturazione?