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 : 17/12/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).
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
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). 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
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. 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
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 les consignes de dépannage sur Utilisation de l'autorisation RBAC sur le site Web de Kubernetes.
Informations connexes
Cet article vous a-t-il été utile ?
Besoin d'aide pour une question technique ou de facturation ?