翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon EKS アクセスエントリ認証
Amazon EKS は、クラスターの Kubernetes API を呼び出すアクセス許可を IAM プリンシパルに付与するための 2 つのメカニズムをサポートしています。レガシー aws-auth ConfigMap と新しいアクセスエントリ API です。アクセスエントリは、いずれかのメカニズムを通じてクラスターに対して認証できる ConfigMap. AWS Batch can を編集しなくても、KubernetesAPI アクセスを IAM プリンシパルに付与します。
コンピューティング環境で eksConfiguration.accessEntry.desiredStateを に設定するENABLEDと、 はクラスター上のそのコンピューティング環境のアクセスエントリを管理 AWS Batch できます。ConfigMap aws-auth を手動で編集する必要がなくなりました。
がアクセスエントリを AWS Batch プロビジョニングするかどうかは、 AWS Batch コンピューティング環境と Amazon EKS クラスター設定によって異なります。詳細については、「クラスターの とのやり取り authenticationMode」を参照してください。
accessEntry.desiredState の値
の desiredStateフィールドは、コンピューティング環境に必要なアクセスエントリの状態をEksAccessEntry宣言します。次の値を指定できます。
ENABLED-
AWS Batch は、コンピューティング環境の AWS Batchマネージドアクセスエントリをクラスターに作成します。 AWS Batch は、クラスター上のすべてのコンピューティング環境が
desiredStateに設定されている場合にのみ、 AWS Batchマネージドアクセスエントリを作成しますENABLED(詳細については、がコンピューティング環境desiredState間で AWS Batch 調整する方法「」を参照)。 DISABLED-
AWS Batch は、クラスター AWS Batchのマネージドアクセスエントリを削除します。 AWS Batch は、クラスター上のすべてのコンピューティング環境が
desiredStateに設定されている場合にのみ AWS Batch、マネージドアクセスエントリを削除しますDISABLED(詳細については、がコンピューティング環境desiredState間で AWS Batch 調整する方法「」を参照)。クラスターへのアクセスは、ConfigMapaws-authを介して設定する必要があります。 INHERIT_FROM_CLUSTER-
AWS Batch は、クラスターの現在のアクセスエントリ に延期します
status。認証モードが である Amazon EKS クラスターではAPI、クラスターにフォールバックするaws-authConfigMap がないため、 はアクセスエントリ AWS Batch を作成および管理します。認証モードがCONFIG_MAPまたは のクラスターではAPI_AND_CONFIG_MAP、 はアクセスエントリを追加または削除 AWS Batch しません。
コンピューティング環境では、DescribeComputeEnvironments レスポンスの読み取り専用accessEntry.statusフィールドも公開されます。 ACTIVE は、コンピューティング環境の AWS Batchマネージドアクセスエントリがクラスターに存在し、ConfigMap aws-auth よりも優先されることを意味します。 は AWS Batch、マネージドアクセスエントリが存在しないINACTIVEことを意味します。これは、 desiredStateが であるためDISABLED、クラスターをターゲットとするコンピューティング環境がまだ に同意していないためdesiredState、またはエントリがまだプロビジョニングされていないためです。accessEntry.status が の場合INACTIVE、Batch はクラスターアクセスに aws-auth ConfigMap を使用します。
注記
アクセスエントリは、 AWS Batch が使用可能にするアクセスポリシーの関連付けを完了していない場合でも、クラスターに存在するとACTIVEすぐにレポートします。が のINVALIDときにコンピューティング環境のステータスaccessEntry.statusが に変わる場合はACTIVE、「」を参照してくださいAmazon EKS アクセスエントリの設定が不完全です。
注記
accessEntry フィールドを省略した場合、 AWS Batch はコンピューティング環境desiredStateの を記録せず、 DescribeComputeEnvironmentsは を返しません。アクセスエントリをプロビジョニングする目的で、 は と同じように AWS Batch 動作しますINHERIT_FROM_CLUSTER。
クラスターの とのやり取り authenticationMode
特定の の動作 AWS Batch は、クラスターの認証モードdesiredStateによって異なります。次の表は、 CreateComputeEnvironmentと の両方に適用されますUpdateComputeEnvironment。
クラスター |
コンピューティング環境 |
コンピューティング環境 |
コンピューティング環境 |
|---|---|---|---|
|
アクセスエントリはクラスターで使用できないため、 AWS Batch はアクセスエントリを作成または削除しません。 AWS Batch は、指定した値を記録します。クラスターの認証モードを変更すると、その記録された値は、 を指定する次の |
||
|
AWS Batch は、クラスターを共有するコンピューティング環境全体で記録された値を比較します。「」を参照してくださいがコンピューティング環境desiredState間で AWS Batch 調整する方法。 |
既存のアクセスモードは保持されます。 アクセスエントリを追加または削除 AWS Batch しません。 |
|
|
アクセスエントリはクラスターで作成および維持されます。 |
リクエストは却下されました。このモードのクラスターは ConfigMap |
アクセスエントリはクラスターで作成および維持されます。クラスターが |
がコンピューティング環境desiredState間で AWS Batch 調整する方法
単一の Amazon EKS クラスターは複数の AWS Batch コンピューティング環境をバックアップできるため、クラスターのアクセス設定は共有リソースです。 AWS Batch したがって、 はそれらのコンピューティング環境全体で記録されたdesiredState値を調整または比較して解決します。
クラスターの authenticationModeが の場合API_AND_CONFIG_MAP、 はクラスターをターゲットとする同じ AWS アカウントと AWS リージョン内のすべてのコンピューティング環境についてdesiredState記録された AWS Batch を比較します。 はこの比較 AWS Batch を使用して、 を指定する各 CreateComputeEnvironment または UpdateComputeEnvironmentオペレーションでアクセスエントリを追加または削除するかどうかを決定しますdesiredState。
- すべてのコンピューティング環境には
desiredState=ENABLED -
AWS Batch はクラスターにアクセスエントリを作成します。
- すべてのコンピューティング環境には
desiredState=DISABLED -
AWS Batch は、アクセスエントリが存在する場合、クラスターからアクセスエントリを削除します。
- 記録された
desiredState値がすべて一致するわけではありません -
AWS Batch は既存のアクセスモードを保持します。アクセスエントリは追加も削除もされません。これには、
ENABLED、、DISABLEDおよび の任意の組み合わせが含まれINHERIT_FROM_CLUSTER、desiredState記録されていないコンピューティング環境も含まれます。
注記
認証モードが ConfigMap aws-auth API_AND_CONFIG_MAPであるクラスターをエントリ認証に移行するには、クラスターをターゲットとするdesiredState=ENABLEDすべての AWS Batch コンピューティング環境で を設定します。元に戻すには、それぞれdesiredState=DISABLEDに を設定します。
がクラスターに AWS Batch 作成する内容
AWS Batch は、上記の条件を満たすクラスターごとに 1 つのアクセスエントリを作成し、AWSBatchClusterPolicyAmazon EKS アクセスポリシーをそのアクセスエントリに関連付けます。アクセスエントリはコンピューティング環境ごとではなくクラスターごとであるため、同じクラスターをターゲットとするすべての AWS Batch コンピューティング環境で共有されます。
注記
コンピューティング環境を削除しても、クラスター上の最後の AWS Batch コンピューティング環境であっても、アクセスエントリは削除されません。 AWS Batchマネージドアクセスエントリを削除するには、クラスターをターゲットとするすべての AWS Batch コンピューティング環境で UpdateComputeEnvironmentdesiredState=DISABLEDと を呼び出してから、クラスターを削除します。
アクセスエントリだけでは、クラスターでジョブを実行するのに十分ではありません。自分で設定する必要があるKubernetesアクセス許可とノードアクセスについては、「」を参照してくださいそれでも提供する必要があるクラスター設定。
必要なアクセス許可
AWS Batch は、 CreateComputeEnvironmentまたは UpdateComputeEnvironmentオペレーションを呼び出す IAM ID の認証情報を使用してアクセスエントリを管理します。この ID は、次の Amazon EKS アクションを実行することを許可されている必要があります。
-
eks:DescribeCluster -
eks:DescribeAccessEntry -
eks:CreateAccessEntry -
eks:AssociateAccessPolicy -
eks:DeleteAccessEntry
アクセスエントリを設定する
CreateComputeEnvironment API または UpdateComputeEnvironment API の eksConfiguration.accessEntryフィールドを使用して、コンピューティング環境でアクセスエントリを設定できます。
それでも提供する必要があるクラスター設定
アクセスエントリは、 がクラスターに対して AWS Batch 認証する方法のみを制御します。ジョブの実行に必要な AWS Batch Kubernetesアクセス許可は付与されず、 AWS Batch 起動するインスタンスはクラスターに参加しません。使用する認証メカニズムにかかわらず、以下の両方を設定する必要があります。
重要
クラスター (accessEntry.status=ACTIVE) AWS Batch のサービスにリンクされたロールの AWS Batchマネージドアクセスエントリが作成されると、ロールの ConfigMap aws-auth 設定よりも優先されます。 AWS Batch サービスにリンクされたロールの ConfigMap エントリは使用されず、代わりに アクセスエントリを使用して AWS Batch 認証されます。ConfigMap 認証に戻るには、クラスターをターゲットとするdesiredState=DISABLEDすべてのコンピューティング環境で を設定します。これにより、 AWS Batchマネージドアクセスエントリが削除されます。
- Kubernetes AWS Batch 名前空間の アクセス許可
-
AWS Batch には、 で指定した名前空間でポッドを作成および管理するためのKubernetesアクセス許可が必要です
eksConfiguration.kubernetesNamespace。名前空間を作成し、認証アプローチに応じて次のいずれかの方法を使用してこれらのアクセス許可を設定します。-
アクセスポリシーの関連付け (アクセスエントリ の場合に必須
status=ACTIVE) — クラスターをターゲットdesiredState=ENABLEDとするすべてのコンピューティング環境で を設定すると、 はクラスターレベルの を使用してアクセスエントリ AWS Batch を作成しますAWSBatchClusterPolicy。次に、名前空間スコープを関連付けAWSBatchNamespacePolicyて、ポッドを作成および管理するためのアクセス許可を付与 AWS Batch する必要があります。アクセスエントリが に達したら
status=ACTIVE、以下を使用して名前空間ポリシーを関連付けます AWS CLI。$aws eks associate-access-policy \ --cluster-namemy-cluster\ --principal-arnarn:aws:iam::123456789012:role/aws-service-role/batch.amazonaws.com/AWSServiceRoleForBatch\ --policy-arn arn:aws:eks::aws:cluster-access-policy/AWSBatchNamespacePolicy \ --access-scope type=namespace,namespaces=my-aws-batch-namespacemy-aws-batch-namespaceを で指定した値に置き換えますeksConfiguration.kubernetesNamespace。重要
名前空間スコープポリシーの関連付けがないと、ジョブは
RUNNABLEステータスのままになります。クラスターレベルのポリシーだけでは、ポッド管理アクセス許可は付与されません。 -
Kubernetes ロールとロールバインディング (アクセスエントリ の場合
status=INACTIVE) — マネージドアクセスエントリがアクティブでない場合は、 AWS Batch「」で説明されているように、これらのアクセス許可を付与するロールKubernetesとロールバインディングを作成しますステップ 2: 用の Amazon EKS クラスターを準備する AWS Batch。これはクラスターごとに 1 回行います。注記
AWS Batchマネージドアクセスエントリがアクティブな場合 (
status=ACTIVE)、KubernetesRBAC ロールはバイパスされます。代わりに、アクセスポリシーの関連付け方法を使用する必要があります。
AWS Batch はこれらのリソースを作成しません。また、 AWS Batchマネージドアクセスエントリがリソースの代わりになることはありません。それらが見つからない場合、ジョブの開始に失敗
VALIDしてもコンピューティング環境は になる可能性があります。 -
- ノードインスタンスロールのクラスターアクセス
-
AWS Batch を起動するインスタンスは、 で指定したインスタンスプロファイルを使用してクラスターに参加します
computeResources.instanceRole。このロールには、 AWS Batchが管理するアクセスエントリとは別のクラスターへの独自のアクセスが必要であり、 AWS Batch は設定しません。設定方法は、クラスターの によって異なります
authenticationMode。-
authenticationModeが のクラスターCONFIG_MAPの場合 — ConfigMapaws-authを使用する必要があります。アクセスエントリは、これらのクラスターではサポートされていません。 -
authenticationModeが のクラスターAPI_AND_CONFIG_MAPの場合 — ノードインスタンスロールは、ConfigMapaws-authまたはアクセスエントリを使用して認証できます。インスタンスロールが ConfigMap に既にマッピングされている場合、ノードはロールのアクセスエントリを作成せずに正常に結合されます。 -
authenticationModeが のクラスターAPIの場合 — ノードインスタンスロールのアクセスエントリを作成する必要があります。ConfigMapaws-authは、これらのクラスターでの認証には使用されません。
ノードインスタンスロールのアクセスエントリを作成するには、以下を使用します AWS CLI。
$aws eks create-access-entry \ --cluster-namemy-cluster\ --principal-arnarn:aws:iam::123456789012:role/my-node-instance-role\ --type EC2_LINUX$aws eks associate-access-policy \ --cluster-namemy-cluster\ --principal-arnarn:aws:iam::123456789012:role/my-node-instance-role\ --policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSWorkerNodePolicy \ --access-scope type=cluster詳細については、「Amazon EKS ユーザーガイド」の「アクセスエントリの作成」を参照してください。
重要
ノードインスタンスロールに適切なクラスターアクセスがないと、EC2 インスタンスはクラスターに参加できません。クラスターにキャパシティーが登録されないため、ジョブは
RUNNABLE状態のままになります。 -
ConfigMap aws-auth エントリとアクセスエントリの選択
アクセスエントリ認証は、Amazon EKS コンピューティング環境の新しい AWS Batch に推奨されるパスであり、次の利点があります。
-
ConfigMap
aws-authを手動で編集してクラスター AWS Batch へのアクセスを許可する必要がなくなります。 -
クラスターにアクセスできるプリンシパルの監査可能な API 駆動型レコードを提供します。
-
ConfigMap をサポートしていない
authenticationModeがaws-authAPIであるクラスターに必要です。
クラスターの authenticationModeが の場合CONFIG_MAP、アクセスエントリは利用できず、ConfigMap aws-auth を介して AWS Batch 認証されます。手順については、「aws-auth ConfigMap のフィールドが正しく設定されていることを確認します」を参照してください。