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 : 20/01/2020

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). Comment puis-je résoudre cette erreur ?

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).

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).

Solution

Vous êtes le créateur du cluster

Si vous créez le cluster, suivez les étapes suivantes :

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). Consultez l'exemple suivant :

{
    "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 devrait être similaire à celui-ci :

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

Si vous n'avez pas créé le cluster, suivez les étapes suivantes :

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 rôle IAM au ConfigMap aws-auth.

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. Consultez l'exemple suivant :

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

Ajoutez le rôle IAM à mapRoles. Consultez l'exemple suivant :

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 la section Default Roles and Role Binding (Rôles par défaut et liaisons de rôles).

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

Si vous avez reçu l'erreur, suivez les étapes suivantes :

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 la section Using RBAC Authorization (Utilisation de l'autorisation RBAC) pour obtenir des instructions de résolution des problèmes.


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

Cette page peut-elle être améliorée ?


Vous avez besoin d’aide ?