Comment résoudre une erreur de serveur non autorisé lorsque je me connecte au serveur d'API Amazon EKS ?

Date de la dernière mise à jour : 22/06/2021

Je reçois le message « error: You must be logged in to the server (Unauthorized) » (erreur : vous devez être connecté au serveur [Non autorisé]) lorsque j'utilise des commandes kubectl pour me connecter au serveur d'API Amazon Elastic Kubernetes Service (Amazon EKS).

Brève description

Avant de vous connecter au serveur d'API Amazon EKS, installez et configurez la dernière version de l'interface de ligne de commande AWS (AWS CLI).

Remarque : si vous recevez des erreurs lors de l'exécution de commandes à partir de l'interface de ligne de commande AWS (AWS CLI), assurez-vous d'utiliser la version la plus récente d'AWS CLI.

Ensuite, l'administrateur du cluster doit finaliser les étapes de l'une des sections suivantes :

  • Vous êtes le créateur du cluster
  • Vous n'êtes pas le créateur du cluster

Enfin, la personne ayant reçu l'erreur doit suivre les étapes de la section You're the user or role who received the error (Vous êtes l'utilisateur ou le rôle ayant reçu l'erreur).

Résolution

Vous êtes le créateur du cluster

1.    Pour voir la configuration de votre utilisateur ou rôle de l'interface de ligne de commande AWS, exécutez la commande suivante :

$ aws sts get-caller-identity

La sortie renvoie l'Amazon Resource Name (ARN) de l'utilisateur ou du rôle AWS Identity and Access Management (IAM). Par exemple :

{
    "UserId": "XXXXXXXXXXXXXXXXXXXXX",
    "Account": "XXXXXXXXXXXX",
    "Arn": "arn:aws:iam::XXXXXXXXXXXX:user/testuser"
}

2.    Vérifiez que l'ARN correspond au créateur du cluster.

3.    Mettez à jour ou générez le fichier kubeconfig à l'aide de l'une des commandes suivantes.

En tant qu'utilisateur IAM, exécutez la commande suivante :

$ aws eks update-kubeconfig --name eks-cluster-name --region aws-region

Remarque : remplacez eks_cluster-name par le nom de votre cluster. Remplacez aws-region par votre région AWS.

En tant que rôle IAM, exécutez la commande suivante :

$ aws eks update-kubeconfig --name eks-cluster-name --region aws-region --role-arn arn:aws:iam::XXXXXXXXXXXX:role/testrole

Remarque : remplacez eks_cluster-name par le nom de votre cluster. Remplacez aws-region par votre région AWS.

4.    Pour confirmer la mise à jour du fichier kubeconfig, exécutez la commande suivante :

$ kubectl config view --minify

5.    Pour confirmer l'authentification de votre utilisateur ou rôle IAM, exécutez la commande suivante :

$ kubectl get svc

Le résultat doit être similaire à ce qui suit :

NAME            TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE
kubernetes      ClusterIP   10.100.0.1     <none>        443/TCP   77d

Vous n'êtes pas le créateur du cluster

1.    Pour voir la configuration de votre utilisateur ou rôle de l'interface de ligne de commande AWS, exécutez la commande suivante :

$ aws sts get-caller-identity

La sortie renvoie l'ARN de l'utilisateur ou du rôle IAM.

2.    Demandez au propriétaire ou à l'administrateur du cluster d'ajouter votre utilisateur ou votre rôle IAM au ConfigMap aws-auth.

Remarque : vous pouvez également utiliser AssumeRole pour vous connecter en tant que créateur du cluster si vous disposez des autorisations IAM adéquates.

3.    Pour modifier le ConfigMap aws-auth dans un éditeur de texte, le propriétaire ou l'administrateur du cluster doit exécuter la commande suivante :

$ kubectl edit configmap aws-auth -n kube-system

4.    Pour ajouter un utilisateur IAM ou un rôle IAM, suivez l'une des étapes suivantes.

Ajoutez l'utilisateur IAM à mapUsers. Par exemple :

mapUsers: |
  - userarn: arn:aws:iam::XXXXXXXXXXXX:user/testuser
    username: testuser
    groups:
      - system:masters

Ajoutez le rôle IAM à mapRoles. Par exemple :

mapRoles: |
  - rolearn: arn:aws:iam::XXXXXXXXXXXX:role/testrole
    username: testrole
    groups:
      - system:masters

Remarque : le groupe system:masters autorise l'accès super-utilisateur pour effectuer n'importe quelle action sur n'importe quelle ressource. Pour plus d'informations, consultez Rôles par défaut et liaisons de rôles sur le site Web Kubernetes.

Vous êtes l'utilisateur ou le rôle ayant reçu l'erreur

1.    Pour mettre à jour ou générer le fichier kubeconfig après la mise à jour du ConfigMap aws-auth, exécutez l'une des commandes suivantes.

En tant qu'utilisateur IAM, exécutez la commande suivante :

$ aws eks update-kubeconfig --name eks-cluster-name --region aws-region

Remarque : remplacez eks_cluster-name par le nom de votre cluster. Remplacez aws-region par votre région AWS.

2.    En tant que rôle IAM, exécutez la commande suivante :

$ aws eks update-kubeconfig --name eks-cluster-name --region aws-region --role-arn arn:aws:iam::XXXXXXXXXXXX:role/testrole

Remarque : remplacez eks_cluster-name par le nom de votre cluster. Remplacez aws-region par votre région AWS.

3.    Pour confirmer la mise à jour du fichier kubeconfig, exécutez la commande suivante :

$ kubectl config view --minify

4.    Pour confirmer l'authentification de votre utilisateur ou rôle IAM, exécutez la commande suivante :

$ kubectl get svc

Le résultat devrait être similaire à celui-ci :

NAME            TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE
kubernetes      ClusterIP   10.100.0.1     <none>        443/TCP   77d

Remarque : si vous continuez à recevoir des erreurs, consultez les consignes de dépannage sur Utilisation de l'autorisation RBAC sur le site Web de Kubernetes.


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


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