為您的叢集建立 IAM OIDC 身分提供者 - Amazon EKS

協助改進此頁面

若要為本使用者指南貢獻內容,請點選每個頁面右側面板中的在 GitHub 上編輯此頁面連結。

為您的叢集建立 IAM OIDC 身分提供者

您的叢集具有與其相關聯的 OpenID Connect (OIDC) 發行者 URL。若要將 AWS Identity and Access Management (IAM) 角色用於服務帳戶,叢集的 OIDC 發行者 URL 必須有 IAM OIDC 提供商。

  • 現有 Amazon EKS 叢集。若要部署叢集,請參閱 開始使用 Amazon EKS

  • 已在裝置或 AWS CloudShell 上安裝和設定 AWS 命令列介面 (AWS CLI) 版本 2.12.3 或更新版本,或是版本 1.27.160 或更新版本。若要檢查您目前的版本,請使用 aws --version | cut -d / -f2 | cut -d ' ' -f1。如 yumapt-get 或適用於 macOS 的 Homebrew 等套件管理工具通常比最新版本的 AWS CLI 落後數個版本之多。若要安裝最新版本,請參閱《AWS 命令列介面使用者指南》中的安裝使用 aws configure 的快速組態。AWS CloudShell 中安裝的 AWS CLI 版本也可能比最新版本落後數個版本。若要更新,請參閱《AWS CloudShell 使用者指南》中的安裝 AWS CLI 至您的主目錄

  • 已在裝置或 AWS CloudShell 上安裝 kubectl 命令列工具。版本可以與您的叢集 Kubernetes 版本相同,或是為最多比該版本更舊一版或更新一版的次要版本。例如,如果您的叢集版本為 1.29,則可以搭配使用 kubectl 1.281.291.30 版。若要安裝或升級 kubectl,請參閱 設定 kubectl 和 eksctl

  • 包含叢集組態的現有 kubectl config 檔案。若要建立 kubectl config 檔案,請參閱透過建立 kubeconfig 檔案將 kubectl 連線至 EKS 叢集

您可以使用 eksctl 或 AWS 管理主控台 為叢集建立 IAM OIDC 提供商。

建立 OIDC 提供商 (eksctl)

  1. 已在裝置或 AWS CloudShell 上安裝版本 0.214.0 或更新版本的 eksctl 命令列工具。如需有關安裝或更新 eksctl 的指示,請參閱 eksctl 文件中的安裝一節。

  2. 確定叢集的 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
  3. 判斷您的帳戶中是否已經有擁有叢集發行者 ID 的 IAM OIDC 提供商。

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

    如果有輸出傳回,則表示您已經有叢集 IAM OIDC 提供商,且可以略過下一步驟。如果未傳回任何輸出,則您必須為叢集建立 IAM OIDC 提供商。

  4. 使用下列命令為您的叢集建立 IAM OIDC 身分提供者。

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

    如果您已啟用 EKS VPC 端點,則無法從該 VPC 內部存取 EKS OIDC 服務端點。因此,您的作業 (例如在 VPC 利用 eksctl 建立 OIDC 提供商) 將無法運作,並且會導致逾時。以下是範例錯誤訊息:

    ** server cant find oidc.eks.<region-code>.amazonaws.com: NXDOMAIN

    若要完成此步驟,您可在 VPC 外部執行命令,例如在 AWS CloudShell 執行,或在連線至網際網路的電腦執行。或者,您可以在 VPC 中建立水平分割條件式解析程式,例如 Route 53 Resolver,以針對 OIDC 發行者 URL 使用不同的解析程式,而不為其使用 VPC DNS。如需 CoreDNS 中條件式轉送的範例,請參閱 GitHub 上的 Amazon EKS 功能請求

建立 OIDC 提供商 (AWS 主控台)

  1. 開啟 Amazon EKS 主控台

  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 (身分提供者)。如果列出的提供商與您叢集的 URL 相符,則表示您已經擁有叢集提供商。如果沒有列出符合叢集 URL 的提供商,則您必須建立一個。

  6. 若要建立供應商,請選擇 Add provider (新增供應商)。

  7. 對於提供商類型,選取 OpenID Connect

  8. 對於 Provider URL (提供商 URL),輸入叢集的 OIDC 提供商 URL。

  9. 對於 Audience (對象),輸入 sts.amazonaws.com

  10. (選用) 新增任何標籤,例如可識別適用於此提供商的叢集的標籤。

  11. 選擇 Add provider (新增提供者)。

後續步驟:將 IAM 角色指派給 Kubernetes 服務帳戶