

 **이 페이지 개선에 도움 주기** 

이 사용자 가이드에 기여하려면 모든 페이지의 오른쪽 창에 있는 **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` 서비스 연결 역할을 사용하면 2020년 4월 16일 이후에 생성된 클러스터에 [AmazonEKSServicePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKSServicePolicy.html) 정책이 더 이상 필요하지 않습니다.

## 기존 클러스터 역할 확인
<a name="check-service-role"></a>

다음 절차를 사용하여 계정에 이미 Amazon EKS 클러스터 역할이 있는지 확인할 수 있습니다.

1. IAM 콘솔(https://console.aws.amazon.com/iam/)을 엽니다.

1. 왼쪽 탐색 창에서 **역할**을 선택합니다.

1. 역할 목록에서 `eksClusterRole`(을)를 검색합니다. `eksClusterRole`을 포함하는 역할이 존재하지 않을 경우 [Amazon EKS 클러스터 역할 생성](#create-service-role) 섹션을 참조하여 역할을 생성합니다. `eksClusterRole`을 포함하는 역할이 존재하지 않을 경우, 연결된 정책을 볼 역할을 선택합니다.

1. **권한**을 선택합니다.

1. **AmazonEKSClusterPolicy** 관리형 정책이 역할에 연결되었는지 확인합니다. 정책이 연결된 경우 Amazon EKS 클러스터 역할이 적절히 구성된 것입니다.

1. **신뢰 관계**를 선택한 후 **신뢰 정책 편집**을 선택합니다.

1. 신뢰 관계에 다음 정책이 포함되어 있는지 확인합니다. 신뢰 관계가 다음 정책과 일치하는 경우, **취소**를 선택합니다. 신뢰 관계가 일치하지 않으면 정책을 **신뢰 정책 편집** 창에 복사하고 **정책 업데이트**를 선택합니다.

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

## Amazon EKS 클러스터 역할 생성
<a name="create-service-role"></a>

클러스터 역할을 생성하려면 AWS Management Console 또는 AWS CLI를 사용할 수 있습니다.

 AWS Management Console   

1. IAM 콘솔(https://console.aws.amazon.com/iam/)을 엽니다.

1. **역할**을 선택한 다음 **역할 생성**을 선택합니다.

1. **신뢰할 수 있는 엔터티 유형**에서 ** AWS서비스**를 선택합니다.

1. **다른 AWS 서비스의 사용 사례** 드롭다운 목록에서 **EKS**를 선택합니다.

1. 사용 사례에 대한 **EKS - 클러스터(EKS - Cluster)**를 선택한 후 **다음**을 선택합니다.

1. **권한 추가** 탭에서 **다음**을 선택합니다.

1. **역할 이름**에 역할의 고유한 이름(예: `eksClusterRole`)을 입력합니다.

1. **설명**에서 `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
   ```