

 **帮助改进此页面** 

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

# 将现有 `aws-auth ConfigMap` 条目迁移至访问条目
<a name="migrating-access-entries"></a>

如果您已向集群的 `aws-auth` `ConfigMap` 中添加了条目，我们建议您为 `aws-auth` `ConfigMap` 中的现有条目创建访问条目。创建访问条目后，您可以从 `ConfigMap` 中移除这些条目。不能将[访问策略](access-policies.md)关联到 `aws-auth` `ConfigMap` 中的条目。如果您想将访问策略与您的 IAM 主体相关联，请创建访问条目。

**重要**  
当集群处于 `API_AND_CONFIGMAP` 身份验证模式并且在 `aws-auth` `ConfigMap` 和访问条目中都存在同一 IAM 角色的映射时，该角色将使用访问条目的映射进行身份验证。对于同一 IAM 主体，访问条目优先于 `ConfigMap` 条目。
在移除 Amazon EKS 为[托管节点组](managed-node-groups.md)创建的现有 `aws-auth` `ConfigMap` 条目或集群的 [Fargate 配置文件](fargate-profile.md)之前，请仔细检查您的 Amazon EKS 集群中是否存在这些特定资源的正确访问条目。如果您移除 Amazon EKS 在 `ConfigMap` 中创建的条目而没有等效的访问条目，您的集群将无法正常运行。

## 先决条件
<a name="migrating_access_entries_prereq"></a>
+ 熟悉访问条目和访问策略。有关更多信息，请参阅[使用 EKS 访问条目向 IAM 用户授予 Kubernetes 访问权限](access-entries.md)和[将访问策略与访问条目关联起来](access-policies.md)。
+ 一个平台版本等于或高于[使用 EKS 访问条目向 IAM 用户授予 Kubernetes 访问权限](access-entries.md)主题中“先决条件”部分所列版本的现有版本。
+ 您的设备或 Amazon CloudShell 上安装 `0.215.0` 版或更高版本的 `eksctl` 命令行工具。要安装或更新 `eksctl`，请参阅 `eksctl` 文档中的 [Installation](https://eksctl.io/installation)。
+ 用于修改 `kube-system` 命名空间中的 `aws-auth` `ConfigMap` 的 Kubernetes 权限。
+ 具有以下权限的 Amazon Identity and Access Management 角色或用户：`CreateAccessEntry` 和 `ListAccessEntries`。有关更多信息，请参阅《服务授权参考》中的 [Amazon Elastic Kubernetes Service 定义的操作](https://docs.amazonaws.cn/service-authorization/latest/reference/list_amazonelastickubernetesservice.html#amazonelastickubernetesservice-actions-as-permissions)。

## `eksctl`
<a name="migrating_access_entries_eksctl"></a>

1. 查看您的 `aws-auth ConfigMap` 中的现有条目。将 *my-cluster* 替换为您的集群的名称。

   ```
   eksctl get iamidentitymapping --cluster my-cluster
   ```

   示例输出如下。

   ```
   ARN                                                                                             USERNAME                                GROUPS                                                  ACCOUNT
   arn:aws-cn:iam::111122223333:role/EKS-my-cluster-Admins                                            Admins                                  system:masters
   arn:aws-cn:iam::111122223333:role/EKS-my-cluster-my-namespace-Viewers                              my-namespace-Viewers                    Viewers
   arn:aws-cn:iam::111122223333:role/EKS-my-cluster-self-managed-ng-1                                 system:node:{{EC2PrivateDNSName}}       system:bootstrappers,system:nodes
   arn:aws-cn:iam::111122223333:user/my-user                                                          my-user
   arn:aws-cn:iam::111122223333:role/EKS-my-cluster-fargateprofile1                                   system:node:{{SessionName}}             system:bootstrappers,system:nodes,system:node-proxier
   arn:aws-cn:iam::111122223333:role/EKS-my-cluster-managed-ng                                        system:node:{{EC2PrivateDNSName}}       system:bootstrappers,system:nodes
   ```

1.  为您创建的并在上一个输出中返回的任何 `ConfigMap` 条目[创建访问条目](creating-access-entries.md)。创建访问条目时，请确保为输出中返回的 `ARN`、`USERNAME`、`GROUPS` 和 `ACCOUNT` 指定相同的值。在此示例输出中，您将为除最后两个条目外的其他所有条目创建访问条目，因为最后两个条目是由 Amazon EKS 为 Fargate 配置文件和托管节点组创建的。

1. 从 `ConfigMap` 中删除您创建的任何访问条目对应的条目。如果您不从 `ConfigMap` 中删除条目，则 IAM 主体 ARN 的访问条目设置将覆盖 `ConfigMap` 条目。将 *111122223333* 替换为您的 Amazon 账户 ID，将 *EKS-my-cluster-my-namespace-Viewers* 替换为您的 `ConfigMap` 中相应条目的角色名称。如果您要移除的条目是用于 IAM 用户而不是 IAM 角色的，请将 `role` 替换为 `user`，将 *EKS-my-cluster-my-namespace-Viewers* 替换为用户名。

   ```
   eksctl delete iamidentitymapping --arn arn:aws-cn:iam::111122223333:role/EKS-my-cluster-my-namespace-Viewers --cluster my-cluster
   ```