Amazon EKS Pod Identity エージェントのセットアップ - Amazon EKS

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

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

Amazon EKS Pod Identity エージェントのセットアップ

EKS Pod Identity の関連付けは、Amazon EC2 インスタンスプロファイルから Amazon EC2 インスタンスに認証情報を提供する場合と同じような方法で、アプリケーションの認証情報を管理する機能があります。

Amazon EKS Pod Identity は、追加の EKS Auth API と各ノードで実行されるエージェントポッドを使用して、ワークロードに認証情報を提供します。

考慮事項

  • IPv6

    EKS Pod Identity エージェントはデフォルトでポッドが認証情報をリクエストするために IPv4IPv6 のアドレスをリッスンします。エージェントは、IPv4 のループバック (localhost) IP アドレス 169.254.170.23IPv6 の localhost IP アドレス [fd00:ec2::23] を使用します。

    IPv6 アドレスを無効にするか、または localhost IPv6 IP アドレスを禁止すると、エージェントは起動できません。IPv6 を使用できないノードでエージェントを起動するには、「EKS Pod Identity エージェントで IPv6 を無効にする」の手順に従って IPv6 設定を無効にします。

Amazon EKS Pod Identity エージェントの作成

エージェントの前提条件

  • 既存の Amazon EKS クラスター。デプロイするには、「Amazon EKS の使用開始」を参照してください。クラスタバージョンとプラットフォームバージョンは、EKS Pod Identity クラスターバージョン に記載されているバージョン以降である必要があります。

  • ノードロールには、エージェントが EKS Auth API で AssumeRoleForPodIdentity アクションを実行する権限があります。AWS 管理ポリシー: AmazonEKSWorkerNodePolicy を使用することも、次のようなカスタムポリシーを追加することもできます。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "eks-auth:AssumeRoleForPodIdentity" ], "Resource": "*" } ] }

    このアクションをタグで制限して、エージェントを使用するポッドが引き受けることができるロールを制限できます。

  • ノードは Amazon ECR にアクセスしてイメージをダウンロードできます。アドオンのコンテナイメージは、Amazon コンテナイメージレジストリ に記載されているレジストリにあります。

    なお、イメージの場所を変更して、AWS Management Console の [オプションの設定] や AWS CLI の --configuration-values で EKS アドオンの imagePullSecrets を提供することができます。

  • ノードは Amazon EKS Auth API にアクセスできます。プライベートクラスターでは、AWS PrivateLink の eks-auth エンドポイントが必要です。

