

 **協助改進此頁面** 

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

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

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# Amazon EKS 叢集 IAM 角色
<a name="cluster-iam-role"></a>

每個叢集都需要一個 Amazon EKS 叢集 IAM 角色。受 Amazon EKS 管理的 Kubernetes 叢集使用此角色來管理節點，而[舊式雲端供應商](https://kubernetes-sigs.github.io/aws-load-balancer-controller/latest/guide/service/annotations/#legacy-cloud-provider)則使用此角色為服務建立具有 Elastic Load Balancing 的負載平衡器。

建立 Amazon EKS 叢集之前，您必須先建立具有以下任一 IAM 政策的 IAM 角色：
+  [AmazonEKSClusterPolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKSClusterPolicy.html) 
+ 自訂 IAM 政策。以下是 Kubernetes 叢集可管理節點的最低許可，但無法讓[舊式雲端供應商](https://kubernetes-sigs.github.io/aws-load-balancer-controller/latest/guide/service/annotations/#legacy-cloud-provider)建立具有 Elastic Load Balancing 的負載平衡器。您的自訂 IAM 政策必須至少擁有下列許可：

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "ec2:CreateTags"
        ],
        "Resource": "arn:aws:ec2:*:*:instance/*",
        "Condition": {
          "ForAnyValue:StringLike": {
            "aws:TagKeys": "kubernetes.io/cluster/*"
          }
        }
      },
      {
        "Effect": "Allow",
        "Action": [
          "ec2:DescribeInstances",
          "ec2:DescribeNetworkInterfaces",
          "ec2:DescribeVpcs",
          "ec2:DescribeDhcpOptions",
          "ec2:DescribeAvailabilityZones",
          "ec2:DescribeInstanceTopology",
          "kms:DescribeKey"
        ],
        "Resource": "*"
      }
    ]
  }
  ```

**注意**  
在 2023 年 10 月 3 日之前，每個叢集的 IAM 角色都必須使用 [AmazonEKSClusterPolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKSClusterPolicy.html)。  
在 2020 年 4 月 16 日之前，也必須使用 [AmazonEKSServicePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKSServicePolicy.html) 和 [AmazonEKSClusterPolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKSClusterPolicy.html)，且角色的建議名稱為 `eksServiceRole`。使用 `AWSServiceRoleForAmazonEKS` 服務連結角色時，[AmazonEKSServicePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKSServicePolicy.html) 政策不再需要針對 2020 年 4 月 16 日或之後建立的叢集。

## 檢查現有的叢集角色
<a name="check-service-role"></a>

您可使用以下程序，檢查您的帳戶是否已有 Amazon EKS 叢集角色。

1. 前往 https://console.aws.amazon.com/iam/ 開啟 IAM 主控台。

1. 在左側導覽窗格中，選擇 **Roles** (角色)。

1. 搜尋 `eksClusterRole` 的角色清單。如果包含 `eksClusterRole` 的角色不存在，請參閱 [建立 Amazon EKS 叢集角色](#create-service-role) 以建立角色。如果包含 `eksClusterRole` 的角色存在，請選取角色以檢視連接的政策。

1. 選擇**許可**。

1. 確定 **AmazonEKSClusterPolicy** 受管政策已附加到該角色。如果已連接政策，則您的 Amazon EKS 叢集角色應已設定妥當。

1. 選擇 **Trust Relationships** (信任關係)，然後選擇 **Edit trust policy** (編輯信任政策)。

1. 確認信任關係包含下列政策。如果信任關係符合下列政策，請選擇 **Cancel** (取消)。如果信任關係不符合，請將政策複製到**編輯信任政策**視窗中，然後選擇**更新政策**。

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "eks.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

## 建立 Amazon EKS 叢集角色
<a name="create-service-role"></a>

您可以使用 AWS 管理主控台 或 AWS CLI 來建立叢集角色。

 AWS 管理主控台   

1. 前往 https://console.aws.amazon.com/iam/ 開啟 IAM 主控台。

1. 選擇 **Roles (角色)**，然後選擇 **Create role (建立角色)**。

1. 在**信任的實體類型**下，選取** AWS 服務**。

1. 從** AWS 其他服務的使用案例**下拉式清單中，選擇 **EKS**。

1. 針對您的使用案例選擇 **EKS - Cluster** (EKS - 叢集)，然後選擇 **Next** (下一步)。

1. 在 **Add permissions** (新增許可) 標籤上，選擇 **Next** (下一步)。

1. 針對 **Role name** (角色名稱)，為您的角色輸入唯一名稱 (例如 `eksClusterRole`)。

1. 針對 **Description** (描述)，輸入描述性文字，如 `Amazon EKS - Cluster role`。

1. 選擇建**立角色**。

 AWS CLI  

1. 將下列內容複製到名為 {{cluster-trust-policy.json}} 的檔案。

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "eks.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

1. 建立角色。您可以將 {{eksClusterRole}} 取代為您選擇的任何名稱。

   ```
   aws iam create-role \
     --role-name eksClusterRole \
     --assume-role-policy-document file://"cluster-trust-policy.json"
   ```

1. 將所需的 IAM 政策連接至角色。

   ```
   aws iam attach-role-policy \
     --policy-arn arn:aws: iam::aws:policy/AmazonEKSClusterPolicy \
     --role-name eksClusterRole
   ```