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