设置 Amazon EKS 容器组身份代理 - Amazon EKS
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

设置 Amazon EKS 容器组身份代理

Amazon EKS 容器组身份关联提供管理应用程序凭证的功能,类似于 Amazon EC2 实例配置文件为 Amazon EC2 实例提供凭证的方式。

Amazon EKS 容器组身份通过额外的 EKS Auth API,以及在每个节点上运行的代理容器组为您的工作负载提供凭证。

创建 Amazon EKS 容器组身份代理

代理先决条件

  • 现有 Amazon EKS 集群。要部署一个角色,请参阅 开始使用 Amazon EKS。集群版本和平台版本必须与 EKS 容器组身份集群版本 中列出的版本相同或更高。

  • 节点角色有权让代理在 EKS Auth API 中执行 AssumeRoleForPodIdentity 操作。您可以使用 Amazon托管策略:AmazonEKSWorkerNodePolicy 或添加自定义策略,自定义策略与以下策略类似:

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

    可通过标签来限制此操作,以限制使用代理的容器组可以分派哪些角色。

  • 节点可以访问 Amazon ECR 并从中下载映像。插件的容器映像位于 Amazon 容器镜像注册表 中列出的注册表中。

    请注意,您可以在 Amazon Web Services Management Console 中的可选配置设置,以及 Amazon CLI 中的 --configuration-values 更改映像位置并为 EKS 插件提供 imagePullSecrets

  • 节点可以访问 Amazon EKS Auth API。对于私有集群,Amazon PrivateLink 中的 eks-auth 端点是必需的。

Amazon Web Services Management Console
  1. 从以下位置打开 Amazon EKS 控制台:https://console.aws.amazon.com/eks/home#/clusters

  2. 在左侧导航窗格中,选择集群,然后为您要配置 EKS 容器组身份代理插件的集群选择集群名称。

  3. 选择附加组件选项卡。

  4. 选择获取更多附加组件

  5. 选择 EKS 容器组身份代理插件框右上角的框,然后选择下一步

  6. 配置选定插件设置页面上,从版本下拉列表中选择任意版本。

  7. (可选)展开可选配置设置以输入其他配置。例如,您可以提供备用容器映像位置和 ImagePullSecrets。带有已接受键的 JSON Schema 显示在插件配置架构中。

    配置值中输入配置键和值。

  8. 选择下一步

  9. 确认 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 服务账户以使用 EKS 容器组身份分派 IAM 角色

Amazon CLI
  1. 运行以下 Amazon 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 容器组身份代理提供节点角色的权限。

  2. 确认 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 服务账户以使用 EKS 容器组身份分派 IAM 角色

更新 Amazon EKS 容器组身份代理

更新 Amazon EKS 类型的附加组件。如果您尚未将 Amazon EKS 类型的插件添加到集群,请参阅 创建 Amazon EKS 容器组身份代理

Amazon Web Services Management Console
  1. 从以下位置打开 Amazon EKS 控制台:https://console.aws.amazon.com/eks/home#/clusters

  2. 在左侧导航窗格中,选择集群,然后为您要配置 EKS 容器组身份代理插件的集群选择集群名称。

  3. 选择附加组件选项卡。

  4. 如果有新版本的插件可用,EKS 容器组身份代理会有一个更新版本按钮。选择更新版本

  5. 配置 Amazon EKS 容器组身份代理页面上,从版本下拉列表中选择新版本。

  6. 选择保存更改

    可能需要几秒钟才能完成更新。然后,通过查看状态确认插件版本已更新。

Amazon 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. 使用 Amazon CLI 更新您的附加组件。如果您想要使用 Amazon Web Services Management Console 或 eksctl 更新附加组件,则请参阅 更新附加组件。将以下命令复制到您的设备。根据需要对该命令进行以下修改,然后运行修改后的命令。

    • my-cluster 替换为您的集群名称。

    • v1.0.0-eksbuild.1 替换为所需的版本。

    • 请将 111122223333 替换为您的账户 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": {} } }