Amazon EKS 클러스터 IAM 역할

Amazon EKS 클러스터 IAM 역할 (Cluster IAM role)

각 클러스터에는 Amazon EKS 클러스터 IAM 역할이 필요해요. Amazon EKS가 관리하는 Kubernetes 클러스터는 이 역할을 사용해 노드를 관리하고, 레거시 Cloud Provider는 이 역할을 사용해 Elastic Load Balancing으로 서비스용 로드 밸런서를 만들어요.

Amazon EKS 클러스터를 만들기 전에 다음 IAM 정책 중 하나로 IAM 역할을 만들어야 해요.

  • AmazonEKSClusterPolicy

또는

  • 사용자 지정 IAM 정책. 다음 최소 권한은 Kubernetes 클러스터가 노드를 관리할 수 있게 해주지만, 레거시 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가 필요했어요.

2020년 4월 16일 이전에는 AmazonEKSServicePolicy와 AmazonEKSClusterPolicy가 모두 필요했으며 권장 역할 이름은 eksServiceRole이었어요. AWSServiceRoleForAmazonEKS 서비스 연결 역할 덕분에 2020년 4월 16일 이후에 생성된 클러스터에는 AmazonEKSServicePolicy 정책이 더 이상 필요하지 않아요.

출처: 문서

본문

기존 클러스터 역할 확인하기

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

  1. https://console.aws.amazon.com/iam/ 에서 IAM 콘솔을 엽니다.
  2. 왼쪽 탐색 창에서 Roles를 선택합니다.
  3. 역할 목록에서 eksClusterRole을 검색합니다. eksClusterRole이 포함된 역할이 없으면 Amazon EKS 클러스터 역할 생성을 참고해 역할을 만듭니다. eksClusterRole이 포함된 역할이 있으면 그 역할을 선택해 연결된 정책을 봅니다.
  4. Permissions를 선택합니다.
  5. AmazonEKSClusterPolicy 관리형 정책이 역할에 연결되어 있는지 확인합니다. 정책이 연결되어 있다면 Amazon EKS 클러스터 역할이 올바르게 구성된 것입니다.
  6. Trust relationships를 선택한 다음 Edit trust policy를 선택합니다.
  7. 신뢰 관계에 다음 정책이 포함되어 있는지 확인합니다. 신뢰 관계가 다음 정책과 일치하면 Cancel을 선택합니다. 일치하지 않으면 정책을 Edit trust policy 창에 복사하고 Update policy를 선택합니다.
{
  "Version":"2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "eks.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

Amazon EKS 클러스터 역할 생성

클러스터 역할은 AWS Management Console이나 AWS CLI로 만들 수 있어요.

AWS Management Console

  1. https://console.aws.amazon.com/iam/ 에서 IAM 콘솔을 엽니다.
  2. Roles를 선택한 다음 Create role을 선택합니다.
  3. Trusted entity type에서 AWS service를 선택합니다.
  4. Use cases for other AWS services 드롭다운 목록에서 EKS를 선택합니다.
  5. 사용 사례로 EKS - Cluster를 선택한 다음 Next를 선택합니다.
  6. Add permissions 탭에서 Next를 선택합니다.
  7. Role name에 eksClusterRole 같은 역할의 고유한 이름을 입력합니다.
  8. Description에 Amazon EKS - Cluster role 같은 설명 텍스트를 입력합니다.
  9. Create role을 선택합니다.

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

더 알아보기 (Learn more)