为集群创建 IAM OIDC 提供商 - Amazon EKS
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

为集群创建 IAM OIDC 提供商

您的集群具有与其关联的 OpenID Connect(OIDC)颁发者 URL。要将 Amazon Identity and Access Management(IAM)角色用于服务账户,您的集群 OIDC 发布者 URL 必须存在 IAM OIDC 提供商。

先决条件
  • 现有 Amazon EKS 集群。要部署一个角色,请参阅 开始使用 Amazon EKS

  • 在您的设备或 Amazon CloudShell 上安装和配置了 Amazon Command Line Interface(Amazon CLI)的版本 2.12.3 或更高版本,或版本 1.27.160 或更高版本。要查看当前版本,请使用 aws --version | cut -d / -f2 | cut -d ' ' -f1。软件包管理器(如 yumapt-get 或适用于 macOS 的 Homebrew)通常比 Amazon CLI 的最新版本落后几个版本。要安装最新版本,请参阅《Amazon Command Line Interface 用户指南》中的安装、更新和卸载 Amazon CLI,以及使用 aws configure 快速配置。Amazon CloudShell 中安装的 Amazon CLI 版本也可能比最新版本落后几个版本。如需更新,请参阅《Amazon CloudShell 用户指南》中的将 Amazon CLI 安装到主目录

  • 您的设备或 Amazon CloudShell 上安装了 kubectl 命令行工具。该版本可以与集群的 Kubernetes 版本相同,或者最多早于或晚于该版本一个次要版本。例如,如果您的集群版本为 1.28,则可以将 kubectl1.271.281.29 版本与之配合使用。要安装或升级 kubectl,请参阅 安装或更新 kubectl

  • 包含集群配置的现有 kubectl config 文件。要创建 kubectl config 文件,请参阅 为 Amazon EKS 集群创建或更新 kubeconfig 文件

您可以使用 eksctl 或Amazon Web Services Management Console为集群创建 IAM OIDC 提供商。

eksctl
先决条件

您的设备或 Amazon CloudShell 上安装了 0.171.0 版或更高版本的 eksctl 命令行工具。要安装或更新 eksctl,请参阅 eksctl 文档中的 Installation

使用 eksctl 为集群创建 IAM OIDC 身份提供商
  1. 确定您的集群的 OIDC 发布者 ID。

    检索集群的 OIDC 发布者 ID 并将其存储在变量中。将 my-cluster 替换为您自己的值。

    cluster_name=my-cluster
    oidc_id=$(aws eks describe-cluster --name $cluster_name --query "cluster.identity.oidc.issuer" --output text | cut -d '/' -f 5)
    echo $oidc_id
  2. 确定您的账户中是否已存在具有您的集群发布者 ID 的 IAM OIDC 提供商。

    aws iam list-open-id-connect-providers | grep $oidc_id | cut -d "/" -f4

    如果返回了输出,则表示您的集群已经有 IAM OIDC 提供商,您可以跳过下一步。如果没有返回输出,则您必须为集群创建 IAM OIDC 提供商。

  3. 使用以下命令为您的集群创建 IAM OIDC 身份提供商。

    eksctl utils associate-iam-oidc-provider --cluster $cluster_name --approve
    注意

    如果您启用 EKS VPC 端点,则无法从该 VPC 内部访问 EKS OIDC 服务端点。因此,您在 VPC 中使用 eksctl 创建 OIDC 提供商等操作将不起作用,并且在尝试请求 https://oidc.eks.region.amazonaws.com 时将导致超时。错误消息示例如下:

    ** server can't find oidc.eks.region.amazonaws.com: NXDOMAIN

    要完成此步骤,您可以在 VPC 外部运行该命令,例如在 Amazon CloudShell 中或在连接到互联网的计算机上。

Amazon Web Services Management Console
使用 Amazon Web Services Management Console 为集群创建 IAM OIDC 身份提供商
  1. 从以下位置打开 Amazon EKS 控制台:https://console.aws.amazon.com/eks/home#/clusters

  2. 在左侧窗格中,选择 Clusters(集群),然后在 Clusters(集群)页面上选择集群的名称。

  3. Overview(概述)选项卡上的 Details(详细信息)部分中,记下 OpenID Connect provider URL(OpenID Connect 提供商 URL)的值。

  4. 通过 https://console.aws.amazon.com/iam/ 打开 IAM 控制台。

  5. 请在左侧导航窗格中,选择 Access management(访问管理)下方的 Identity Providers(标识提供程序)。如果列出的 Provider(提供商)与集群的 URL 匹配,那么您的集群已经有了提供商。如果未列出与集群 URL 匹配的提供商,则必须创建一个提供商。

  6. 要创建提供商,请选择 Add Provider(添加提供商)。

  7. 对于 Provider type(提供商类型),请选择 OpenID Connect

  8. 对于 Provider URL(提供商 URL),输入集群的 OIDC 提供商 URL,然后选择 Get thumbprint(获取指纹)。

  9. 对于 Audience(受众),输入 sts.amazonaws.com,然后选择 Add provider(添加提供商)

后续步骤

配置 Kubernetes 服务账户以分派 IAM 角色