web-dev-qa-db-ja.com

AWS EKSのセットアップ-構成のユーザー名とパスワードがわからない

AWSでEKSを設定するのに非常に苦労しています。私はこのチュートリアルに従いました: https://docs.aws.Amazon.com/eks/latest/userguide/getting-started.html#eks-launch-workers

~/.kube/configファイルと実行しようとするとkubectl get svc以下のメッセージが表示されます。

▶ 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"

このエントリのユーザー名とパスワードがどこにあるかわかりません。この情報が見つかる正確な場所を教えてください。

これはEKS RBACにも関係していると思います。サーバーにアクセスせずにこれを回避する方法がわかりません。

14
Alex Miles

この問題は、user構成がkubeconfigで機能していない場合、またはv1.10未満のkubectlのバージョンを使用している場合に発生します。

13
monokrome

同じエラーが発生しました。

Awsコンソールを使用してEKSクラスターを作成しましたが、ドキュメントの手順に従ってkubeconfigを構成すると、同じエラーが発生しました。

$ 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"

これは結局私の問題でした:

AWS入門ガイド 「ステップ1:Amazon EKSクラスターを作成する:コンソールでクラスターを作成するには」では、次のように記載されています。

"この手順では、ルート認証情報ではなくIAMユーザー認証情報を使用する必要があります。ルート認証情報を使用してAmazon EKSクラスターを作成する場合、クラスターに対して認証できません。"

ルート認証情報を使用してEKSクラスターを作成したことがわかりましたが、管理ユーザーJessicaGを使用して認証しようとしました。

私の解決策:

管理IAMユーザーJessicaGを使用してクラスターを再作成しました。これを行うには、ここに私が取った手順があります:

1)ローカルファイルにデフォルトユーザーを設定しました~/.aws/credentialsユーザーのアクセスキー

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

2)コマンドラインからeksクラスターを作成しました:

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

3)構成されたkubeconfig:

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"

それでこの問題は解決しました。

9
JessG

Kubectl installの安定したバージョンがあることを確認してください

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

また、アクセス拒否エラーが発生する場合は、EKSクラスターの作成に使用したものと同じIAMユーザーアクセスをkubectlに使用していることを確認してください。

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