AWS Management Console
  1. Amazon EKS コンソール (https://console.aws.amazon.com/eks/home#/clusters) を開きます。

  2. 左のナビゲーションペインで、[クラスター] を選択し、次にアドオンを設定するEKS Pod Identity エージェントを選択します。

  3. [アドオン] タブを選択します。

  4. [その他のアドオンを入手] を選択します。

  5. EKS Pod Identity のアドオンボックスの右上にあるボックスを選択し、[次へ] を選択します。

  6. [選択したアドオン設定を構成する] ページの [バージョン] ドロップダウンリストで任意のバージョンを選択します。

  7. (オプション) [オプションの設定] を展開して追加の設定を入力します。例えば、代替のコンテナイメージの場所と ImagePullSecrets を指定できます。許可されたキーのある JSON Schema は、[アドオン設定スキーマ] に表示されます。

    設定キーと値を [設定値] に入力します。

  8. [Next] を選択します。

  9. EKS Pod Identity がクラスター上で実行されていることを確認してください。

    kubectl get pods -n kube-system | grep 'eks-pod-identity-agent'

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

    eks-pod-identity-agent-gmqp7                                          1/1     Running   1 (24h ago)   24h
    eks-pod-identity-agent-prnsh                                          1/1     Running   1 (24h ago)   24h

    これで、クラスターで EKS Pod Identity の関連付けを使用できるようになりました。詳細については、「IAM ロールを EKS Pod Identity と共に引き受けるための Kubernetes サービスアカウントを設定する」を参照してください。

AWS CLI
  1. 次の AWS CLI コマンドを実行します。my-cluster を自分のクラスター名に置き換えます。

    aws eks create-addon --cluster-name my-cluster --addon-name eks-pod-identity-agent --addon-version v1.0.0-eksbuild.1
    注記

    EKS Pod Identity エージェントは、サービスアカウントの IAM ロール用の service-account-role-arn を使用しません。EKS Pod Identity エージェントにはノードロールの権限を付与する必要があります。

  2. EKS Pod Identity がクラスター上で実行されていることを確認してください。

    kubectl get pods -n kube-system | grep 'eks-pod-identity-agent'

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

    eks-pod-identity-agent-gmqp7                                          1/1     Running   1 (24h ago)   24h
    eks-pod-identity-agent-prnsh                                          1/1     Running   1 (24h ago)   24h

    これで、クラスターで EKS Pod Identity の関連付けを使用できるようになりました。詳細については、「IAM ロールを EKS Pod Identity と共に引き受けるための Kubernetes サービスアカウントを設定する」を参照してください。

Amazon EKS Pod Identity エージェントの作成

Amazon EKS タイプのアドオンを更新します。Amazon EKS タイプのアドオンをクラスターに追加していない場合は、「Amazon EKS Pod Identity エージェントの作成」を参照してください。

AWS Management Console
  1. Amazon EKS コンソール (https://console.aws.amazon.com/eks/home#/clusters) を開きます。

  2. 左のナビゲーションペインで、[クラスター] を選択し、次にアドオンを設定するEKS Pod Identity エージェントを選択します。

  3. [アドオン] タブを選択します。

  4. 新しいバージョンのアドオンが入手可能な場合、EKS Pod Identity エージェントには [バージョンの更新] ボタンが表示されます。[バージョンの更新] を選択します。

  5. [Amazon EKS Pod Identity エージェントの設定] ページで、[バージョン] ドロップダウンリストから新しいバージョンを選択します。

  6. [変更を保存] を選択します。

    更新が完了するまでに数秒かかる場合があります。次に、[ステータス] をチェックして、アドオンのバージョンが更新されたことを確認します。

AWS CLI
  1. クラスターにインストールされているアドオンのバージョンを確認します。my-cluster をクラスター名に置き換えます。

    aws eks describe-addon --cluster-name my-cluster --addon-name eks-pod-identity-agent --query "addon.addonVersion" --output text

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

    v1.0.0-eksbuild.1

    この手順でアドオンを更新する前に、アドオンを作成する必要があります。

  2. AWS CLI を使用してアドオンを更新します。AWS Management Console または eksctl を使用してアドオンを更新する場合は、「アドオンの更新」を参照してください。デバイスに沿ったコマンドをコピーします。必要に応じてコマンドに次の変更を加え、変更したコマンドを実行します。

    • my-cluster を自分のクラスター名に置き換えます。

    • v1.0.0-eksbuild.1 は希望のバージョンに置き換えてください。

    • &ExampleAWSAccountNo1 は、ご自分のアカウント ID に置き換えます。

    • 次のコマンドを実行します。

      aws eks update-addon --cluster-name my-cluster --addon-name eks-pod-identity-agent --addon-version v1.0.0-eksbuild.1'

      更新が完了するまでに数秒かかる場合があります。

  3. アドオンのバージョンが更新されたことを確認します。my-cluster を自分のクラスター名に置き換えます。

    aws eks describe-addon --cluster-name my-cluster --addon-name eks-pod-identity-agent

    更新が完了するまでに数秒かかる場合があります。

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

    { "addon": { "addonName": "eks-pod-identity-agent", "clusterName": "my-cluster", "status": "ACTIVE", "addonVersion": "v1.0.0-eksbuild.1", "health": { "issues": [] }, "addonArn": "arn:aws:eks:region:111122223333:addon/my-cluster/eks-pod-identity-agent/74c33d2f-b4dc-8718-56e7-9fdfa65d14a9", "createdAt": "2023-04-12T18:25:19.319000+00:00", "modifiedAt": "2023-04-12T18:40:28.683000+00:00", "tags": {} } }

EKS Pod Identity エージェントの設定

EKS Pod Identity エージェントで IPv6 を無効にする

AWS Management Console
AWS Management Console で IPv6 を無効にする
  1. EKS Pod Identity エージェントで IPv6 を無効にするには、EKS アドオンの [オプション設定] に次の設定を追加します。

    1. Amazon EKS コンソール (https://console.aws.amazon.com/eks/home#/clusters) を開きます。

    2. 左のナビゲーションペインで、[クラスター] を選択し、次にアドオンを設定するクラスター名を選択します。

    3. [アドオン] タブを選択します。

    4. EKS Pod Identity エージェントのアドオンボックスの右上にあるボックスを選択し、[編集] を選択します。

    5. EKS Pod Identity エージェントの設定ページの場合:

      1. 使用する [バージョン] を選択します。前のステップと同じバージョンを保持し、別のアクションでバージョンと設定を更新することをお勧めします。

      2. [オプションの構成設定] を展開します。

      3. [設定値] で JSON キー "agent": とにネストした JSON オブジェクトの値に、キー "additionalArgs": を指定します。結果のテキストは有効な JSON オブジェクトでなければなりません。このキーと値だけがテキストボックス内のデータである場合は、キーと値を中括弧 {} で囲みます。次の例は、ネットワークポリシーが有効になっていることを示しています。

        { "agent": { "additionalArgs": { "-b": "169.254.170.23" } } }

        この設定では、エージェントが使用する唯一のアドレスに IPv4 アドレスを設定します。

    6. EKS Pod Identity エージェントのポッドを置き換えて新しい設定を適用するには、[変更を保存] を選択します。

      Amazon EKS は、EKS Pod Identity エージェントの Kubernetes DaemonSet のロールアウトを使用して EKS アドオンに変更を適用します。ロールアウトのステータスは、AWS Management Console のアドオン [更新履歴]kubectl rollout status daemonset/eks-pod-identity-agent --namespace kube-system で追跡できます。

      kubectl rollout は以下のコマンドを実行します。

      $ kubectl rollout history -- View rollout history pause -- Mark the provided resource as paused restart -- Restart a resource resume -- Resume a paused resource status -- Show the status of the rollout undo -- Undo a previous rollout

      ロールアウトに時間がかかりすぎる場合、Amazon EKS はロールアウトを取り消し、[アドオン更新] のタイプと [失敗] のステータスのメッセージがアドオンの [更新履歴] に追加されます。問題を調査するには、ロールアウトの履歴から開始し、EKS Pod Identity エージェントのポッドで kubectl logs を実行して EKS Pod Identity エージェントのログを確認します。

  2. [更新履歴] の新しいエントリのステータスが [成功] の場合、ロールアウトが完了し、アドオンはすべての EKS Pod Identity エージェントのポッドで新しい設定を使用していることを意味します。

AWS CLI
AWS CLI で IPv6 を無効にする
  • EKS Pod Identity エージェントで IPv6 を無効にするには、EKS アドオンの [オプション設定] に次の設定を追加します。

    次の AWS CLI コマンドを実行します。my-cluster をクラスターの名前に置き換え、IAM ロール ARN を使用するロールに置き換えます。

    aws eks update-addon --cluster-name my-cluster --addon-name eks-pod-identity-agent \ --resolve-conflicts PRESERVE --configuration-values '{"agent":{"additionalArgs": { "-b": "169.254.170.23"}}}'

    この設定では、エージェントが使用する唯一のアドレスに IPv4 アドレスを設定します。

    Amazon EKS は、EKS Pod Identity エージェントの Kubernetes DaemonSet のロールアウトを使用して EKS アドオンに変更を適用します。ロールアウトのステータスは、AWS Management Console のアドオン [更新履歴]kubectl rollout status daemonset/eks-pod-identity-agent --namespace kube-system で追跡できます。

    kubectl rollout は以下のコマンドを実行します。

    kubectl rollout history -- View rollout history pause -- Mark the provided resource as paused restart -- Restart a resource resume -- Resume a paused resource status -- Show the status of the rollout undo -- Undo a previous rollout

    ロールアウトに時間がかかりすぎる場合、Amazon EKS はロールアウトを取り消し、[アドオン更新] のタイプと [失敗] のステータスのメッセージがアドオンの [更新履歴] に追加されます。問題を調査するには、ロールアウトの履歴から開始し、EKS Pod Identity エージェントのポッドで kubectl logs を実行して EKS Pod Identity エージェントのログを確認します。