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

Lecture de 3 minute(s)
0

Une erreur AccessDeniedException se produit 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 API eks:DescribeCluster2 avec le cluster pour générer un fichier kubeconfig pour un cluster Amazon EKS. Pour obtenir l'autorisation, associez une politique AWS Identity and Access Management (IAM) à un utilisateur IAM.

Résolution

Pour associer une politique IAM à un utilisateur, procédez comme suit :

  1. Ouvrez la console IAM. Ensuite, dans le volet de navigation, choisissez Utilisateurs ou Rôles.

  2. Sélectionnez le nom de l'utilisateur ou du rôle dans lequel intégrer une politique.

  3. Dans l'onglet Autorisations, choisissez Ajouter une politique intégrée.

  4. Choisissez l’onglet JSON.

  5. Utilisez un éditeur de texte pour remplacer le code par la politique IAM suivante :

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "eks:DescribeCluster"
          ],
          "Resource": "*"
        }
      ]
    }
  6. Choisissez Vérifier une politique.

  7. Dans Nom, entrez le nom de la politique. Par exemple : eks_update-kubeconfig.

  8. Choisissez Créer une politique.
    Remarque : Si vous avez appliqué l'authentification multifactorielle (MFA) pour les utilisateurs IAM qui utilisent l'interface de ligne de commande AWS (AWS CLI), vous devez vous authentifier avec MFA avant de passer à l'étape suivante. Un message de refus explicite indique que si MFA est faux, il existe une politique IAM qui refuse les 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"
            }
          }
        }
      ]
    }

    Comme vous utilisez un appareil MFA, vous devez utiliser un jeton MFA pour authentifier l'accès aux ressources AWS à l'aide de l'AWS CLI. Suivez les étapes décrites dans l'article Comment utiliser un jeton MFA pour authentifier l'accès à mes ressources AWS via l'AWS CLI ?Exécutez ensuite la commande de l'interface de ligne de commande AWS sts get-session-token. Remplacez arn-of-the-mfa-device par l'ARN de votre appareil MFA et code-from-token par le code de votre token :

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

    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
  9. Exécutez la commande update-kubeconfig et vérifiez qu'elle met à jour le fichier de configuration sous **~/.kube/config.**Remplacez region-code par le code de votre région AWS et cluster_name par le nom de votre cluster :

    aws eks --region region-code update-kubeconfig --name cluster_name
AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an