為什麼我無法為 Amazon EKS 叢集產生 kubeconfig 檔案?

2 分的閱讀內容
0

我嘗試為 Amazon Elastic Kubernetes Service (Amazon EKS) 叢集產生 kubeconfig 檔案時,收到 AccessDeniedException 錯誤。

簡短描述

您必須有權將 eks:DescribeCluster API 動作與叢集搭配使用,以便為 Amazon EKS 叢集產生 kubeconfig 檔案。若要取得許可,請將 AWS Identity and Access Management (IAM) 政策連接至 IAM 使用者。

解決方法

若要將 IAM 政策連接至使用者,請完成下列步驟:

  1. 開啟 IAM 主控台。然後,在導覽窗格中,選擇使用者或角色

  2. 選取要嵌入政策的使用者或角色的名稱。

  3. 許可標籤上,選擇新增內嵌政策

  4. 選擇 JSON 標籤。

  5. 使用文字編輯器將代碼取代為下列 IAM 政策:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "eks:DescribeCluster"
          ],
          "Resource": "*"
        }
      ]
    }
  6. 選擇檢閱政策

  7. 對於名稱,輸入政策名稱。例如:eks_update-kubeconfig

  8. 選擇建立政策
    注意: 如果已對使用 AWS Command Line Interface (AWS CLI) 的 IAM 使用者強制執行多重要素驗證 (MFA),則在完成下一步之前,您必須使用 MFA 進行身分驗證。明確拒絕訊息指示,如果 MFA 為 false,則存在拒絕動作的 IAM 政策:

    {  "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "BlockMostAccessUnlessSignedInWithMFA",
          "Effect": "Deny",
          "NotAction": [
            "iam:CreateVirtualMFADevice",
            "iam:EnableMFADevice",
            "iam:ListMFADevices",
            "iam:ListUsers",
            "iam:ListVirtualMFADevices",
            "iam:ResyncMFADevice",
            "sts:GetSessionToken"
          ],
          "Resource": "*",
          "Condition": {
            "BoolIfExists": {
              "aws:MultiFactorAuthPresent": "false"
            }
          }
        }
      ]
    }

    由於您使用 MFA 裝置,因此必須使用 MFA 字符透過 AWS CLI 對 AWS 資源的存取進行身分驗證。執行如何使用 MFA 字符透過 AWS CLI 對 AWS 資源的存取進行身分驗證?文章中的步驟。然後,執行 sts get-session-token AWS CLI 命令。將 arn-of-the-mfa-device 取代為您的 MFA 裝置的 ARN,將 code-from-token 取代為您的字符代碼:

    $ aws sts get-session-token --serial-number arn-of-the-mfa-device --token-code code-from-token

    您可以將值匯出至環境變數來使用暫時憑證。

    例如:

    $ export AWS_ACCESS_KEY_ID=example-access-key-as-in-previous-output$ export AWS_SECRET_ACCESS_KEY=example-secret-access-key-as-in-previous-output$ export AWS_SESSION_TOKEN=example-session-token-as-in-previous-output
  9. 執行 update-kubeconfig 命令,並確認它更新了 **~/.kube/confi 下的組態檔案。**將 region-code 取代為您的 AWS 區域的代碼,將 cluster_name 取代為您的叢集名稱:

    aws eks --region region-code update-kubeconfig --name cluster_name
AWS 官方
AWS 官方已更新 1 年前