kubectlエラー EKSクラスターにアクセスするにはサーバーにログインしている必要があります(無許可) 質問する

kubectlエラー EKSクラスターにアクセスするにはサーバーにログインしている必要があります(無許可) 質問する

EKS の入門ガイドに従おうとしています。kubectl get service を呼び出そうとすると、次のメッセージが表示されました: エラー: サーバーにログインしている必要があります (権限がありません) 私が行った操作は次のとおりです:
1. EKS クラスターを作成しました。
2. 次のように構成ファイルを作成しました:

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. 最新のaws cliをダウンロードしてインストールしました
  2. aws configureを実行し、IAMユーザーの認証情報とリージョンをus-west-2に設定しました。
  3. EKS ロールの sts:AssumeRole のポリシーを IAM ユーザーに追加し、信頼関係として設定しました。
  4. 設定ファイルを使用するようにkubectlを設定する

heptio-authenticator-aws token -r arn:aws:iam::***********:role/********* -i my-cluster-ame を実行するとトークンを取得できますが、クラスターにアクセスしようとすると、次のエラーが表示され続けます: サーバーにログインしている必要があります (未承認)

この問題を解決する方法をご存知ですか?

ベストアンサー1

Amazon EKS クラスターが作成されると、クラスターを作成する IAM エンティティ (ユーザーまたはロール) が管理者として Kubernetes RBAC 認証テーブルに追加されます。最初は、その IAM ユーザーだけが kubectl を使用して Kubernetes API サーバーを呼び出すことができます。

eksドキュメント

他のアクセスを追加するにはAWSユーザーの場合は、まず ConfigMap を編集して、IAM ユーザーまたはロールを Amazon EKS クラスターに追加する必要があります。

次のコマンドを実行して ConfigMap ファイルを編集できます。kubectl edit -n kube-system configmap/aws-authその後、新しいユーザーをマップするためのエディターが付与されます。

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"

mapUsers追加する場所に細心の注意を払ってくださいops-ユーザーmapAccountsラベルとともに、アマゾンKubernetes クラスター上のユーザー名を持つユーザー アカウント。

ただし、このアクションだけでは RBAC に権限は付与されません。これらのエンティティに権限を付与するには、クラスター内にロール バインディングを作成する必要があります。

アマゾンのドキュメント(iamドキュメント) は、ConfigMap で指定されたユーザーに対して、Kubernetes クラスターにロールバインディングを作成する必要があることを示しています。これは、次のコマンドを実行することで実行できます (kub-ドキュメント):

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

これは、cluster-admin権限をClusterRole次のユーザーに付与します。ops-ユーザークラスター全体にわたって。

おすすめ記事