본문으로 건너뛰기

aws-auth 아이덴티티 매핑에서 마이그레이션

이미 Amazon EKS를 사용하고 있는 고객은 클러스터에 대한 IAM 주체 액세스를 관리하기 위한 aws-auth ConfigMap 메커니즘에 익숙할 수 있습니다. 이 섹션에서는 이 기존 메커니즘에서 클러스터 액세스 항목을 사용하는 방식으로 항목을 마이그레이션하는 방법을 보여줍니다.

EKS 관리자 권한을 가진 그룹에 사용되는 IAM role eks-workshop-admins가 EKS 클러스터에 미리 구성되어 있습니다. aws-auth ConfigMap을 확인해 보겠습니다:

~$kubectl --context default get -n kube-system cm aws-auth -o yaml
apiVersion: v1
data:
  mapRoles: |
    - groups:
      - system:bootstrappers
      - system:nodes
      rolearn: arn:aws:iam::1234567890:role/eksctl-eks-workshop-nodegroup-defa-NodeInstanceRole-acgt4WAVfXAA
      username: system:node:{{EC2PrivateDNSName}}
    - groups:
      - system:masters
      rolearn: arn:aws:iam::1234567890:role/eks-workshop-admins
      username: cluster-admin
  mapUsers: |
    []
kind: ConfigMap
metadata:
  creationTimestamp: "2024-05-09T15:21:57Z"
  name: aws-auth
  namespace: kube-system
  resourceVersion: "5186190"
  uid: 2a1f9dc7-e32d-44e5-93b3-e5cf7790d95e

이 IAM role을 가장하여 액세스 권한을 확인해 보겠습니다:

~$aws eks update-kubeconfig --name $EKS_CLUSTER_NAME \
--role-arn $ADMINS_IAM_ROLE --alias admins --user-alias admins

예를 들어 모든 Pod를 나열할 수 있어야 합니다:

~$kubectl --context admins get pod -n carts
NAME                            READY   STATUS    RESTARTS   AGE
carts-6d4478747c-vvzhm          1/1     Running   0          5m54s
carts-dynamodb-d9f9f48b-k5v99   1/1     Running   0          15d

이제 이 IAM role에 대한 aws-auth ConfigMap 항목을 삭제해 보겠습니다. 편의를 위해 eksctl을 사용하겠습니다:

~$eksctl delete iamidentitymapping --cluster $EKS_CLUSTER_NAME --arn $ADMINS_IAM_ROLE

이전과 동일한 명령을 시도하면 이제 액세스가 거부됩니다:

~$kubectl --context admins get pod -n carts
error: You must be logged in to the server (Unauthorized)

클러스터 관리자가 다시 클러스터에 액세스할 수 있도록 액세스 항목을 추가해 보겠습니다:

~$aws eks create-access-entry --cluster-name $EKS_CLUSTER_NAME \
--principal-arn $ADMINS_IAM_ROLE

다음으로, AmazonEKSClusterAdminPolicy 정책을 사용하여 이 주체에 대한 액세스 정책을 연결하겠습니다:

~$aws eks associate-access-policy --cluster-name $EKS_CLUSTER_NAME \
--principal-arn $ADMINS_IAM_ROLE \
--policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy \
--access-scope type=cluster

이제 액세스가 다시 작동하는지 테스트할 수 있습니다:

~$kubectl --context admins get pod -n carts
NAME                            READY   STATUS    RESTARTS   AGE
carts-6d4478747c-vvzhm          1/1     Running   0          5m54s
carts-dynamodb-d9f9f48b-k5v99   1/1     Running   0          15d

이러한 단계를 따라 aws-auth ConfigMap에서 더 새로운 Cluster Access Management API를 사용하는 방식으로 IAM role을 성공적으로 마이그레이션했습니다. 이는 Amazon EKS 클러스터에 대한 액세스를 관리하는 보다 간소화된 방법을 제공합니다.