EKS Cluster는 Cluster를 생성한 IAM User나 Role만이 액세스 할 수 있습니다. 다른 IAM User나 Role이 접근하면 다음과 같이 에러가 발생하게 됩니다.
그러나 매번 IAM User한테서 Access Key를 발급하여 적용하는 것은 매우 귀찮은 일입니다. 그리고 EC2에 부착된 IAM Role을 사용하는 것이 보안적으로 더 나은 선택일 것입니다. 오늘은 EC2에 부착된 IAM Role로 EKS Cluster에 액세스 할 수 있도록 변경해봅시다.
Node Group이 생성된 환경에서 시작해야 합니다. 또한, 처음 한 번은 EKS Cluster을 생성한 User의 Access Key가 적용되어야 합니다.
https://velog.io/@arcokim/AWS-EKS-Node-Group
과정은 매우 간단합니다. 먼저, aws-auth라는 configmap 수정 화면으로 접속합니다. 참고로, aws-auth는 IAM의 Role, User, 또는 Group을 EKS 클러스터 내부의 RBAC에서 사용할 수 있는 Group으로 mapping 해주는 역할을 합니다.
참고 글 : https://channel.io/ko/blog/tech-aws-cross-accounts-irsa
kubectl edit configmap -n kube-system aws-auth
다음과 같은 화면이 나오면 mapRoles에 다음과 같은 내용을 추가합니다.
mapRoles: |
- rolearn: arn:aws:iam::(Account_ID):role/(IAM_Role_Name)
username: admin
groups:
- system:masters
IAM Role에 system:masters 를 부여하면 Kubernetes API 서버에 대해 무제한 액세스를 허용할 수 있습니다. 이제 저장을 하고 나와 EKS Cluster를 생성한 User의 Access Key 정보를 삭제하겠습니다.
rm ~/.aws/credentials
이제 EC2에 부착된 IAM Role을 사용하여도 EKS Cluster에 액세스 할 수 있습니다.
오늘의 글은 여기까지입니다. 감사합니다!
이해가 안가네요..어떻게 aws configure 설정도 없이 aws-auth에 롤만 추가했다고해서 aws sts get-caller-identity값이 출력이 되나요??? 꼭 답변 부탁드려요 odark@naver.com