기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon EMR on EKS에 대한 클러스터 액세스 활성화
다음 섹션에서는 클러스터 액세스를 활성화하는 몇 가지 방법을 보여줍니다. 첫 번째에서는 Amazon EKS 클러스터 액세스 관리(CAM)를 사용하며, 두 번째에서는 클러스터 액세스를 활성화하기 위한 수동 단계를 수행하는 방법을 보여줍니다.
EKS 액세스 항목을 사용하여 클러스터 액세스 활성화(권장)
참고
aws-auth
ConfigMap은 더 이상 사용되지 않습니다. Kubernetes API에 대한 액세스를 관리하는 데 권장되는 방법은 액세스 항목입니다.
Amazon EMR은 Amazon EKS 클러스터 액세스 관리(CAM)와 통합되어 있으므로, 필요한 AuthN 및 AuthZ 정책의 구성을 자동화하여 Amazon EKS 클러스터의 네임스페이스에서 Amazon EMR Spark 작업을 실행할 수 있습니다. Amazon EKS 클러스터 네임스페이스에서 가상 클러스터를 생성하는 경우 Amazon EMR은 필요한 모든 권한을 자동으로 구성하므로 현재 워크플로에 단계를 추가하지 않아도 됩니다.
참고
Amazon EKS CAM과 Amazon EMR의 통합은 새로운 Amazon EMR on EKS 가상 클러스터에 대해서만 지원됩니다. 이 통합을 사용하기 위해 기존 가상 클러스터를 마이그레이션할 수 없습니다.
사전 조건
-
AWS CLI의 버전 2.15.3 이상을 실행 중인지 확인합니다.
-
Amazon EKS 클러스터는 버전 1.23 이상에 있어야 합니다.
설정
Amazon EKS에서 AccessEntry API 작업과 Amazon EMR 간 통합을 설정하려면 다음 항목을 완료해야 합니다.
-
Amazon EKS 클러스터의
authenticationMode
가API_AND_CONFIG_MAP
으로 설정되어 있는지 확인합니다.aws eks describe-cluster --name
<eks-cluster-name>
아직 아닌 경우
authenticationMode
를API_AND_CONFIG_MAP
으로 설정합니다.aws eks update-cluster-config --name
<eks-cluster-name>
--access-config authenticationMode=API_AND_CONFIG_MAP인증 모드에 대한 자세한 내용은 클러스터 인증 모드 섹션을 참조하세요.
-
CreateVirtualCluster
및DeleteVirtualCluster
API 작업을 실행하는 데 사용하는 IAM 역할에 다음 권한도 있는지 확인합니다.{ "Effect": "Allow", "Action": [ "eks:CreateAccessEntry" ], "Resource": "arn:
<AWS_PARTITION>
:eks:<AWS_REGION>
:<AWS_ACCOUNT_ID>
:cluster/<EKS_CLUSTER_NAME>
" }, { "Effect": "Allow", "Action": [ "eks:DescribeAccessEntry", "eks:DeleteAccessEntry", "eks:ListAssociatedAccessPolicies", "eks:AssociateAccessPolicy", "eks:DisassociateAccessPolicy" ], "Resource": "arn:<AWS_PARTITION>
:eks:<AWS_REGION>:<AWS_ACCOUNT_ID>:access-entry/<EKS_CLUSTER_NAME>/role/<AWS_ACCOUNT_ID>/AWSServiceRoleForAmazonEMRContainers/*" }
개념 및 용어
다음은 Amazon EKS CAM과 관련된 용어 및 개념 목록입니다.
-
가상 클러스터(VC) - Amazon EKS에서 생성된 네임스페이스의 논리적 표현. Amazon EKS 클러스터 네임스페이스에 대한 1:1 링크입니다. 이를 사용하여 지정된 네임스페이스 내 Amazon EKS 클러스터에서 Amazon EMR 워크로드를 실행할 수 있습니다.
-
네임스페이스 - 단일 EKS 클러스터 내에서 리소스 그룹을 격리하는 메커니즘.
-
액세스 정책 - EKS 클러스터 내의 IAM 역할에 액세스 및 작업을 부여하는 권한.
-
액세스 항목 - 역할 ARN으로 생성된 항목. 액세스 항목을 액세스 정책에 연결하여 Amazon EKS 클러스터에서 특정 권한을 할당할 수 있습니다.
-
EKS 액세스 항목 통합 가상 클러스터 - Amazon EKS의 액세스 항목 API 작업을 사용하여 생성된 가상 클러스터.
aws-auth
를 사용하여 클러스터 액세스 활성화
Kubernetes 역할을 생성하고, 이 역할을 Kubernetes 사용자에게 바인딩하며, Kubernetes 사용자를 서비스 연결 역할 AWSServiceRoleForAmazonEMRContainers
에 매핑하는 등의 작업을 수행함으로써 Amazon EMR on EKS에서 클러스터의 특정 네임스페이스에 액세스할 수 있도록 허용해야 합니다. emr-containers
에서 IAM ID 매핑 명령을 서비스 이름으로 사용하면 이러한 작업이 eksctl
에서 자동화됩니다. 다음 명령을 사용하여 이러한 작업을 쉽게 수행할 수 있습니다.
eksctl create iamidentitymapping \ --cluster
my_eks_cluster
\ --namespacekubernetes_namespace
\ --service-name "emr-containers"
my_eks_cluster
를 Amazon EKS 클러스터 이름으로, kubernetes_namespace
를 Amazon EMR 워크로드 실행을 위해 생성한 Kubernetes 네임스페이스로 바꿉니다.
중요
이 기능을 사용하려면 이전 단계(kubectl 및 eksctl 설정)를 사용하여 최신 eksctl을 다운로드해야 합니다.
Amazon EMR on EKS에서 클러스터 액세스를 활성화하는 수동 단계
다음 수동 단계를 사용하여 Amazon EMR on EKS에 대한 클러스터 액세스를 활성화할 수도 있습니다.
-
특정 네임스페이스에서 Kubernetes 역할 생성
-
네임스페이스로 범위가 지정된 Kubernetes 역할 바인딩 생성
다음 명령을 실행하여 지정된 네임스페이스에서 Kubernetes 역할 바인딩을 생성합니다. 이 역할 바인딩은 이전 단계에서 생성한 역할에 정의된 권한을
emr-containers
사용자에게 부여합니다. 이 사용자는 Amazon EMR on EKS에 대한 서비스 연결 역할을 식별하고, 이를 통해 Amazon EMR on EKS에서 사용자가 생성한 역할로 정의된 작업을 수행할 수 있습니다.namespace=
my-namespace
cat - <<EOF | kubectl apply -f - --namespace "${namespace}" apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: emr-containers namespace: ${namespace} subjects: - kind: User name: emr-containers apiGroup: rbac.authorization.k8s.io roleRef: kind: Role name: emr-containers apiGroup: rbac.authorization.k8s.io EOF -
Kubernetes
aws-auth
구성 맵 업데이트다음 옵션 중 하나를 사용하여 Amazon EMR on EKS 서비스 연결 역할을 이전 단계에서 Kubernetes 역할에 바인딩된
emr-containers
사용자와 매핑할 수 있습니다.옵션 1:
eksctl
사용다음
eksctl
명령을 실행하여 Amazon EMR on EKS 서비스 연결 역할을emr-containers
사용자와 매핑합니다.eksctl create iamidentitymapping \ --cluster
my-cluster-name
\ --arn "arn:aws:iam::my-account-id
:role/AWSServiceRoleForAmazonEMRContainers" \ --username emr-containers옵션 2: eksctl 사용 안 함
-
다음 명령을 실행하여
aws-auth
구성 맵을 텍스트 편집기에서 엽니다.kubectl edit -n kube-system configmap/aws-auth
참고
Error from server (NotFound): configmaps "aws-auth" not found
와 같은 오류 메시지가 표시되면 Amazon EKS 사용 설명서에서 사용자 역할 추가의 단계를 참조하여 재고 ConfigMap을 적용합니다. -
Amazon EMR on EKS 서비스 연결 역할 세부 정보를
data
아래ConfigMap
의mapRoles
섹션에 추가합니다. 파일에 이미 존재하지 않는 경우 이 섹션을 추가합니다. 데이터 아래의 업데이트된mapRoles
섹션은 다음 예제와 같습니다.apiVersion: v1 data: mapRoles: | - rolearn: arn:aws:iam::<your-account-id>:role/AWSServiceRoleForAmazonEMRContainers username: emr-containers - ... <other previously existing role entries, if there's any>.
-
파일을 저장하고 텍스트 편집기를 종료합니다.
-