기존 aws-auth ConfigMap 항목을 access entries로 마이그레이션하기
기존 aws-auth ConfigMap 항목을 access entries로 마이그레이션하기
클러스터의 aws-auth ConfigMap에 추가한 항목에 대해 access entries를 만들어 마이그레이션하는 방법을 알아봐요.
출처: 문서
본문
클러스터의 aws-auth ConfigMap에 항목을 추가했다면 aws-auth ConfigMap의 기존 항목에 대해 access entries를 만들 것을 권장합니다. access entries를 만든 후 ConfigMap에서 항목을 제거할 수 있어요. aws-auth ConfigMap의 항목에는 access policies를 연결할 수 없어요. IAM 주체에 access policies를 연결하려면 access entries를 만들어 주세요.
중요: 클러스터가
API_AND_CONFIGMAP인증 모드에 있고 같은 IAM 역할에 대해aws-authConfigMap과 access entries 모두에 매핑이 있다면, 그 역할은 인증에 access entry의 매핑을 사용해요. 같은 IAM 주체에 대해 access entries가ConfigMap항목보다 우선합니다.관리형 노드 그룹이나 Fargate 프로파일을 위해 Amazon EKS가 만든 기존
aws-authConfigMap항목을 제거하기 전에, 그러한 특정 리소스에 대한 올바른 access entries가 클러스터에 존재하는지 다시 확인해 주세요. Amazon EKS가 만든ConfigMap항목을 이에 해당하는 access entries 없이 제거하면 클러스터가 제대로 작동하지 않아요.
사전 조건 (Prerequisites)
- access entries와 access policies에 대한 이해. 자세한 내용은 Grant IAM users access to Kubernetes with EKS access entries 및 Associate access policies with access entries 참고.
- 플랫폼 버전이 Grant IAM users access to Kubernetes with EKS access entries 토픽의 사전 조건에 나열된 버전 이상인 기존 클러스터.
- 기기 또는 AWS CloudShell에 설치된
eksctl명령줄 도구 버전0.215.0이상.eksctl설치 또는 업데이트는eksctl문서의 Installation 참고. kube-system네임스페이스에서aws-authConfigMap을 수정할 Kubernetes 권한.- 다음 권한이 있는 AWS Identity and Access Management 역할 또는 사용자:
CreateAccessEntry및ListAccessEntries. 자세한 내용은 Service Authorization Reference의 Actions defined by Amazon Elastic Kubernetes Service 참고.
eksctl (using eksctl)
aws-authConfigMap의 기존 항목을 봅니다.my-cluster를 클러스터 이름으로 바꿉니다.
eksctl get iamidentitymapping --cluster my-cluster
예시 출력:
ARN USERNAME GROUPS ACCOUNT
arn:aws:iam::111122223333:role/EKS-my-cluster-Admins Admins system:masters
arn:aws:iam::111122223333:role/EKS-my-cluster-my-namespace-Viewers my-namespace-Viewers Viewers
arn:aws:iam::111122223333:role/EKS-my-cluster-self-managed-ng-1 system:node:{{EC2PrivateDNSName}} system:bootstrappers,system:nodes
arn:aws:iam::111122223333:user/my-user my-user
arn:aws:iam::111122223333:role/EKS-my-cluster-fargateprofile1 system:node:{{SessionName}} system:bootstrappers,system:nodes,system:node-proxier
arn:aws:iam::111122223333:role/EKS-my-cluster-managed-ng system:node:{{EC2PrivateDNSName}} system:bootstrappers,system:nodes
- 이전 출력에 반환된 직접 만든
ConfigMap항목에 대해 access entries를 만듭니다. access entries를 만들 때 출력에 반환된ARN,USERNAME,GROUPS,ACCOUNT와 같은 값을 지정해 주세요. 예시 출력에서 Fargate 프로파일과 관리형 노드 그룹에 대해 Amazon EKS가 만든 마지막 두 항목을 제외한 모든 항목에 access entries를 만들게 돼요. - 만든 access entries에 대해
ConfigMap에서 항목을 삭제합니다.ConfigMap에서 항목을 삭제하지 않으면 IAM 주체 ARN에 대한 access entry의 설정이ConfigMap항목보다 우선해요.111122223333을 AWS 계정 ID로,EKS-my-cluster-my-namespace-Viewers를ConfigMap의 항목에 있는 역할 이름으로 바꿉니다. 제거하는 항목이 IAM 역할이 아닌 IAM 사용자라면role을user로,EKS-my-cluster-my-namespace-Viewers를 사용자 이름으로 바꿉니다.
eksctl delete iamidentitymapping --arn arn:aws:iam::111122223333:role/EKS-my-cluster-my-namespace-Viewers --cluster my-cluster