<aside> 💡 EKS가 설치된 상태이어야 함
</aside>
GPU 할당이 되는 것을 확인하기 위해 AMI 타입을 AL2_x86_64_GPU로 선택한다.

tag를 아래와 같이 달아준다. 다음과 같은 태그가 있어야 자동 검색된다.
"k8s.io/cluster-autoscaler/enabled" = "true"
"k8s.io/cluster-autoscaler/<my-cluster>" = "owned"
AWS의 IAM OIDC provider란? (OIDC) 표준을 지원하는 외부 자격 증명 공급자(IdP) 서비스
eksctl utils associate-iam-oidc-provider --region=ap-northeast-2 --cluster=terraform-eks --approve
Policy를 json 파일로 저장한다.
<cluster 이름> 에는 service account를 적용할 cluster 이름을 적는다.
cat <<EOF > cluster-autoscaler-policy.json
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"autoscaling:SetDesiredCapacity",
"autoscaling:TerminateInstanceInAutoScalingGroup"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"aws:ResourceTag/k8s.io/cluster-autoscaler/<cluster 이름>": "owned"
}
}
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": [
"autoscaling:DescribeAutoScalingInstances",
"autoscaling:DescribeAutoScalingGroups",
"ec2:DescribeLaunchTemplateVersions",
"autoscaling:DescribeTags",
"autoscaling:DescribeLaunchConfigurations",
"ec2:DescribeInstanceTypes"
],
"Resource": "*"
}
]
}
EOF
위에서 만든 파일을 통해 policy를 생성한다.
aws iam create-policy \
--policy-name AmazonEKSClusterAutoscalerPolicy \
--policy-document file://cluster-autoscaler-policy.json
IAM Service account란? kubernetes의 service account랑 같은 건데, eks의 리소스들에 대한 권한을 iam role을 통해 지정하기 위한 기능. 쿠버네티스 ServiceAccount와 AWS IAM 역할을 연동하는 것이다.
쿠버네티스와 AWS IAM 사이의 인증 연동은 Open ID Connect(OIDC)를 통해 이루어지는데, 과정은 아래 도식과 같다.