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 클러스터 역할이 이미 있는지 확인하려면 다음 절차를 사용할 수 있어요.
- https://console.aws.amazon.com/iam/ 에서 IAM 콘솔을 엽니다.
- 왼쪽 탐색 창에서 Roles를 선택합니다.
- 역할 목록에서
eksClusterRole을 검색합니다.eksClusterRole이 포함된 역할이 없으면 Amazon EKS 클러스터 역할 생성을 참고해 역할을 만듭니다.eksClusterRole이 포함된 역할이 있으면 그 역할을 선택해 연결된 정책을 봅니다. - Permissions를 선택합니다.
AmazonEKSClusterPolicy관리형 정책이 역할에 연결되어 있는지 확인합니다. 정책이 연결되어 있다면 Amazon EKS 클러스터 역할이 올바르게 구성된 것입니다.- Trust relationships를 선택한 다음 Edit trust policy를 선택합니다.
- 신뢰 관계에 다음 정책이 포함되어 있는지 확인합니다. 신뢰 관계가 다음 정책과 일치하면 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
- https://console.aws.amazon.com/iam/ 에서 IAM 콘솔을 엽니다.
- Roles를 선택한 다음 Create role을 선택합니다.
- Trusted entity type에서 AWS service를 선택합니다.
- Use cases for other AWS services 드롭다운 목록에서 EKS를 선택합니다.
- 사용 사례로 EKS - Cluster를 선택한 다음 Next를 선택합니다.
- Add permissions 탭에서 Next를 선택합니다.
- Role name에
eksClusterRole같은 역할의 고유한 이름을 입력합니다. - Description에
Amazon EKS - Cluster role같은 설명 텍스트를 입력합니다. - Create role을 선택합니다.
AWS CLI
- 다음 내용을
cluster-trust-policy.json파일에 복사합니다.
{
"Version":"2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "eks.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
- 역할을 만듭니다.
eksClusterRole은 원하는 이름으로 바꿀 수 있어요.
aws iam create-role \
--role-name eksClusterRole \
--assume-role-policy-document file://"cluster-trust-policy.json"
- 필요한 IAM 정책을 역할에 연결합니다.
aws iam attach-role-policy \
--policy-arn arn:aws:iam::aws:policy/AmazonEKSClusterPolicy \
--role-name eksClusterRole