Amazon EKS Pod 执行 IAM 角色
要在 AWS Fargate 基础设施上运行 Pods,需要有 Amazon EKS Pod 执行角色。
当您的集群在 AWS Fargate 基础设施上创建 Pods 时,在 Fargate 基础设施上运行的组件必须代表您调用 AWS API。这是为了他们可以执行诸如从 Amazon ECR 中拉取容器镜像或将日志路由到其他 AWS 服务的操作。Amazon EKS Pod 执行角色提供执行此操作的 IAM 权限。
创建 Fargate 配置文件时,必须使用配置文件为在 Fargate 基础设施上运行的 Amazon EKS 组件指定 Pod 执行角色。此角色将被添加到集群的 Kubernetes 基于角色的访问控制kubelet
注册到您的 Amazon EKS 集群,以便它可以作为节点显示在您的集群中。
注意
Fargate 配置文件的 IAM 角色必须与 Amazon EC2 节点组的 IAM 角色不同。
重要
在 Fargate Pod 中运行的容器不能承担与 Pod 执行角色相关联的 IAM 权限。要授予 Fargate Pod 中的容器访问其他 AWS 服务的权限,您必须使用服务账户的 IAM 角色。
在创建 Fargate 配置文件之前,必须使用 AmazonEKSFargatePodExecutionRolePolicy创建 IAM 角色。
检查正确配置的现有 Pod 执行角色
您可以使用以下程序检查并查看您的账户是否已有正确配置的 Amazon EKS Pod 执行角色。为了避免混淆代理安全问题,该角色必须根据 SourceArn
限制访问权限。您可以根据需要修改执行角色,以包括对其他集群上的 Fargate 配置文件的支持。
-
通过 https://console.aws.amazon.com/iam/
打开 IAM 控制台。 -
在左侧导航窗格中,选择 角色。
-
在 Roles(角色)页面上,搜索 AmazonEKSFargatePodExecutionRole 的角色列表。如果该角色不存在,请参阅 创建 Amazon EKS Pod 执行角色 以创建该角色。如果该角色存在,请选择该角色。
-
在 AmazonEKSFargatePodExecutionRole 页面上,请执行以下操作:
-
选择权限。
-
确保将 AmazonEKSFargatePodExecutionRolePolicy Amazon 托管策略附加到该角色。
-
选择 Trust Relationships(信任关系)。
-
选择 Edit trust policy(编辑信任策略)。
-
-
在 Edit trust policy(编辑信任策略)页面中,验证信任关系是否包含以下策略,并且在集群上是否有 Fargate 配置文件的行。如果是这样,请选择 Cancel(取消)。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:eks:region-code:111122223333:fargateprofile/my-cluster/*" } }, "Principal": { "Service": "eks-fargate-pods.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
如果策略匹配但没有指定集群上 Fargate 配置文件的行,则可以在
ArnLike
对象顶部添加以下行。将region-code
替换为您在其中创建该集群的 AWS 区域,将111122223333
替换为您的账户 ID,并将my-cluster
替换为您的集群的名称。"aws:SourceArn": "arn:aws:eks:region-code:111122223333:fargateprofile/my-cluster/*",
如果策略不匹配,请将之前的完整策略复制到表单中,然后选择 Update policy(更新策略)。将
region-code
替换为您的集群所在的 AWS 区域。如果您希望在账户中的所有 AWS 区域使用相同的角色,请将region-code
替换为*
。将111122223333
替换为您的账户 ID,并将my-cluster
替换为您的集群名称。如果您希望在账户中对所有集群使用相同角色,请将my-cluster
替换为\*
。
创建 Amazon EKS Pod 执行角色
如果尚无针对集群的 Amazon EKS Pod 执行角色,您可以使用 AWS Management Console 或 AWS CLI 来创建它。
- AWS Management Console
-
-
通过 https://console.aws.amazon.com/iam/
打开 IAM 控制台。 -
在左侧导航窗格中,选择 角色。
-
在 Roles(角色)页面上,选择 Create role(创建角色)。
-
在 Select trusted entity(选择受信任的实体)页面上,请执行以下操作:
-
在可信实体类型部分中,选择 AWS 服务。
-
从其它 AWS 服务的使用案例下拉列表中,选择 EKS。
-
选择 EKS – Fargate Pod。
-
选择下一步。
-
-
在 Add permissions(添加权限)页面上,选择 Next(下一步)。
-
在 Name, review, and create(命名、查看和创建)页面中,请执行以下操作:
-
对于 Role name(角色名称),请为角色输入唯一名称,例如
AmazonEKSFargatePodExecutionRole
。 -
在添加标签(可选)下,将标签作为键值对附加,以将元数据添加到角色。有关在 IAM 中使用标签的更多信息,请参阅《IAM 用户指南》 中的标记 IAM 资源。
-
选择创建角色。
-
-
在角色页面上,搜索 AmazonEKSFargatePodExecutionRole 的角色列表。选择角色。
-
在 AmazonEKSFargatePodExecutionRole 页面上,请执行以下操作:
-
选择信任关系。
-
选择 Edit trust policy(编辑信任策略)。
-
-
在 Edit trust policy(编辑信任策略)页面上,执行以下操作:
-
将以下内容复制并粘贴到 Edit trust policy(编辑信任策略)表单中。将
region-code
替换为您的集群所在的 AWS 区域。如果您希望在账户中的所有 AWS 区域使用相同的角色,请将region-code
替换为*
。将111122223333
替换为您的账户 ID,并将my-cluster
替换为您的集群名称。如果您希望在账户中对所有集群使用相同角色,请将my-cluster
替换为\*
。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:eks:region-code:111122223333:fargateprofile/my-cluster/*" } }, "Principal": { "Service": "eks-fargate-pods.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
-
选择更新策略。
-
-
- AWS CLI
-
-
复制并将以下内容粘贴到名为
pod-execution-role-trust-policy.json
的文件中。将region-code
替换为您的集群所在的 AWS 区域。如果您希望在账户中的所有 AWS 区域使用相同的角色,请将region-code
替换为*
。将111122223333
替换为您的账户 ID,并将my-cluster
替换为您的集群名称。如果您希望在账户中对所有集群使用相同角色,请将my-cluster
替换为\*
。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:eks:region-code:111122223333:fargateprofile/my-cluster/*" } }, "Principal": { "Service": "eks-fargate-pods.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
-
创建 Pod 执行 IAM 角色。
aws iam create-role \ --role-name AmazonEKSFargatePodExecutionRole \ --assume-role-policy-document file://"pod-execution-role-trust-policy.json"
-
将所需的 Amazon EKS 托管 IAM policy 附加到角色。
aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AmazonEKSFargatePodExecutionRolePolicy \ --role-name AmazonEKSFargatePodExecutionRole
-