Knowledge Center Monthly Newsletter - March 2025
Stay up to date with the latest from the Knowledge Center. See all new and updated Knowledge Center articles published in the last month and re:Post’s top contributors.
Comment puis-je corriger l’erreur « You must be logged in to the server (Unauthorized) » (Vous devez être connecté au serveur (non autorisé)) lorsque je me connecte au serveur d’API Amazon EKS ?
J’utilise les commandes kubectl pour me connecter au serveur API Amazon Elastic Kubernetes Service (Amazon EKS). J’ai reçu le message « error: You must be logged in to the server (Unauthorized). » (erreur : vous devez être connecté au serveur (non autorisé)).
Brève description
Cette erreur se produit lorsque l’entité AWS Identity and Access Management (IAM) configurée dans kubectl n’est pas authentifiée par Amazon EKS. Vous êtes authentifié et autorisé à accéder à votre cluster Amazon EKS en fonction de l’entité IAM (utilisateur ou rôle) que vous utilisez. Cette erreur est généralement due à l’une des configurations suivantes :
- Vous avez configuré l’outil kubectl de sorte qu’il utilise votre utilisateur ou rôle IAM.
- Vous avez mappé votre entité IAM à ConfigMap aws-auth.
Pour résoudre ce problème, suivez les étapes décrites dans l’une des sections suivantes en fonction de votre cas d’utilisation :
- Vous êtes le créateur du cluster
- Vous n’êtes pas le créateur du cluster
- Utiliser les entrées d’accès
Résolution
Remarque : si des erreurs surviennent lorsque vous exécutez des commandes de l’interface de la ligne de commande AWS (AWS CLI), consultez la page Résoudre les erreurs liées à AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l’AWS CLI.
Vous êtes le créateur du cluster
Si votre entité IAM a été utilisée pour créer le cluster Amazon EKS, c’est que vous êtes le créateur du cluster. Pour corriger l’erreur en tant que créateur du cluster, procédez comme suit :
-
Dans Amazon CloudWatch Log Insights, sélectionnez le groupe de journaux pour votre cluster Amazon EKS. Par exemple, /aws/eks/my-cluster/cluster. Exécutez ensuite la requête suivante :
fields @logstream, @timestamp, @message| sort @timestamp desc | filter @logStream like /authenticator/ | filter @message like "username=kubernetes-admin" | limit 50
Remarque : Activez les journaux de l’authentificateur Amazon EKS.
La requête renvoie l’entité IAM qui est mappée en tant que créateur du cluster :@messagetime="2022-05-26T18:55:30Z" level=info msg="access granted" arn="arn:aws:iam::123456789000:user/testuser" client="127.0.0.1:57586" groups="[system:masters]" method=POST path=/authenticate uid="aws-iam-authenticator:123456789000:AROAFFXXXXXXXXXX" username=kubernetes-admin
-
Examinez l’entité IAM du créateur de cluster pour l’AWS CLI. Pour voir si l’entité IAM est configurée pour l’AWS CLI dans votre environnement shell, exécutez la commande suivante :
$ aws sts get-caller-identity
Vous pouvez également utiliser un profil spécifique pour exécuter cette commande :
$ aws sts get-caller-identity --profile MY-PROFILE
La sortie renvoie l’Amazon Resource Name (ARN) de l’entité IAM configurée pour AWS CLI.
Exemple :{ "UserId": "XXXXXXXXXXXXXXXXXXXXX", "Account": "XXXXXXXXXXXX", "Arn": "arn:aws:iam::XXXXXXXXXXXX:user/testuser" }
Vérifiez que l’entité IAM renvoyée correspond à l’entité IAM du créateur du cluster. Si l’entité IAM renvoyée n’est pas celle du créateur du cluster, mettez à jour la configuration de l’AWS CLI pour utiliser l’entité IAM du créateur de cluster.
-
Mettez à jour ou générez le fichier kubeconfig en exécutant 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 le nom de votre région AWS.
Pour spécifier un profil d’AWS CLI pour le fichier kubeconfig, exécutez la commande suivante :$ aws eks update-kubeconfig --name eks-cluster-name --region aws-region --profile my-profile
Remarque : remplacez eks-cluster-name par le nom de votre cluster. Remplacez aws-region par le nom de votre région. Remplacez my-profile par le nom de votre profil.
-
Pour vérifier que le fichier kubeconfig est mis à jour, exécutez la commande suivante :
$ kubectl config view --minify
-
Pour vérifier que votre entité IAM est authentifiée et que vous pouvez accéder à votre cluster EKS, exécutez la commande suivante :
$ kubectl get svc
Exemple de résultat :
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 votre entité IAM n’a pas été utilisée pour créer le cluster, c’est que vous n’êtes pas le créateur du cluster. Dans ce cas, suivez les étapes suivantes pour mapper votre entité IAM au ConfigMap aws-auth afin d’autoriser l’accès au cluster :
-
Examinez l’entité IAM du créateur de cluster pour l’AWS CLI. Pour voir l’entité IAM configurée pour l’AWS CLI dans votre environnement shell, exécutez la commande suivante :
$ aws sts get-caller-identity
Vous pouvez également utiliser un profil spécifique pour exécuter cette commande :
$ aws sts get-caller-identity --profile my-profile
La sortie renvoie l’ARN de l’entité IAM configurée pour l’AWS CLI.
Exemple :{ "UserId": "XXXXXXXXXXXXXXXXXXXXX", "Account": "XXXXXXXXXXXX", "Arn": "arn:aws:iam::XXXXXXXXXXXX:user/testuser" }
Vérifiez que l’entité IAM renvoyée correspond à l’entité IAM du créateur du cluster. Si l’entité IAM renvoyée n’est pas celle du créateur du cluster, mettez à jour la configuration de l’AWS CLI pour utiliser l’entité IAM du créateur de cluster. Ensuite, utilisez kubectl pour réessayer d’accéder à votre cluster. Si le problème persiste, passez à l’étape suivante.
-
Si l’entité IAM renvoyée n’est pas le créateur du cluster, ajoutez votre entité au ConfigMap aws-auth pour lui permettre d’accéder au cluster. Comme seul l’administrateur du cluster peut modifier le ConfigMap aws-auth, effectuez l’une des tâches suivantes :
Pour utiliser l’entité IAM du créateur du cluster afin d’accéder au cluster, suivez les étapes décrites dans la section Vous êtes le créateur du cluster.
Vous pouvez également demander à l’administrateur du cluster d’effectuer cette action. -
Vérifiez si l’entité IAM figure dans le ConfigMap aws-auth en exécutant la commande suivante :
eksctl get iamidentitymapping --cluster cluster-name
-ou-
kubectl describe configmap aws-auth -n kube-system
Si votre entité IAM se trouve dans le ConfigMap aws-auth, passez à l'étape suivante. Si votre entité IAM ne se trouve pas dans le ConfigMap aws-auth, exécutez la commande suivante pour mapper automatiquement votre entité IAM :
eksctl create iamidentitymapping \ --cluster $CLUSTER-NAME \ --region $REGION \ --arn arn:aws:iam::XXXXXXXXXXXX:user/testuser \ --group system:masters \ --no-duplicate-arns \ --username admin-user1
Vous pouvez également modifier le ConfigMap aws-auth pour mapper manuellement votre entité IAM :
$ kubectl edit configmap aws-auth -namespace kube-system
Pour ajouter une entité IAM au ConfigMap aws-auth, ajoutez l’ARN de l’utilisateur ou du rôle IAM à mapUsers.
Exemple d’utilisateur IAM :mapUsers: | - userarn: arn:aws:iam::XXXXXXXXXXXX:user/testuser username: testuser groups: - system:masters
Exemple de rôle IAM :
mapRoles: | - rolearn: arn:aws:iam::XXXXXXXXXXXX:role/testrole username: testrole groups: - system:masters
Important :
Le rôle IAM doit être mappé sans le chemin. Pour plus d’informations sur les exigences du chemin d’accès de rolearn, consultez la section ConfigMap aws-auth n’accorde pas l’accès à la section cluster.
Pour spécifier rolearn pour un rôle IAM AWS IAM Identity Center, supprimez le chemin d’accès « /aws-reserved/sso.amazonaws.com/REGION » de l’ARN du rôle. Si vous ne le faites pas, l’entrée dans ConfigMap ne peut pas vous autoriser en tant qu’utilisateur valide.
Le groupe system:masters autorise les super utilisateurs à accéder à n’importe quelle ressource pour y effectuer des actions. Pour plus d'informations, consultez la page Rôles par défaut et liaisons de rôle sur le site Web de Kubernetes. Pour restreindre l’accès de cet utilisateur, créez un rôle Amazon EKS et une ressource de liaison de rôle. Pour plus d’informations, consultez Autorisations requises. -
Exécutez la commande suivante pour mettre à jour ou générer le fichier kubeconfig. Assurez-vous que l’AWS CLI est configurée avec votre entité IAM.
$ 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 le nom de votre région.
Vous pouvez également utiliser un profil spécifique pour exécuter cette commande :$ aws eks update-kubeconfig --name eks-cluster-name --region aws-region --profile my-profile
Remarque : remplacez eks-cluster-name par le nom de votre cluster. Remplacez aws-region par le nom de votre région. Remplacez my-profile par le nom de votre profil.
-
Pour vérifier que le fichier kubeconfig est mis à jour, exécutez la commande suivante :
$ kubectl config view --minify
-
Pour vérifier si votre utilisateur ou rôle IAM est authentifié, essayez à nouveau d’accéder au cluster. Par exemple, vous pouvez exécuter la commande suivante pour vérifier si l’erreur est résolue :
$ kubectl get svc
Exemple de résultat :
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 77d
Utiliser les entrées d’accès pour retrouver l’accès au cluster
Utilisez l’API CreateAccessEntry pour fournir ou restaurer l’accès à votre cluster Amazon EKS. Pour plus d’informations, consultez Comment puis-je utiliser l’API d’entrée d’accès Amazon EKS pour récupérer l’accès à un cluster EKS ?
Résolution des problèmes
Lorsque vous exécutez une commande kubectl, une requête est envoyée au serveur d’API du cluster Amazon EKS. Ensuite, l’authentificateur Amazon EKS tente d’authentifier cette requête. Si l’authentificateur Amazon EKS ne parvient pas à authentifier la requête, vérifiez les journaux de l’authentificateur EKS dans CloudWatch. Utilisez les conseils de résolution des problèmes suivants pour identifier le problème.
Accéder aux journaux de votre authentificateur EKS
- Activez la journalisation pour votre cluster Amazon EKS.
- Ouvrez CloudWatch Log Insights.
- Sélectionnez le groupe de journaux de votre cluster. Exemple : « /aws/eks/example-cluster/cluster ».
- Exécutez la requête suivante :
Pour identifier les lignes de journal correspondant à l’intervalle de temps au cours duquel l’erreur s’est produite, exécutez les commandes kubectl.fields @timestamp, @message| filter @logStream like /authenticator/ | sort @timestamp desc | limit 1000
Consulter les journaux de votre authentificateur EKS
En fonction de la cause de l’erreur, effectuez les tâches suivantes :
-
Si le problème est dû à l’utilisation d’une entité IAM incorrecte pour kubectl, examinez la configuration kubeconfig kubectl et de l’AWS CLI. Assurez-vous d’utiliser la bonne entité IAM. Dans l’exemple de résultat suivant, l’entité IAM utilisée par kubectl ne peut pas être validée. Examinez l’entité IAM que kubectl utilise et assurez-vous qu’elle existe dans IAM et que l’accès par programme de l’entité est activé.
Exemple de résultat :time="2022-12-26T20:46:48Z" level=warning msg="access denied" client="127.0.0.1:43440" error="sts getCallerIdentity failed: error from AWS (expected 200, got 403). Body: {\"Error\":{\"Code\":\"InvalidClientTokenId\",\"Message\":\"The security token included in the request is invalid.\",\"Type\":\"Sender\"},\"RequestId\":\"a9068247-f1ab-47ef-b1b1-cda46a27be0e\"}" method=POST path=/authenticate
-
Si le problème est dû au fait que votre entité IAM n’est pas mappée ou est incorrectement mappée dans le ConfigMap aws-auth, revoyez le ConfigMap aws-auth. Assurez-vous que l’entité IAM est correctement mappée et qu’elle répond bien aux exigences répertoriées dans la section Vous n’êtes pas le créateur du cluster. Pour les entités IAM incorrectement mappées ou manquantes, les journaux de l’authentificateur EKS ressemblent à l’exemple de résultat suivant :
time="2022-12-28T15:37:19Z" level=warning msg="access denied" arn="arn:aws:iam::XXXXXXXXXX:role/admin-test-role" client="127.0.0.1:33384" error="ARN is not mapped" method=POST path=/authenticate
-
Si le ConfigMap aws-auth a été mis à jour et que vous avez perdu l’accès au cluster, utilisez l’entité IAM du créateur du cluster pour accéder au cluster. Comme le créateur du cluster n’a pas besoin d’être mappé dans le ConfigMap aws-auth, utilisez cette entité IAM pour accéder au cluster.
-
Si l’entité IAM du créateur du cluster a été supprimée, recréez la même entité IAM avec la même convention de dénomination. Cette entité IAM de création de cluster recréée peut ensuite avoir le même ARN que l’entité IAM. Suivez les étapes de la section Vous êtes le créateur du cluster pour utiliser l’entité IAM afin d’accéder au cluster.
-
Si le créateur du cluster est un rôle IAM créé pour un utilisateur SSO qui a été supprimé, vous ne pouvez pas recréer ce rôle IAM. Dans ce cas, contactez AWS Support pour obtenir de l’aide.
Informations connexes
Utilisation de l’autorisation RBAC sur le site Web de Kubernetes
Autoriser les utilisateurs IAM à accéder à Kubernetes avec des entrées d’accès EKS
Entrées d’accès EKS sur le site Web d’eksctl
Vidéos associées


Contenus pertinents
- demandé il y a 8 moislg...
- L3 Troubleshooting Workshop - Error when trying to increase the size of the Application settings VHDdemandé il y a un moislg...
- demandé il y a 9 moislg...
- AWS OFFICIELA mis à jour il y a un an
- Comment puis-je utiliser l'API d'entrée d'accès Amazon EKS pour récupérer l'accès à un cluster EKS ?AWS OFFICIELA mis à jour il y a un an
- AWS OFFICIELA mis à jour il y a 2 ans