Cookie の設定を選択する

当社は、当社のサイトおよびサービスを提供するために必要な必須 Cookie および類似のツールを使用しています。当社は、パフォーマンス Cookie を使用して匿名の統計情報を収集することで、お客様が当社のサイトをどのように利用しているかを把握し、改善に役立てています。必須 Cookie は無効化できませんが、[カスタマイズ] または [拒否] をクリックしてパフォーマンス Cookie を拒否することはできます。

お客様が同意した場合、AWS および承認された第三者は、Cookie を使用して便利なサイト機能を提供したり、お客様の選択を記憶したり、関連する広告を含む関連コンテンツを表示したりします。すべての必須ではない Cookie を受け入れるか拒否するには、[受け入れる] または [拒否] をクリックしてください。より詳細な選択を行うには、[カスタマイズ] をクリックしてください。

IRSA を使用するように アマゾン VPC CNI プラグインを設定する

フォーカスモード
IRSA を使用するように アマゾン VPC CNI プラグインを設定する - アマゾン EKS

このページの改善にご協力ください

本ユーザーガイドの改善にご協力いただけませんか? すべてのページの右側のペインにある GitHub リンクで、このページの編集を選択してください。皆さまにご協力いただくことで、あらゆる人々に使いやすいユーザーガイドになります。

このページの改善にご協力ください

本ユーザーガイドの改善にご協力いただけませんか? すべてのページの右側のペインにある GitHub リンクで、このページの編集を選択してください。皆さまにご協力いただくことで、あらゆる人々に使いやすいユーザーガイドになります。

