Amazon EKS ノードの IAM ロール - Amazon EKS

Amazon EKS ノードの IAM ロール

Amazon EKS ノード kubelet デーモンが、ユーザーに代わって AWS API への呼び出しを実行します。ノードは、IAM インスタンスプロファイルおよび関連ポリシーを通じて、これらの API コールのアクセス許可を受け取ります。ノードを起動してクラスターに登録する前に、起動するときに使用するノード用の IAM ロールを作成する必要があります。この要件は、Amazon が提供する Amazon EKS 最適化 AMI で起動されたノード、または使用する予定の他のノード AMI で起動されたノードに適用されます。ノードを使用するには、次の IAM ポリシーを持つ IAM ロールを作成する必要があります。

既存のノードロールの確認

以下の手順を使用して、アカウントに既に Amazon EKS ノードロールがあるかどうかを確認できます。

IAM コンソールで eksNodeRole を確認するには

  1. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. ナビゲーションパネルで [Roles (ロール) ] を選択します。

  3. ロールのリストで eksNodeRole を検索します。eksNodeRole あるいは Amazon EKS ノードでの IAM ロールの作成 を含むロールがない場合は、「NodeInstanceRole」を参照してロールを作成します。eksNodeRole あるいは NodeInstanceRole を含むロールが見つかったら、そのロールを選択して、アタッチされたポリシーを表示します。

  4. [Permissions (アクセス許可)] を選択します。

  5. [AmazonEKSWorkerNodePolicy] および [AmazonEC2ContainerRegistryReadOnly] のマネージド型ポリシーがロールにアタッチされていることを確認します。これらのポリシーがアタッチされている場合、Amazon EKS のノードロールは適切に設定されています。

    注記

    そのロールに [AmazonEKS_CNI_Policy] ポリシーがアタッチされている場合は、そのポリシーを一度削除して、aws-node Kubernetes サービスアカウントにマッピングされた IAM ロールにアタッチし直すことをお勧めします。詳細については、「サービスアカウントの IAM ロールを使用する Amazon VPC CNI プラグインの設定」を参照してください。

  6. [Trust Relationship]、[Edit Trust Relationship] を選択します。

  7. 信頼関係に以下のポリシーが含まれていることを確認します。信頼関係が以下のポリシーと一致する場合、[Cancel] を選択します。信頼関係が一致しない場合、ポリシーを [Policy Document] ウィンドウにコピーし、[Update Trust Policy] を選択します。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Amazon EKS ノードでの IAM ロールの作成

ノードの IAM ロールを作成するには、AWS Management Console または AWS CloudFormation を使用できます。ロールの作成に使用するツールの名前が付いているタブを選択します。

AWS Management Console

IAM コンソールで Amazon EKS ノードロールを作成するには

  1. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. [ロール] を選択してから [ロールの作成] を選びます。

  3. [Choose a use case (ユースケースの選択)] セクションの [Common use cases (一般的ユースケース)] で [EC2] を選択して、[Next: Permissions (次へ: アクセス許可)] を選択します。

  4. [Filter policies (フィルタポリシー)] ボックスに「AmazonEKSWorkerNodePolicy」と入力します。[AmazonEKSWorkerNodePolicy] の左側にあるチェックボックスをオンにします。

  5. [Filter policies (フィルタポリシー)] ボックスに「AmazonEC2ContainerRegistryReadOnly」と入力します。[AmazonEC2ContainerRegistryReadOnly] の左側にあるチェックボックスをオンにします。

  6. このロール、または、aws-node Kubernetes サービスアカウントにマッピングされた別のロールに対し、[AmazonEKS_CNI_Policy] ポリシーをアタッチする必要があります。このロールに対してではなく、Kubernetes サービスアカウントに関連付けられたロールに、前出のポリシーを割り当てることをお勧めします。詳細については、「サービスアカウントの IAM ロールを使用する Amazon VPC CNI プラグインの設定」を参照してください。

  7. [次へ: タグ] を選択します。

  8. (オプション) タグをキーと値のペアとしてアタッチして、メタデータをロールに追加します。IAM でのタグの使用の詳細については、IAM ユーザーガイドの「IAM リソースのタグ付け」を参照してください。

  9. [Next: Review] を選択します。

  10. [Role name (ロール名)] にロールの一意の名前 (NodeInstanceRole など) を入力します。[Role description (ロールの説明)] で、現在のテキストを分かりやすいテキスト (Amazon EKS - Node Group Role など) に置き換え、[Create role (ロールを作成)] を選択します。

AWS CloudFormation

AWS CloudFormation を使用して Amazon EKS ノードロールを作成するには

  1. https://console.aws.amazon.com/cloudformation で AWS CloudFormation コンソール を開きます。

  2. [スタックの作成] を選択し、[With new resources (standard) 新しいリソースを使用 (標準)] を選択します。

  3. [Specify template (テンプレートを指定)] で、[Amazon S3 URL] を選択します。

  4. 以下の URL を [Amazon S3 URL] テキストエリアに貼り付けて、[Next (次へ)] を選択します。

    https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/amazon-eks-nodegroup-role.yaml
  5. [Specify stack details (スタックの詳細の指定)] ページで、[スタックの名前] に「eks-node-group-instance-role」などの名前を入力し、[Next (次へ)] を選択します。

  6. (オプション) [Configure stack options (スタックオプションの設定)] ページで、スタックリソースをタグ付けできます。[Next] を選択します。

  7. [確認] ページで、[機能] セクションのチェックボックスをオンにして、[スタックの作成] を選択します。

  8. スタックが作成されたら、コンソールで選択し、[出力] を選択します。

  9. 作成された IAM ロールの [NodeInstanceRole] 値を記録します。これは、ノードグループを作成するときに必要です。

  10. (オプション、ただし推奨)前のステップで AWS CloudFormation テンプレートによってロールにアタッチされた IAM ポリシーの 1 つは、マネージド型ポリシーの AmazonEKS_CNI_Policy です。このポリシーは、このロール、または、Kubernetes の aws-node サービスアカウントに関連付けられたロールにアタッチされる必要があります。これらのロールは、Amazon EKS VPC CNI プラグインで使用されます。このポリシーは、Kubernetes サービスアカウントに関連付けられたロールにを割り当てることをお勧めします。詳細については、「サービスアカウントの IAM ロールを使用する Amazon VPC CNI プラグインの設定」を参照してください。