本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
亚马逊 EKS 访问入口身份验证
Amazon EKS 支持两种机制来授予 IAM 委托人调用集群 Kubernetes API 的权限:传统aws-auth ConfigMap 和更新的访问入口 API 。访问条目向 IAM 委托人授予 Kubernetes API 访问权限,无需您编辑 ConfigMap。 AWS Batch 可以通过任何一种机制向您的集群进行身份验证。
当您在计算环境ENABLED上设置eksConfiguration.accessEntry.desiredState为时, AWS Batch 可以在集群上管理该计算环境的访问入口。您不再需要手动编辑aws-auth ConfigMap。
是否预 AWS Batch 置访问条目取决于您的 AWS Batch 计算环境和您的 Amazon EKS 集群配置。有关详细信息,请参阅与集群的身份验证模式的交互。
访问权限值 Entry.desiredState
上的desiredState字段EksAccessEntry声明了计算环境所需的访问入口状态。有效值为:
ENABLED-
AWS Batch 在集群上为计算环境创建一个 AWS Batch-managed 访问条目。 AWS Batch 仅当集群上的所有计算环境都设置为
desiredStateENABLED(有关详细信息,请参见操作方法 AWS Batch 协调计算环境中的 D esiredState)时,才会创建 AWS Batch-managed 访问条目。 DISABLED-
AWS Batch 删除集群的 AWS Batch-managed 访问权限条目。 AWS Batch 只有当集群上的所有计算环境都设置为
desiredStateDISABLED(有关详细信息,请参见操作方法 AWS Batch 协调计算环境中的 D esiredState)时,才会删除 AWS Batch-managed 访问条目。必须通过配置对群集的访问权限aws-authConfigMap。 INHERIT_FROM_CLUSTER-
AWS Batch 延迟到集群的当前访问条目
status。在身份验证模式为的 Amazon EKS 集群上API, AWS Batch 创建和管理访问条目,因为该集群没有可aws-authConfigMap 回退的权限。在身份验证模式为CONFIG_MAP或的集群上API_AND_CONFIG_MAP, AWS Batch 既不添加也不删除访问条目。
计算环境还在DescribeComputeEnvironments响应中公开了一个只读accessEntry.status字段。ACTIVE表示集群上存在计算环境的 AWS Batch-managed 访问权限条目,优先于。aws-auth ConfigMapINACTIVE表示不存在 AWS Batch-managed 访问条目。这可能是因为desiredState针对集群的计算环境尚未达成共识desiredState,或者因为该条目尚未预置完毕。DISABLED如果accessEntry.status是INACTIVE,则批量使用aws-auth ConfigMap 集群访问。
注意
访问条目ACTIVE一旦存在于集群上就会立即报告,即使 AWS Batch 尚未完成使其可用的访问策略的关联也是如此。如果计算环境状态更改为 wh INVALID ile accessEntry.status isACTIVE,请参阅亚马逊 EKS 访问条目设置不完整。
注意
如果您省略该accessEntry字段,则 AWS Batch 不会desiredState为计算环境记录 a,也DescribeComputeEnvironments不会返回一个。出于配置访问条目的的目的, AWS Batch 其行为与其相同。INHERIT_FROM_CLUSTER
与集群的身份验证模式的交互
给定 AWS Batch 对象的行为方式desiredState取决于集群的身份验证模式。下表适用于CreateComputeEnvironment和UpdateComputeEnvironment。
集群 |
计算环境 |
计算环境 |
计算环境 |
|---|---|---|---|
|
访问条目在集群上不可用,因此 AWS Batch 无法创建或删除访问条目。 AWS Batch 仍会记录您指定的值。更改集群的身份验证模式后,该记录的值将在您下次指定的 |
||
|
AWS Batch 比较共享群集的计算环境中的记录值——请参阅操作方法 AWS Batch 协调计算环境中的 D esiredState。 |
保留现有访问模式。 AWS Batch 不添加或删除访问条目。 |
|
|
访问条目是在集群上创建和维护的。 |
请求被拒绝。此模式下的集群不支持 |
访问条目是在集群上创建和维护的。当集群为 |
操作方法 AWS Batch 协调计算环境中的 D esiredState
由于单个 Amazon EKS 集群可以支持多个 AWS Batch 计算环境,因此集群的访问配置是一种共享资源。 AWS Batch 因此,协调或比较和解析在这些计算环境中记录的desiredState值。
当集群为时API_AND_CONFIG_MAP, AWS Batch 比较目标群集的同一 AWS 账户和 AWS 区域中每个计算环境的desiredState记录。authenticationMode AWS Batch 使用此比较来确定是添加还是删除每个指定的CreateComputeEnvironment或UpdateComputeEnvironment操作的访问条目desiredState。
- 每个计算环境都有
desiredState=ENABLED -
AWS Batch 在集群上创建访问条目。
- 每个计算环境都有
desiredState=DISABLED -
AWS Batch 如果存在访问条目,则从集群中删除访问条目。
- 记录的
desiredState值并非全部匹配 -
AWS Batch 保留现有的访问模式。既未添加也未删除访问条目。这包括
ENABLEDDISABLED、和的任意组合INHERIT_FROM_CLUSTER,还包括任何未desiredState记录的计算环境。
注意
要将身份验证模式为API_AND_CONFIG_MAP的集群aws-auth ConfigMap 转换为访问入口身份验证,请在每个以该集群为目标的 AWS Batch 计算环境desiredState=ENABLED上进行设置。要向后过渡,请将其中的每一个都设置desiredState=DISABLED为开启。
内容 AWS Batch 在您的集群上创建
AWS Batch 为满足上述条件的每个集群创建一个访问条目,然后将 AWSBatchClusterPolicy Amazon EKS 访问策略与该访问条目相关联。访问条目是针对每个集群而不是每个计算环境的,因此所有以同一集群为目标的 AWS Batch 计算环境共享该条目。
注意
删除计算环境不会删除访问条目,即使它是集群上的最后一个 AWS Batch 计算环境也是如此。要移除 AWS Batch-managed 访问条目,请在删除目标群集的每个 AWS Batch 计算环境之前对其进行调用UpdateComputeEnvironment。desiredState=DISABLED
访问条目本身不足以在集群上运行作业。有关必须自己配置的Kubernetes权限和节点访问权限,请参阅您仍必须提供的集群配置。
所需的权限
AWS Batch 使用调用CreateComputeEnvironment或UpdateComputeEnvironment操作的 IAM 身份的证书管理访问条目。必须允许该身份执行以下亚马逊 EKS 操作:
-
eks:DescribeCluster -
eks:DescribeAccessEntry -
eks:CreateAccessEntry -
eks:AssociateAccessPolicy -
eks:DeleteAccessEntry
配置访问条目
您可以通过CreateComputeEnvironment或 UpdateComputeEnvironment API 的eksConfiguration.accessEntry字段在计算环境中配置访问条目。
您仍必须提供的集群配置
访问条目仅控制如何对您的集群 AWS Batch 进行身份验证。它不授 AWS Batch 予运行任务所需的Kubernetes权限,也不允许 AWS Batch 启动的实例加入集群。无论使用哪种身份验证机制,仍必须配置以下两项。
重要
在群集上为 AWS Batch 服务相关角色创建 AWS Batch-managed 访问权限条目后 (accessEntry.status=ACTIVE),其优先级将高于该角色的aws-auth ConfigMap 配置。 AWS Batch 服务相关角色的 ConfigMap 条目未使用,而是使用访问条目 AWS Batch 进行身份验证。要返回 ConfigMap 身份验证,请在所有以群集为目标的计算环境desiredState=DISABLED上进行设置。这将删除 AWS Batch-managed 访问条目。
- Kubernetes AWS Batch 命名空间的权限
-
AWS Batch 需要Kubernetes权限才能在你指定的命名空间中创建和管理 pod
eksConfiguration.kubernetesNamespace。创建命名空间,然后根据您的身份验证方法使用以下方法之一配置这些权限:-
访问策略关联(访问权限输入时为必填项
status=ACTIVE)-当您在所有以集群为目标的计算环境desiredState=ENABLED上设置时,将 AWS Batch 创建集群AWSBatchClusterPolicy级别的访问条目。然后,你必须关联命名空间范围AWSBatchNamespacePolicy以授予创建和管理 pod 的 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单独的集群级策略并不能授予 Pod 管理权限。 -
Kubernetes角色和角色绑定(访问权限进入时
status=INACTIVE)-如果 AWS Batch-managed 访问条目处于非活动状态,请创建授予这些权限的Kubernetes角色和角色绑定,如中所述。第 2 步:为 Amazon EKS 集群做好准备 AWS Batch您可以为每个集群执行一次此操作。注意
当 AWS Batch-managed 访问条目处于活动状态 (
status=ACTIVE) 时,将绕Kubernetes过 RBAC 角色。您必须改用访问策略关联方法。
AWS Batch 不会为您创建这些资源, AWS Batch-managed 访问权限条目也不能替代它们。如果缺少它们,在任务无法启动
VALID时,计算环境仍然会变成。 -
- 节点实例角色的集群访问权限
-
AWS Batch 启动的实例使用您在中指定的实例配置文件加入集群
computeResources.instanceRole。该角色需要自己的集群访问权限,该访问权限与 AWS Batch-managed 访问权限条目分开且 AWS Batch 不进行配置。配置方法取决于您的集群的
authenticationMode:-
在位
authenticationMode于CONFIG_MAP— 的集群上,必须使用aws-authConfigMap。这些集群不支持访问条目。 -
在其
authenticationModeis 的集群上API_AND_CONFIG_MAP— 节点实例角色可以使用aws-authConfigMap 或访问条目进行身份验证。如果实例角色已映射到中 ConfigMap,则节点将成功加入,而无需为该角色创建访问条目。 -
在其
authenticationModeis 的集群上API— 必须为节点实例角色创建访问条目。不aws-authConfigMap 用于在这些集群上进行身份验证。
要为节点实例角色创建访问条目,请使用 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状态。 -
在 aws-auth ConfigMap 和访问条目之间进行选择
访问入口身份验证是 Amaz AWS Batch on EKS 计算环境新手的推荐路径,它具有以下优点:
-
无需手动编辑即可授予
aws-authConfigMap 对集群的 AWS Batch 访问权限。 -
提供可审计的有权访问集群的主体 API-driven 记录。
-
对于不支持
authenticationModeisAPI的集群来说是必需的aws-authConfigMap。
如果您的集群authenticationMode是CONFIG_MAP,则访问条目不可用,需要通过 AWS Batch 进行身份验证。aws-auth ConfigMap有关说明,请参阅验证 aws-auth ConfigMap 配置是否正确。