J'essaie de me connecter à un cluster Amazon Elastic Kubernetes Service (Amazon EKS) depuis AWS CodeBuild à l'aide du rôle de service CodeBuild. Pourquoi mes commandes kubectl renvoient-elles des erreurs « erreur : Vous devez être connecté au serveur (non autorisé) » et comment résoudre le problème ?
Brève description
L'authentificateur AWS Identity and Access Management (IAM) n'autorise pas de chemin dans le rôle Amazon Resource Name (ARN) utilisé dans la carte de configuration. Si l'ARN du rôle (rolearn) dans votre ConfigMap aws-auth inclut un chemin d'accès, Amazon EKS renvoie l'erreur suivante :
« erreur : vous devez être connecté au serveur (non autorisé) »
L'ARN du rôle de service CodeBuild inclut le chemin suivant : /service-role. Lorsque vous spécifiez la valeur rolearn dans votre ConfigMap aws-auth, vous devez supprimer le chemin /service-role, ou tout autre chemin, si vous utilisez un autre rôle. Pour plus d'informations, consultez Gestion des utilisateurs ou des rôles IAM pour votre cluster.
Si vous recevez des erreurs après avoir supprimé des chemins de l'ARN du rôle dans votre ConfigMap aws-auth, suivez les instructions de l'article suivant : Comment résoudre une erreur de serveur non autorisé lorsque je me connecte au serveur d'API Amazon EKS ?
Solution
Identifier l'ARN de votre rôle de service CodeBuild et supprimer le chemin /service-role
1. Ouvrez la console CodeBuild.
2. Dans le panneau de navigation de gauche, sélectionnez Créer. Choisissez ensuite Créer des projets.
3. Sélectionnez le nom de votre projet. Choisissez ensuite Détails de création.
4. Dans la section Environnement, dans le volet Détails de création, copiez l'ARN du rôle de service CodeBuild.
5. Dans un éditeur de texte, collez l'ARN du rôle de service CodeBuild et supprimez le chemin /service-role. Copiez ensuite l'ARN modifié.
Exemple d'ARN de rôle de service CodeBuild
arn:aws:iam::123456789012:role/service-role/codebuild-project-service-role
Exemple d'ARN de rôle de service CodeBuild avec le chemin /service-role supprimé
arn:aws:iam::123456789012:role/codebuild-project-service-role
Ajoutez l'ARN du rôle de service CodeBuild modifié à votre ConfigMap aws-auth
1. Pour modifier la ConfigMap aws-auth dans un éditeur de texte, le propriétaire ou l'administrateur du cluster doit exécuter la commande kubectl suivante :
Remarque : Vous pouvez exécuter la commande à partir de votre ordinateur local ou d'une instance Amazon Elastic Compute Cloud (Amazon EC2) qui a accès au cluster EKS. L'utilisateur qui a créé le cluster a accès au cluster par défaut.
$ kubectl edit -n kube-system cm aws-auth
La ConfigMap aws-auth s'ouvre dans l'éditeur vi.
Remarque : Si vous recevez une erreur Error from server (NotFound): configmaps "aws-auth" not found, utilisez l'exemple ConfigMap aws-auth fourni dans l'article suivant : Gestion des utilisateurs ou des rôles IAM pour votre cluster.
2. Dans l'éditeur vi, ajoutez l'ARN du rôle de service CodeBuild modifié à la ConfigMap aws-auth en procédant comme suit :
Activez le mode Insertion en appuyant sur i.
Dans l'instruction mapRoles, sous system:masters, entrez l'ARN du rôle de service CodeBuild modifié pour la valeur rolearn.
Activez le mode de commande en appuyant sur Echap. Enregistrez et fermez ensuite le fichier en saisissant :wq.
Exemple d'instruction mapRoles qui inclut un ARN de rôle de service CodeBuild correctement formaté
mapRoles: |
- groups:
- system:masters
rolearn: arn:aws:iam::123456789012:role/codebuild-project-service-role
username: codebuild-project-service-role
Informations connexes
Comment résoudre une erreur de serveur non autorisée lorsque je me connecte au serveur d'API Amazon EKS ?