Amazon EKS pod 執行 IAM 角色 - Amazon EKS

Amazon EKS pod 執行 IAM 角色

需要 Amazon EKS pod 執行角色才能在 AWS Fargate 基礎設施上執行 pods。

當您的叢集在 AWS Fargate 基礎設施上建立 pods 時,在 Fargate 基礎設施上執行的元件須代表您呼叫 AWS API。這樣執行個體即可執行如從 Amazon ECR 提取容器映像,或將日誌路由至其他 AWS 服務等動作。Amazon EKS pod 執行角色提供進行此類工作的 IAM 許可。

建立 Fargate 設定檔時,您必須使用設定檔為在 Fargate 基礎設施上執行的 Amazon EKS 元件指定 pod 執行角色。此角色會新增至叢集的 Kubernetes 角色型存取控制 (RBAC),以進行授權。這可讓在 Fargate 基礎設施上執行的 kubelet 向您的 Amazon EKS 叢集註冊,以便它可以在該叢集中作為節點出現。

注意

Fargate 設定檔的 IAM 角色必須與 Amazon EC2 節點群組不同。

重要

在 Fargate pod 中執行的容器,無法採用與 pod 執行角色相關聯的 IAM 許可。若要為 Fargate pod 中的容器提供存取其他 AWS 服務的許可,您必須使用 服務帳戶的 IAM 角色

建立 Fargate 描述檔之前,您必須建立具有 AmazonEKSFargatePodExecutionRolePolicy 的 IAM 角色。

檢查是否有正確設定的現有 pod 執行角色

您可使用以下程序,檢查您的帳戶是否已有正確設定的 Amazon EKS pod 執行角色。為了避免出現混淆代理人安全問題,根據 SourceArn 的角色限制存取是非常重要的一環。您可以視需要修改執行角色,以納入對其他叢集上的 Fargate 描述檔的支援。

