为集群创建 IAM OIDC 提供商
您的集群具有与其关联的 OpenID Connect
-
现有 Amazon EKS 集群。要部署一个角色,请参阅 开始使用 Amazon EKS。
-
在您的设备或 Amazon CloudShell 上安装和配置 Amazon 命令行界面(Amazon CLI)的版本
2.12.3
或更高版本,或版本1.27.160
或更高版本。要查看当前版本,请使用aws --version | cut -d / -f2 | cut -d ' ' -f1
。软件包管理器(如yum
、apt-get
或适用于 macOS 的 Homebrew)通常比 Amazon CLI 的最新版本落后几个版本。要安装最新版本,请参阅《Amazon 命令行界面用户指南》中的安装和使用 aws configure 快速配置。Amazon CloudShell 中安装的 Amazon CLI 版本也可能比最新版本落后几个版本。要对其进行更新,请参阅《Amazon CloudShell 用户指南》中的将 Amazon CLI 安装到您的主目录。 -
您的设备或 Amazon CloudShell 上安装了
kubectl
命令行工具。该版本可以与集群的 Kubernetes 版本相同,或者最多早于或晚于该版本一个次要版本。例如,如果您的集群版本为1.29
,则可以将kubectl
的1.28
、1.29
或1.30
版本与之配合使用。要安装或升级kubectl
,请参阅 设置 kubectl 和 eksctl。 -
包含集群配置的现有
kubectl
config
文件。要创建kubectl
config
文件,请参阅 通过创建 kubeconfig 文件将 kubectl 连接到 EKS 集群。
您可以使用 eksctl
或Amazon Web Services Management Console为集群创建 IAM OIDC 提供商。
创建 OIDC 供应者(eksctl)
-
您的设备或 Amazon CloudShell 上安装
0.190.0
版或更高版本的eksctl
命令行工具。要安装或更新eksctl
,请参阅eksctl
文档中的 Installation。 -
确定您的集群的 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
-
确定您的账户中是否已存在具有您的集群发布者 ID 的 IAM OIDC 提供者。
aws iam list-open-id-connect-providers | grep $oidc_id | cut -d "/" -f4
如果返回了输出,则表示您的集群已经有 IAM OIDC 提供商,您可以跳过下一步。如果没有返回输出,则您必须为集群创建 IAM OIDC 提供商。
-
使用以下命令为您的集群创建 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 cant find oidc.eks.region.amazonaws.com: NXDOMAIN
要完成此步骤,您可以在 VPC 外部运行该命令,例如在 Amazon CloudShell 中或在连接到互联网的计算机上。您也可在 VPC 中创建水平分割条件解析器(例如 Route 53 Resolver),以便为 OIDC 颁发者 URL 使用不同的解析器,而不对其使用 VPC DNS。有关 CoreDNS 中条件转发的示例,请参阅 GitHub 上的 Amazon EKS feature request
创建 OIDC 提供者(Amazon 控制台)
-
在左侧窗格中,选择 Clusters(集群),然后在 Clusters(集群)页面上选择集群的名称。
-
在 Overview(概述)选项卡上的 Details(详细信息)部分中,记下 OpenID Connect provider URL(OpenID Connect 提供商 URL)的值。
-
通过 https://console.aws.amazon.com/iam/
打开 IAM 控制台。 -
请在左侧导航窗格中,选择 Access management(访问管理)下方的 Identity Providers(标识提供程序)。如果列出的 Provider(提供商)与集群的 URL 匹配,那么您的集群已经有了提供商。如果未列出与集群 URL 匹配的提供者,则必须创建一个提提供者。
-
要创建提供商,请选择 Add Provider(添加提供商)。
-
对于提供者类型,请选择 OpenID Connect。
-
对于提供商 URL,输入您的集群的 OIDC 提供商 URL。
-
对于受众,,输入
sts.amazonaws.com
。 -
(可选)添加任何标签,例如用于标识哪个集群用于该提供商的标签。
-
选择 Add provider(添加提供程序)。
下一步: 为 Kubernetes 服务账户分配 IAM 角色