Pourquoi ne puis-je pas générer de fichier kubeconfig pour mon cluster Amazon EKS ?

Dernière mise à jour : 22/11/2021

J'obtiens une erreur AccessDeniedException lorsque j'essaie de générer un fichier kubeconfig pour un cluster Amazon Elastic Kubernetes Service (Amazon EKS).

Brève description

Vous devez être autorisé à utiliser l'action d'API eks:DescribeCluster sur le cluster afin de générer un fichier kubeconfig pour un cluster Amazon EKS. Pour obtenir l'autorisation, attachez une stratégie AWS Identity and Access Management (IAM) à un utilisateur IAM.

Résolution

Pour attacher une stratégie IAM à un utilisateur IAM, procédez comme suit :

1.    Ouvrez la console IAM.

2.    Dans le panneau de navigation, choisissez Utilisateurs ou Rôles.

3.    Sélectionnez le nom de l'utilisateur ou du rôle auquel vous souhaitez intégrer une stratégie.

4.    Dans l'onglet Autorisations, choisissez Ajouter une stratégie en ligne.

5.    Sélectionnez l'onglet JSON.

6.    Utilisez un éditeur de texte pour remplacer le code par la stratégie IAM suivante :

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

7.    Choisissez Examiner une stratégie.

8.    Pour Nom, saisissez un nom pour la stratégie. Par exemple : eks_update-kubeconfig.

Remarque : vous pouvez choisir n'importe quel nom pour la stratégie.

9.    Choisissez Créer une stratégie.

Un message de refus explicite indique que si l'authentification multi-facteur (MFA) est fausse, il existe une stratégie IAM qui refuse la plupart des actions :

{
  "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"
        }
      }
    }
  ]
}

Remarque : étant donné que vous utilisez un dispositif MFA, vous devez utiliser un jeton MFA pour authentifier l'accès aux ressources AWS avec AWS Command Line Interface (AWS CLI). Suivez les étapes de l'article Comment utiliser un jeton MFA pour authentifier l'accès à mes ressources AWS via l'AWS CLI ? Ensuite, exécutez la commande AWS CLI sts get-session-token.

Par exemple :

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

Remarque : remplacez arn-of-the-mfa-device par l'ARN de votre dispositif MFA et code-from-token par le code de votre jeton.

Vous pouvez utiliser des informations d'identification temporaires en exportant les valeurs vers des variables d'environnement.

Par exemple :

$ 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

Exécutez la commande update-kubeconfig et confirmez qu'elle met à jour le fichier de configuration sous ~/.kube/config :

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

Remarque : remplacez region-code par le code de votre région AWS et cluster name par le nom de votre cluster.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?