アマゾン VPC CNI Kubernetes用プラグイン はアマゾン EKS クラスター内の Pod ネットワーク用のネットワークプラグインです。プラグインはKubernetes ノードに VPC IP アドレスを割り当て、各ノードで Pods に必要なネットワークを設定するロールを果たします。プラグイン:

  • AWS アイデンティティとアクセス管理 (IAM のアクセス許可が必要です。クラスターが IPv4 ファミリーを使用する場合、このアクセス許可は ` アマゾンEKS_CNI_Policy` AWS 管理ポリシーで指定されます。クラスターが IPv6 ファミリーを使用する場合には作成した IAM ポリシーにアクセス許可を追加する必要があります。手順については「IPv6 ファミリーを使用するクラスター用に IAM ポリシーを作成します。」を参照してください。このポリシーはアマゾン EKS ノード IAM ロール または 個別の IAM ロールにアタッチすることができます。アマゾン EKS ノード IAM ロールにポリシーをアタッチする手順については「Amazon EKS ノードの IAM ロール」を参照してください。このトピックで詳細に説明するように、別のロールに割り当てることをお勧めします。

  • デプロイ時に作成すると、aws-node という名前の Kubernetes サービスアカウントを使用するように設定されます。このサービスアカウントは aws-node という名前の Kubernetes clusterrole にバインドされます。これには必要な Kubernetes アクセス許可が割り当てられています。

注記

IMDS へのアクセスをブロックする場合を除き、Amazon VPC CNI plugin for Kubernetes 用の Pods にはアマゾン EKS ノード IAM ロール に割り当てられたパーミッションへのアクセス権があります。詳細については「ワーカーノードに割り当てられたインスタンスプロファイルへのアクセスを制限する」を参照してください。

ステップ 1: Amazon VPC CNI plugin for Kubernetes IAM ロールを作成する

  1. クラスターで使用する IP ファミリを決定します。

    aws eks describe-cluster --name my-cluster | grep ipFamily

    出力例は次のとおりです。

    "ipFamily": "ipv4"

    この出力では代わりに ipv6 が返されることがあります。

  2. IAM ロールを作成します。IAM ロールを作成するにはeksctl または kubectl および AWS CLI を使用してます。

    eksctl
    • クラスターの IP ファミリーに適合するコマンドを使用して IAM ロールを作成し、そのロールに IAM ポリシーをアタッチします。このコマンドではIAM ロールを作成する AWS クラウドFormation スタックを作成およびデプロイし、そのために指定したポリシーをアタッチします。さらに、既存の aws-node Kubernetes サービスアカウントを、作成された IAM ロールの ARN でアノテーションします。

      • IPv4

        マイクラスター を独自の値に置き換えます。

        eksctl create iamserviceaccount \ --name aws-node \ --namespace kube-system \ --cluster my-cluster \ --role-name AmazonEKSVPCCNIRole \ --attach-policy-arn arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy \ --override-existing-serviceaccounts \ --approve
      • IPv6

        マイクラスター を独自の値に置き換えます。111122223333 を、ご自身のアカウント ID に置き換えます。また、アマゾンEKS_CNI_IPv6_Policy を、IPv6 ポリシー名に置き換えます。IPv6 ポリシーがない場合はIPv6 ファミリーを使用するクラスター用に IAM ポリシーを作成します。 を参照して作成します。クラスターで IPv6 を使用するにはいくつかの要件を満たす必要があります。詳細については「クラスター、Pods、サービスに対する IPv6 アドレスの説明」を参照してください。

        eksctl create iamserviceaccount \ --name aws-node \ --namespace kube-system \ --cluster my-cluster \ --role-name AmazonEKSVPCCNIRole \ --attach-policy-arn arn:aws:iam::111122223333:policy/AmazonEKS_CNI_IPv6_Policy \ --override-existing-serviceaccounts \ --approve
    kubectl と AWS CLI
    1. クラスターの OIDC プロバイダーの URL を表示します。

      aws eks describe-cluster --name my-cluster --query "cluster.identity.oidc.issuer" --output text

      出力例は次のとおりです。

      https://oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE

      出力が返されない場合はクラスター用の IAM OIDC プロバイダーを作成する必要があります。

    2. 次の内容を vpc-cni-trust-policy.json という名前のファイルにコピーします。111122223333 を、ご自身のアカウント ID および前のステップで返された出力 EXAMPLED539D4633E53DE1B71EXAMPLE に置き換えます。地域コード を、クラスターのある AWS リージョンに置き換えます。

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::111122223333:oidc-provider/oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:aud": "sts.amazonaws.com", "oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:sub": "system:serviceaccount:kube-system:aws-node" } } } ] }
    3. ロールを作成します。アマゾンEKSVPCCNIRole は任意の名前に置き換えることができます。

      aws iam create-role \ --role-name AmazonEKSVPCCNIRole \ --assume-role-policy-document file://"vpc-cni-trust-policy.json"
    4. 必要な IAM ポリシーをロールにアタッチします。クラスターの IP ファミリに適合したコマンドを実行してください。

    5. 次のコマンドを実行し、先に作成した IAM ロールの ARN で aws-node サービスアカウントをアノテーションします。example の値は独自の値に置き換えます。

      kubectl annotate serviceaccount \ -n kube-system aws-node \ eks.amazonaws.com/role-arn=arn:aws:iam::111122223333:role/AmazonEKSVPCCNIRole
  3. (オプション Kubernetes サービスアカウントで使用されている AWS Security Token Service のエンドポイントタイプを設定します。詳細については「サービスアカウントの AWS Security Token Service エンドポイントを設定する」を参照してください。

ステップ 2: Amazon VPC CNI plugin for KubernetesPods 再デプロイする

  1. 認証情報環境変数を適用するために、サービスアカウントに関連付けられている既存の Pods を削除して再作成します。現在アノテーションなしで実行されている Pods にはアノテーションは適用されません。次のコマンドは既存の aws-node DaemonSet Pods を削除し、サービスアカウントのアノテーションを使用してデプロイします。

    kubectl delete Pods -n kube-system -l k8s-app=aws-node
  2. Pods がすべて再起動したことを確認します。

    kubectl get pods -n kube-system -l k8s-app=aws-node
  3. Pods の 1 つの詳細を表示し、環境変数の AWS_WEB_IDENTITY_TOKEN_FILE および AWS_ROLE_ARN が存在することを確認します。cpjw7 を、前のステップの出力で返された、いずれかの Pods の名前に置き換えます。

    kubectl describe pod -n kube-system aws-node-cpjw7 | grep 'AWS_ROLE_ARN:\|AWS_WEB_IDENTITY_TOKEN_FILE:'

    出力例は次のとおりです。

    AWS_ROLE_ARN: arn:aws:iam::111122223333:role/AmazonEKSVPCCNIRole AWS_WEB_IDENTITY_TOKEN_FILE: /var/run/secrets/eks.amazonaws.com/serviceaccount/token AWS_ROLE_ARN: arn:aws:iam::111122223333:role/AmazonEKSVPCCNIRole AWS_WEB_IDENTITY_TOKEN_FILE: /var/run/secrets/eks.amazonaws.com/serviceaccount/token

    Pod には 2 つのコンテナが含まれているため、重複した結果の 2 つのセットが返されます。両方のコンテナの値は同じです。

    Pod で AWS リージョンエンドポイントを使用している場合、前の出力では下記の行も返されています。

    AWS_STS_REGIONAL_ENDPOINTS=regional

ステップ 3: ノードの IAM ロールから CNI ポリシーを削除する

現在、アマゾン EKS ノード IAM ロールAmazonEKS_CNI_Policy IAM (IPv4 ポリシーまたは IPv6 ポリシーがアタッチされており、および別の IAM ロールを作成し、このロールにそのポリシーを代わりにアタッチして、そのロールを aws-node Kubernetes サービスアカウントに割り当てている場合、クラスターの IP ファミリーに適合する AWS CLI コマンドを使用して、ノードのロールからポリシーを削除することをお勧めします。アマゾンEKSNodeRole を、ノードのロールの名前に置き換えます。

  • IPv4

    aws iam detach-role-policy --role-name AmazonEKSNodeRole --policy-arn arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy
  • IPv6

    111122223333 はご自身のアカウント ID に置き換え、アマゾンEKS_CNI_IPv6_Policy はご使用の IPv6 ポリシーの名前に置き換えます。

    aws iam detach-role-policy --role-name AmazonEKSNodeRole --policy-arn arn:aws:iam::111122223333:policy/AmazonEKS_CNI_IPv6_Policy

IPv6 ファミリーを使用するクラスター用に IAM ポリシーを作成します。

IPv6 ファミリーを使用するクラスターを作成し、そのクラスターでバージョン 1.10.1 以降の Amazon VPC CNI plugin for Kubernetes  アドオンが設定されている場合はIAM ロールに割り当てることができる IAM ポリシーを作成する必要があります。作成時に IPv6 ファミリーの使用を設定していない、既存のクラスターにおいて、IPv6 を使用する場合には新しいクラスターを作成する必要があります。クラスターでの IPv6 使用の詳細については「クラスター、Pods、サービスに対する IPv6 アドレスの説明」を参照してください。

  1. 次のテキストをコピーし、vpc-cni-ipv6-policy.json という名前のファイルに保存します。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:AssignIpv6Addresses", "ec2:DescribeInstances", "ec2:DescribeTags", "ec2:DescribeNetworkInterfaces", "ec2:DescribeInstanceTypes" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": [ "arn:aws:ec2:*:*:network-interface/*" ] } ] }
  2. IAM ポリシーを作成する

    aws iam create-policy --policy-name AmazonEKS_CNI_IPv6_Policy --policy-document file://vpc-cni-ipv6-policy.json
プライバシーサイト規約Cookie の設定
© 2025, Amazon Web Services, Inc. or its affiliates.All rights reserved.