web-dev-qa-db-fra.com

erreur kubectl Vous devez être connecté au serveur (non autorisé) pour accéder au cluster EKS.

J'ai essayé de suivre le guide de démarrage pour EKS. Lorsque j'ai essayé d'appeler kubectl get service, j'ai reçu le message suivant: erreur: vous devez être connecté au serveur (non autorisé) Voici ce que j'ai fait:
1. Création du cluster EKS.
2. Créé le fichier de configuration comme suit:

apiVersion: v1
clusters:
- cluster:
    server: https://*********.yl4.us-west-2.eks.amazonaws.com
    certificate-authority-data: *********
  name: *********
contexts:
- context:
    cluster: *********
    user: aws
  name: aws
current-context: aws
kind: Config
preferences: {}
users:
- name: aws
  user:
    exec:
      apiVersion: client.authentication.k8s.io/v1alpha1
      command: heptio-authenticator-aws
      args:
        - "token"
        - "-i"
        - "*********"
        - "-r"
        - "arn:aws:iam::*****:role/******"
  1. Téléchargé et installé le dernier aws cli
  2. Ran aws configurer et définir les informations d'identification pour mon utilisateur IAM et la région comme us-west-2
  3. Ajout d'une stratégie à l'utilisateur IAM pour sts: AssumeRole pour le rôle EKS et configuration en tant que relation de confiance.
  4. Configurez kubectl pour utiliser le fichier de configuration

Je peux obtenir un jeton en exécutant le jeton heptio-authentator-aws -r arn: aws: iam :: **********: role/********* -i my-cluster -ame Cependant, lorsque j'essaie d'accéder au cluster, l'erreur continue à se produire: vous devez être connecté au serveur (non autorisé).

Une idée de comment résoudre ce problème?

17
Itay k

Lorsqu'un cluster Amazon EKS est créé, l'entité IAM (utilisateur ou rôle) qui crée le cluster est ajoutée à la table d'autorisation Kubernetes RBAC en tant qu'administrateur. Initialement, seul cet utilisateur IAM peut appeler le serveur API Kubernetes à l'aide de kubectl. 

eks-docs

Par conséquent, pour ajouter un accès à d'autres utilisateurs aws, commencez par éditer ConfigMap afin d'ajouter un utilisateur ou un rôle IAM à un cluster Amazon EKS.

Vous pouvez éditer le fichier ConfigMap en exécutant: kubectl edit -n kube-system configmap/aws-auth, après quoi un éditeur avec lequel vous mapperez de nouveaux utilisateurs vous sera attribué.

apiVersion: v1
data:
  mapRoles: |
    - rolearn: arn:aws:iam::555555555555:role/devel-worker-nodes-NodeInstanceRole-74RF4UBDUKL6
      username: system:node:{{EC2PrivateDNSName}}
      groups:
        - system:bootstrappers
        - system:nodes
  mapUsers: |
    - userarn: arn:aws:iam::111122223333:user/ops-user
      username: ops-user
      groups:
        - system:masters
  mapAccounts: |
    - "111122223333"

Tenez compte de mapUsers où vous ajoutez ops-user avec le libellé mapAccounts qui mappe le compte utilisateur AWS avec un nom d'utilisateur sur le cluster Kubernetes.

Cependant, aucune action n'est fournie dans RBAC par cette action uniquement; vous devez toujours créer des liaisons de rôle dans votre cluster pour fournir les autorisations à ces entités. 

Comme le stipule la documentation Amazon ( iam-docs ), vous devez créer une liaison de rôle sur le cluster kubernetes pour l'utilisateur spécifié dans ConfigMap. Vous pouvez le faire en exécutant la commande suivante ( kub-docs ):

kubectl create clusterrolebinding ops-user-cluster-admin-binding --clusterrole=cluster-admin --user=ops-user

qui attribue l’administrateur de cluster ClusterRole à un utilisateur nommé ops-user sur l’ensemble du cluster.

19
Steven

Assurez-vous également que vos utilisateurs se trouvent dans ConfigMap aws-auth k8s:

https://docs.aws.Amazon.com/eks/latest/userguide/add-user-role.html

4
juicedM3

J'ai commenté les deux dernières lignes du fichier de configuration

# - "-r"
# - "arn:aws:iam::**********:role/**********"

et cela a fonctionné bien que je ne sache pas pourquoi

2
Itay k

Vous devez créer le cluster sous le même profil IAM que celui auquel vous accédez via AWS cli.

En d'autres termes, dans ~/.aws/credentials, le profil qui accède à kubectl doit correspondre exactement au même IAM utilisé pour créer le cluster.

Ma recommandation est d'utiliser AWS cli pour créer vos clusters, car la création à partir de l'interface graphique peut être plus déroutante qu'utile. Le guide Mise en route est votre meilleur moyen de vous mettre en mouvement.

1
DPS

J'ai eu le même problème . Il est probable que vous utilisiez un compte root. Il semble que les comptes root ne puissent pas assumer les rôles requis. Cette erreur peut parfois être masquée si vous utilisez des clés expirées. 

1
Anthony Skipper