若要在 IAM 主控台中檢查 Amazon EKS pod 執行角色

  1. 在以下網址開啟 IAM 主控台:https://console.aws.amazon.com/iam/

  2. 在左側導覽窗格中,選擇 Roles (角色)。

  3. Roles (角色) 頁面上,搜尋 Amazon EKS Fargate Pod Execution Role (Amazon EKS Fargate Pod 執行角色) 的角色清單。如果該角色不存在,請參閱「建立 Amazon EKS pod 執行角色」以建立角色。如果該角色存在,請選取角色。

  4. Amazon EKS Fargate Pod Execution Role (Amazon EKS Fargate Pod 執行角色) 頁面上,執行下列動作:

    1. 選擇 Permissions (許可)。

    2. 確定 AmazonEKSFargatePodExecutionRolePolicy Amazon 受管政策已連接至角色。

    3. 選擇 Trust relationships (信任關係)

    4. 選擇 Edit trust policy (編輯信任政策)。

  5. Edit trust policy (編輯信任政策)頁面上,確認信任關係包含以下政策,並且在叢集上具有 Fargate 描述檔的行。若是如此,請選擇 Cancel (取消)。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:eks:region-code:111122223333:fargateprofile/my-cluster/*" } }, "Principal": { "Service": "eks-fargate-pods.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

    如果政策相符,但沒有指定叢集上的 Fargate 描述檔的行,您可以在 ArnLike 物件頂端新增以下行。使用叢集所在的 AWS 區域 取代 region-code,用帳戶 ID 取代 111122223333,再以您的叢集名稱取代 my-cluster

    "aws:SourceArn": "arn:aws:eks:region-code:111122223333:fargateprofile/my-cluster/*",

    如果政策不相符,請將完整前一個政策複製到表單中,然後選擇 Update policy (更新政策)。使用叢集所在的 AWS 區域 取代 region-code。若要在您的帳戶中的所有 AWS 區域 使用相同角色,用 * 取代 region-code。使用您的帳戶 ID 取代 111122223333,再以您的叢集名稱取代 my-cluster。若要在您的帳戶中的所有叢集使用相同角色,請使用 * 取代 my-cluster

建立 Amazon EKS pod 執行角色

如果您還沒有叢集的 Amazon EKS pod 執行角色,可以使用 AWS Management Console 或 AWS CLI 來建立執行角色。

AWS Management Console

使用 AWS Management Console 建立 AWS Fargate Pod 執行角色

  1. 在以下網址開啟 IAM 主控台:https://console.aws.amazon.com/iam/

  2. 在左側導覽窗格中,選擇 Roles (角色)。

  3. Roles (角色) 頁面上,選擇 Create role (建立角色)。

  4. Select trusted entity (選取信任的實體) 頁面上,執行以下作業:

    1. Trusted entity type (信任的實體類型) 區段中,選擇 AWS service ( 服務)。

    2. Use cases for other AWS 服務 (其他 AWS 服務 的使用案例) 下拉式清單中,選擇 EKS

    3. 選擇 EKS - Fargate pod

    4. 選擇 Next (下一步)。

  5. Add permissions (新增許可) 頁面上,選擇 Next (下一步)。

  6. Name, review, and create (命名、檢閱和建立) 頁面上,執行以下作業:

    1. 針對 Role name (角色名稱),為您的角色輸入唯一名稱 (例如 AmazonEKSFargatePodExecutionRole)。

    2. 藉由連接標籤做為鍵值對,在 Add tags (Optional) (新增標籤 (選用)) 下將中繼資料新增至角色。如需有關在 IAM 中使用標籤的詳細資訊,請參閱《IAM 使用者指南》中的標記 IAM 實體

    3. 選擇 Create Role (建立角色)。

  7. Roles (角色) 頁面上,搜尋 Amazon EKS Fargate Pod Execution Role (Amazon EKS Fargate Pod 執行角色) 的角色清單。選擇角色。

  8. Amazon EKS Fargate Pod Execution Role (Amazon EKS Fargate Pod 執行角色) 頁面上,執行下列動作:

    1. 選擇 Trust relationships (信任關係)

    2. 選擇 Edit trust policy (編輯信任政策)。

  9. Edit trust policy (編輯信任政策) 頁面上,執行下列動作:

    1. 請複製以下內容,並在 Edit trust policy (編輯信任政策) 表單貼上。使用叢集所在的 AWS 區域 取代 region-code。若要在您的帳戶中的所有 AWS 區域 使用相同角色,用 * 取代 region-code。使用您的帳戶 ID 取代 111122223333,再以您的叢集名稱取代 my-cluster。若要在您的帳戶中的所有叢集使用相同角色,請使用 * 取代 my-cluster

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:eks:region-code:111122223333:fargateprofile/my-cluster/*" } }, "Principal": { "Service": "eks-fargate-pods.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
    2. 選擇 Update policy (更新政策)

AWS CLI

使用 AWS CLI 建立 AWS Fargate Pod 執行角色

  1. 複製以下內容並在名為 pod-execution-role-trust-policy.json 的檔案貼上。使用叢集所在的 AWS 區域 取代 region-code。若要在您的帳戶中的所有 AWS 區域 使用相同角色,用 * 取代 region-code。使用您的帳戶 ID 取代 111122223333,再以您的叢集名稱取代 my-cluster。若要在您的帳戶中的所有叢集使用相同角色,請使用 * 取代 my-cluster

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:eks:region-code:111122223333:fargateprofile/my-cluster/*" } }, "Principal": { "Service": "eks-fargate-pods.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  2. 建立 pod 執行 IAM 角色。

    aws iam create-role \ --role-name AmazonEKSFargatePodExecutionRole \ --assume-role-policy-document file://"pod-execution-role-trust-policy.json"
  3. 將必要的 Amazon EKS 受管 IAM 政策連接到角色。

    aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AmazonEKSFargatePodExecutionRolePolicy \ --role-name AmazonEKSFargatePodExecutionRole