Comment résoudre les erreurs « erreur : vous devez être connecté au serveur (non autorisé) » lors de la connexion à un cluster Amazon EKS à partir de CodeBuild ?

Date de la dernière mise à jour : 04/11/2021

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
```

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


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