web-dev-qa-db-fra.com

Configuration d'AWS EKS - Ne sais pas le nom d'utilisateur et le mot de passe pour la configuration

J'ai beaucoup de mal à configurer EKS sur AWS. J'ai suivi ce tutoriel: https://docs.aws.Amazon.com/eks/latest/userguide/getting-started.html#eks-launch-workers

Je me suis levé au ~/.kube/config fichier et quand j'essaye d'exécuter kubectl get svc Je suis invité avec ce qui suit.

▶ kubectl get svc
Please enter Username: Alex
Please enter Password: ********
Error from server (Forbidden): services is forbidden: User 
"system:anonymous" cannot list services in the namespace "default"

Je ne sais pas où trouver le nom d'utilisateur et le mot de passe pour cette entrée. Veuillez m'indiquer l'endroit exact où je peux trouver ces informations.

Je pense que cela a aussi à voir avec EKS RBAC. Je ne sais pas comment contourner cela sans avoir accès au serveur.

14
Alex Miles

Ce problème se produit si votre configuration user ne fonctionne pas dans votre kubeconfig, ou si vous utilisez une version de kubectl inférieure à la v1.10

13
monokrome

J'obtenais la même erreur.

J'ai créé le cluster EKS via la console aws, mais lorsque j'ai suivi les étapes des documents pour configurer mon kubeconfig, j'ai eu la même erreur:

$ kubectl get svc
Please enter Username: JessicaG
Please enter Password: ****************
Error from server (Forbidden): services is forbidden: User "system:anonymous" cannot list services in the namespace "default"

C'est ce qui a fini par être mon problème:

Dans le AWS Getting Started guide dans la section "Étape 1: créer votre cluster Amazon EKS: pour créer votre cluster avec la console", il est dit ceci:

"Vous devez utiliser les informations d'identification utilisateur IAM pour cette étape, pas les informations d'identification root. Si vous créez votre cluster Amazon EKS à l'aide des informations d'identification root, vous ne pouvez pas vous authentifier auprès du cluster."

Il s'est avéré que j'avais créé le cluster EKS avec mes informations d'identification root, mais j'essayais de m'authentifier avec mon utilisateur administrateur JessicaG.

Ma solution:

J'ai recréé le cluster avec l'utilisateur administrateur IAM JessicaG. Pour ce faire, voici les étapes que j'ai suivies:

1) J'ai configuré l'utilisateur par défaut dans mon fichier local ~/.aws/credentials avec les clés d'accès de l'utilisateur

$ cat ~/.aws/credentials
[default]
aws_access_key_id = <JessicaG access key>
aws_secret_access_key = <JessicaG secret key>

2) Création d'un cluster eks à partir de la ligne de commande:

aws eks create-cluster --name eksdemo --role-arn <eksRole> --resources-vpc-config subnetIds=<subnets>,securityGroupIds=<securityGrps>

3) kubeconfig configuré:

apiVersion: v1
clusters:
- cluster:
    server: REDACTED
    certificate-authority-data: REDACTED
  name: eksdemo
contexts:
- context:
    cluster: eksdemo
    user: aws-jessicag
  name: eksdemo
current-context: eksdemo
kind: Config
preferences: {}
users:
- name: aws-jessicag
  user:
    exec:
      apiVersion: client.authentication.k8s.io/v1alpha1
      command: heptio-authenticator-aws
      args:
        - "token"
        - "-i"
        - "eksdemo"

Cela a résolu ce problème pour moi.

9
JessG

Assurez-vous d'avoir une version stable de l'installation de kubectl

curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/AMD64/kubectl

De plus, si vous obtenez une erreur d'accès refusé, assurez-vous que vous utilisez le même accès utilisateur IAM pour kubectl que vous avez utilisé pour créer le cluster EKS.

When an Amazon EKS cluster is created, the IAM entity (user or role) that creates the 
cluster is added to the Kubernetes RBAC authorization table as the administrator 
(with system:master permissions. Initially, only that IAM user can make calls to the 
Kubernetes API server using kubectl.
If you use the console to create the cluster, you must ensure that the same IAM user 
credentials are in the AWS SDK credential chain when you are running kubectl commands 
on your cluster.
0
Mahattam