追加の AWS ロールにクラスターを操作する権限を付与できない

追加の AWS ロールにクラスターを操作する権限を付与できない

私はAWS EKSを学ぼうとしており、Amazon EKS を使い始める – AWS マネジメントコンソールと AWS CLIリージョンを us-east-1 に変更した以外は、ステップバイステップでガイドします。

クラスターを作成することはできますmy-clusterが、クラスターと通信するために EC2 インスタンス (T2.Micro) であるコンピューターを設定しようとすると、error: You must be logged in to the server (Unauthorized)エラーが発生します。詳しく調べたところ、EC2 ロール (ARN - arn:aws:iam::123456789012:role/ec2-admin) は、クラスター (ARN - arn:aws:iam::123456789012:role/myAmazonEKSClusterRole) を作成したロールを引き受ける必要があることがわかりました。信頼関係を変更して、ロール定義でもこれらの変更を行いました。その後、コマンドを実行myAmazonEKSClusterRoleできるようにarn:aws:sts::123456789012:assumed-role/myAmazonEKSClusterRole/test-sessionなりましたが、コマンドはまだ実行できません。aws ekskubectl

コマンドを実行するにはkubectl、次の手順に従います。クラスターのユーザーまたは IAM ロールの管理ただし、コマンドaws-auth-cm.yamlを実行できないため、configMap ファイルに変更を加えるように求められますが、変更できません。kubectl apply

私のkubeconfigファイル -

apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: <cert>
  name: arn:aws:eks:us-east-1:123456789012:cluster/my-cluster
contexts:
- context:
    cluster: arn:aws:eks:us-east-1:123456789012:cluster/my-cluster
    user: arn:aws:eks:us-east-1:123456789012:cluster/my-cluster
  name: arn:aws:eks:us-east-1:123456789012:cluster/my-cluster
current-context: arn:aws:eks:us-east-1:123456789012:cluster/my-cluster
kind: Config
preferences: {}
users:
- name: arn:aws:eks:us-east-1:123456789012:cluster/my-cluster
  user:
    exec:
      apiVersion: client.authentication.k8s.io/v1alpha1
      args:
      - --region
      - us-east-1
      - eks
      - get-token
      - --cluster-name
      - my-cluster
      command: aws

変更後のaws-auth-cm.yamlファイルの内容は次のとおりです。

apiVersion: v1
kind: ConfigMap
metadata:
  name: aws-auth
  namespace: kube-system
data:
  mapRoles: |
          #    - rolearn: <ARN of instance role (not instance profile)>
          #      username: system:node:{{EC2PrivateDNSName}}
          #      groups:
          #        - system:bootstrappers
          #        - system:nodes
    - rolearn: arn:aws:iam::375712918983:role/myAmazonEKSClusterRole
      username: myAmazonEKSClusterRole
      groups:
        - system:masters

これについて助けていただくか、何かアドバイスをいただけませんか?

ご質問がございましたらお知らせください。

答え1

次の 3 つのうちのいずれかが必要になります。

  • arn:aws:iam::123456789012:role/myAmazonEKSClusterRoleターミナルセッションでaws eks get-token実行がkubectl正しく動作するように想定します
  • ロールを引き受けるawscliプロファイルを作成しarn:aws:iam::123456789012:role/myAmazonEKSClusterRole、次args:の内容を含むように更新します。[..., "--profile", "whatever-you-call-that-profile",...]
  • または、ターミナルでロールを引き受け、 を実行しaws eks get-token、その静的認証情報をkubeconfigに配置します。ConfigMapを更新するためだけに認証情報を長期間必要とすることはないと思われます。

最初のものは、aws sts assume-role --role-arn arn:aws:iam::123456789012:role/myAmazonEKSClusterRole ... | tee sts-creds.jsonそのexport AWS_ACCESS_KEY_ID= AWS_SECRET_KEY= AWS_SESSION_TOKEN=JSONの内容に基づいて

2番目については、次のことを意味します。

$ cat >> $HOME/.aws/config <<FOO
[profile my-cluster]
assume_role = arn:aws:iam::123456789012:role/myAmazonEKSClusterRole
source_profile = whatever
; or credential_source = whatever
FOO

によるとこのドキュメント

関連情報