设置 Amazon EKS 容器组身份代理
Amazon EKS 容器组身份关联提供管理应用程序凭证的功能,类似于 Amazon EC2 实例配置文件为 Amazon EC2 实例提供凭证的方式。
Amazon EKS 容器组身份通过额外的 EKS Auth API,以及在每个节点上运行的代理容器组为您的工作负载提供凭证。
注意事项
-
默认情况下,EKS 容器组身份代理会侦听
IPv4
和IPv6
地址,以便为容器组请求凭证。对于IPv4
,代理会使用环回(本地主机)IP 地址169.254.170.23
,对于IPv6
,则会使用本地主机 IP 地址[fd00:ec2::23]
。 -
如果禁用
IPv6
地址或以其它方式阻止本地主机IPv6
IP 地址,代理将无法启动。要在无法使用IPv6
的节点上启动代理,请按照 在 EKS 容器组身份代理中禁用 IPv6 中的步骤禁用IPv6
配置。
创建 Amazon EKS 容器组身份代理
代理先决条件
-
现有 Amazon EKS 集群。要部署一个角色,请参阅 开始使用 Amazon EKS。集群版本和平台版本必须与 EKS 容器组身份集群版本EKS 容器组身份版本中列出的版本相同或更高。
-
节点角色有权让代理在 EKS Auth API 中执行
AssumeRoleForPodIdentity
操作。您可以使用 AWS托管策略:AmazonEKSWorkerNodePolicy AWS 托管策略 AmazonEKSWorkerNodePolicy 或添加类似如下的自定义策略:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "eks-auth:AssumeRoleForPodIdentity" ], "Resource": "*" } ] }
可通过标签来限制此操作,以限制使用代理的容器组可以分派哪些角色。
-
节点可以访问 Amazon ECR 并从中下载映像。该附加组件的容器映像位于查看 Amazon EKS 附加组件的 Amazon 容器映像注册表查看 Amazon EKS 附加组件的 Amazon 容器映像中列出的注册表中。
请注意,您可以在 AWS Management Console 中的可选配置设置,以及 AWS CLI 中的
--configuration-values
更改映像位置并为 EKS 附加组件提供imagePullSecrets
。 -
节点可以访问 Amazon EKS Auth API。对于私有集群,AWS PrivateLink 中的
eks-auth
端点是必需的。
使用 AWS 控制台设置代理
-
在左侧导航窗格中,选择集群,然后为您要配置 EKS 容器组身份代理插件的集群选择集群名称。
-
选择附加组件选项卡。
-
选择获取更多附加组件。
-
选择 EKS 容器组身份代理插件框右上角的框,然后选择下一步。
-
在配置选定插件设置页面上,从版本下拉列表中选择任意版本。
-
(可选)展开可选配置设置以输入其他配置。例如,您可以提供备用容器映像位置和
ImagePullSecrets
。带有已接受键的 JSON Schema 显示在插件配置架构中。在配置值中输入配置键和值。
-
选择下一步。
-
确认 EKS 容器组身份代理容器组正在您的集群上运行。
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 容器组身份关联。有关更多信息,请参阅 为 Kubernetes 服务账户分配 IAM 角色。
使用 AWS CLI 设置代理
-
运行以下 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 容器组身份代理不将
service-account-role-arn
用于服务账户的 IAM 角色。您必须为 EKS 容器组身份代理提供节点角色的权限。 -
确认 EKS 容器组身份代理容器组正在您的集群上运行。
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 容器组身份关联。有关更多信息,请参阅 为 Kubernetes 服务账户分配 IAM 角色。