

 **帮助改进此页面** 

要帮助改进本用户指南，请选择位于每个页面右侧窗格中的**在 GitHub 上编辑此页面**链接。

# 设置 Amazon EKS 容器组身份代理
<a name="pod-id-agent-setup"></a>

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

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

**提示**  
您无需在 EKS 自动模式集群上安装 EKS 容器组身份代理。此功能已内置在 EKS 自动模式中。

## 注意事项
<a name="pod-id-agent-considerations"></a>
+ 默认情况下，EKS 容器组身份代理预安装在 EKS 自动模式集群上。要了解更多信息，请参阅[使用 EKS 自动模式实现集群基础设施自动化](automode.md)。
+ 默认情况下，EKS 容器组身份代理会侦听 `IPv4` 和 `IPv6` 地址，以便为容器组请求凭证。对于 `IPv4`，代理会使用环回（本地主机）IP 地址 `169.254.170.23`，对于 `IPv6`，则会使用本地主机 IP 地址 `[fd00:ec2::23]`。
+ 如果禁用 `IPv6` 地址或以其它方式阻止本地主机 `IPv6` IP 地址，代理将无法启动。要在无法使用 `IPv6` 的节点上启动代理，请按照 [在 EKS 容器组身份代理中禁用 `IPv6`](pod-id-agent-config-ipv6.md) 中的步骤禁用 `IPv6` 配置。

## 创建 Amazon EKS 容器组身份代理
<a name="pod-id-agent-add-on-create"></a>

### 代理先决条件
<a name="pod-id-agent-prereqs"></a>

**重要**  
EKS 容器组身份代理运行所在的节点必须能够访问 EKS Auth API。如果对节点使用私有子网，则必须为 EKS Auth API 设置 AWS PrivateLink 接口端点。有关更多信息，请参阅 [使用 AWS PrivateLink 访问 Amazon EKS](vpc-interface-endpoints.md)。
+ 现有 Amazon EKS 集群。要部署一个角色，请参阅[开始使用 Amazon EKS](getting-started.md)。集群版本和平台版本必须与 [EKS 容器组身份集群版本](pod-identities.md#pod-id-cluster-versions)中列出的版本相同或更高。
+ 节点角色有权让代理在 EKS Auth API 中执行 `AssumeRoleForPodIdentity` 操作。您可以使用 [AWS 托管式策略：AmazonEKSWorkerNodePolicy](security-iam-awsmanpol.md#security-iam-awsmanpol-amazoneksworkernodepolicy)，或添加类似如下的自定义策略：

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

  可通过标签来限制此操作，以限制使用代理的容器组可以分派哪些角色。
+ 节点可以访问 Amazon ECR 并从中下载映像。该附加组件的容器映像位于[查看 Amazon EKS 附加组件的 Amazon 容器映像注册表](add-ons-images.md)中列出的注册表中。

  请注意，您可以在 AWS 管理控制台 中的**可选配置设置**，以及 AWS CLI 中的 `--configuration-values` 更改映像位置并为 EKS 附加组件提供 `imagePullSecrets`。

### 使用 AWS 控制台设置代理
<a name="setup_agent_with_shared_aws_console"></a>

1. 打开 [Amazon EKS 控制台](https://console.aws.amazon.com/eks/home#/clusters)。

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

1. 选择**附加组件**选项卡。

1. 选择**获取更多附加组件**。

1. 选择 EKS 容器组身份代理插件框右上角的框，然后选择**下一步**。

1. 在**配置选定插件设置**页面上，从**版本**下拉列表中选择任意版本。

1. （可选）展开**可选配置设置**以输入其他配置。例如，您可以提供备用容器映像位置和 `ImagePullSecrets`。带有已接受键的 JSON 架构显示在**附加组件配置架构**中。

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

1. 选择**下一步**。

1. 确认 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 角色](pod-id-association.md)。

### 使用 AWS CLI 设置代理
<a name="setup_agent_with_shared_aws_cli"></a>

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

1. 确认 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 角色](pod-id-association.md)。