내용으로 건너뛰기

Amazon EKS 클러스터의 액세스 문제를 해결하려면 어떻게 해야 합니까?

3분 분량
0

Amazon Elastic Kubernetes Service(Amazon EKS) 클러스터에 대한 액세스 권한을 부여하려고 할 때 문제가 발생합니다.

해결 방법

참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생하면 AWS CLI의 오류 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.

AWS Identity and Access Management(IAM) 사용자 및 역할에 Kubernetes API에 대한 액세스 권한을 부여하려면 Amazon EKS 액세스 항목을 사용하십시오.

IAM 보안 주체 권한 구성

IAM 보안 주체에는 클러스터에 대해 다음과 같은 권한이 있어야 합니다.

  • CreateAccessEntry
  • ListAccessEntries
  • DescribeAccessEntry
  • DeleteAccessEntry
  • 액세스 항목 업데이트
  • ListAccessPolicies
  • AssociateAccessPolicy
  • DisassociateAccessPolicy

Amazon EKS 권한에 대한 자세한 내용은 Amazon Elastic Kubernetes Service에서 정의한 작업을 참조하십시오.

액세스 정책 권한 구성

액세스 정책은 사용자가 Kubernetes API에 액세스할 수 있도록 허용하는 액세스 수준을 설정합니다. 다음 정책을 사용하여 액세스 항목을 생성하십시오.

위 정책을 사용하여 액세스 항목을 생성하는 경우 Kubernetes 클러스터 수준 권한의 네임스페이스에 대한 액세스 권한을 부여합니다.

참고: 액세스 정책의 내용은 수정할 수 없으며 사용자가 고유한 액세스 정책을 생성할 수도 없습니다.

Amazon EKS 클러스터에 대한 IAM 사용자 액세스 권한 부여

인증 모드 변경

중요: 액세스 항목 방법을 활성화한 후에는 다시 끌 수 없습니다.

액세스 항목을 사용하려면 Amazon EKS 클러스터의 인증 모드를 API 또는 API_AND_CONFIG_MAP로 업데이트하십시오. 다음 update-cluster-config AWS CLI 명령을 실행합니다.

aws eks update-cluster-config \
   --name my-cluster \
   --access-config authenticationMode=API_AND_CONFIG_MAP

참고: my-cluster를 사용자의 클러스터 이름으로 바꾸십시오. ConfigMap 메서드를 영구적으로 비활성화하려면 API_AND_CONFIG_MAPAPI로 바꾸십시오.

IAM 엔터티에 대한 액세스 항목을 생성하고 액세스 정책 연결

클러스터 관리자에게 Amazon EKS 클러스터에 대한 액세스 권한을 제공합니다. 먼저 다음 create-access-entry 명령을 실행하여 IAM 사용자 또는 역할에 대한 액세스 항목을 생성합니다.

aws eks create-access-entry --cluster-name my-cluster \
  --principal-arn arn:aws:iam::111122223333:user/example-user

참고: my-cluster를 클러스터 이름으로 바꾸고 arn:aws:iam::111122223333:user/example-user를 IAM 역할 또는 사용자의 ARN으로 바꾸십시오.

다음 associate-access-policy 명령을 실행하여 AmazonEKSClusterAdminPolicy를 IAM 사용자 또는 역할에 연결합니다.

aws eks associate-access-policy --cluster-name my-cluster\
  --principal-arn arn:aws:iam::111122223333:user/example-user \
  --policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy \
  --access-scope type=cluster

참고: my-cluster를 클러스터 이름으로 바꾸고 arn:aws:iam::111122223333:user/example-user를 IAM 역할 또는 사용자의 ARN으로 바꾸십시오.

IAM 사용자 또는 역할에 특정 네임스페이스에 대한 관리자 액세스 권한을 제공하려면 다음 associate-access-policy 명령을 실행합니다.

aws eks associate-access-policy --cluster-name my-cluster\
  --principal-arn arn:aws:iam::111122223333:role/example-role \
  --policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSAdminPolicy \
  --access-scope type=namespace,namespaces=test*

참고: my-cluster를 클러스터 이름으로 바꾸고 arn:aws:iam::111122223333:role/example-role을 IAM 역할 또는 사용자의 ARN으로 바꾸십시오. 또한 test를 네임스페이스 이름으로 바꾸십시오.

Kubernetes 역할 기반 액세스 제어(RBAC)에서 액세스 항목을 사용하려면 다음 create-access-entry 명령을 실행합니다.

aws eks create-access-entry --cluster-name my-cluster \
  --principal-arn arn:aws:iam::111122223333:role/example-role-2 \
  --kubernetes-groups viewers

참고: my-cluster를 클러스터 이름으로 바꾸고 arn:aws:iam::111122223333:user/example-role-2를 IAM 역할 또는 사용자의 ARN으로 바꾸십시오. viewers를 클러스터의 Kubernetes RoleBinding 또는 ClusterRoleBinding 객체에 지정된 그룹 이름으로 바꾸십시오.

IAM 엔터티 자격 증명 확인

AWS CLI에서 사용 중인 IAM 사용자 또는 역할 자격 증명을 확인하려면 다음 get-caller-identity 명령을 실행합니다.

aws sts get-caller-identity

명령 출력은 액세스 항목을 생성한 IAM 사용자 또는 역할을 반환해야 합니다. 다른 IAM 역할 또는 사용자를 수신한 경우 역할 또는 사용자의 자격 증명을 올바르게 구성했는지 확인하십시오.

IAM 엔터티에 대한 Kubeconfig 생성

IAM 역할 또는 사용자에 대한 Kubeconfig를 생성하려면 다음 update-kubeconfig 명령을 실행합니다.

aws eks update-kubeconfig --name my-cluster --region aws-region

참고: my-cluster를 클러스터 이름으로 바꾸고 aws-region을 AWS 리전으로 바꾸십시오.

Kubernetes 액세스 확인

IAM 엔터티가 인증되었고 Amazon EKS 클러스터 리소스에 액세스할 수 있는지 확인하십시오.

모든 네임스페이스에서 포드를 생성할 수 있는지 확인하려면 다음 명령을 실행합니다.

kubectl auth can-i create pods --all-namespaces

특정 네임스페이스의 배포를 나열할 수 있는지 확인하려면 다음 명령을 실행합니다.

kubectl auth can-i list deployments.apps -n test

참고: test를 네임스페이스의 이름으로 바꾸십시오.

AWS 공식업데이트됨 일 년 전