데이터 영역 ID
GKE 기반 Dataproc은 GKE 워크로드 아이덴티티를 사용하여 GKE 기반 Dataproc 클러스터 내의 포드가 기본 Dataproc VM 서비스 계정(데이터 영역 ID) 권한으로 작동하도록 허용합니다. GKE 기반 Dataproc 가상 클러스터에서 사용하는 GSA의 IAM 정책을 업데이트하려면 워크로드 아이덴티티에 다음 권한이 필요합니다.
compute.projects.get
iam.serviceAccounts.getIamPolicy
iam.serviceAccounts.setIamPolicy
agent
KSA(Dataproc 컨트롤 플레인과 상호작용):
serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/agent]
spark-driver
KSA(Spark 드라이버 실행):serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/spark-driver]
spark-executor
KSA(Spark 실행자 실행):serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/spark-executor]
역할 지정
spark-driver
및 spark-executor
가 프로젝트 리소스, 데이터 소스, 데이터 싱크 및 워크로드에 필요한 기타 서비스에 액세스할 수 있도록 Dataproc VM 서비스 계정에 권한을 부여합니다.
예를 들면 다음과 같습니다.
다음 명령어는 GKE 기반 Dataproc 클러스터 VM에서 실행되는 Spark 워크로드가 프로젝트의 Cloud Storage 버킷 및 BigQuery 데이터에 액세스할 수 있도록 기본 Dataproc VM 서비스 계정에 역할을 할당합니다.
gcloud projects add-iam-policy-binding \ --role=roles/storage.objectAdmin \ --role=roles/bigquery.dataEditor \ --member="project-number-compute@developer.gserviceaccount.com" \ "${PROJECT}"
커스텀 IAM 구성
GKE 기반 Dataproc은 GKE 워크로드 아이덴티티를 사용하여 기본 Dataproc VM 서비스 계정(데이터 영역 ID)을 3개의 GKE 서비스 계정(KSA)에 연결합니다.
다른 Google 서비스 계정(GSA)을 만들어 KSA에 연결하려면 다음 안내를 따르세요.
GSA를 만듭니다(서비스 계정 생성 및 관리 참조).
gcloud CLI 예시:
참고:gcloud iam service-accounts create "dataproc-${USER}" \ --description "Used by Dataproc on GKE workloads."
- 이 예시에서는 GSA 이름을 'dataproc-${USER}'로 설정했지만 다른 이름을 사용할 수 있습니다.
환경 변수를 설정합니다.
참고:PROJECT=project-id \ DPGKE_GSA="dataproc-${USER}@${PROJECT}.iam.gserviceaccount.com" DPGKE_NAMESPACE=GKE namespace
DPGKE_GSA
: 이 예시에서는 GSA의 이메일 주소가 포함된 변수의 이름으로DPGKE_GSA
를 설정하여 사용합니다. 다른 변수 이름을 설정하여 사용해도 됩니다.DPGKE_NAMESPACE
: 기본 GKE 네임스페이스는 GKE 기반 Dataproc 클러스터의 이름입니다.
GKE 기반 Dataproc 클러스터를 만들 때 기본 GSA 대신 GSA를 사용하려면 Dataproc에 다음 속성을 추가합니다.
--properties "dataproc:dataproc.gke.agent.google-service-account=${DPGKE_GSA}" \ --properties "dataproc:dataproc.gke.spark.driver.google-service-account=${DPGKE_GSA}" \ --properties "dataproc:dataproc.gke.spark.executor.google-service-account=${DPGKE_GSA}" \
Run the following commands to assign necessary Workload Identity permissions to the service accounts:
- Assign your GSA the
dataproc.worker
role to allow it to act as agent:gcloud projects add-iam-policy-binding \ --role=roles/dataproc.worker \ --member="serviceAccount:${DPGKE_GSA}" \ "${PROJECT}"
GSA 역할을 하도록
agent
KSA에iam.workloadIdentityUser
역할을 할당합니다.gcloud iam service-accounts add-iam-policy-binding \ --role=roles/iam.workloadIdentityUser \ --member="serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/agent]" \ "${DPGKE_GSA}"
GSA 역할을 하도록
spark-driver
KSA에iam.workloadIdentityUser
역할을 부여합니다.gcloud iam service-accounts add-iam-policy-binding \ --role=roles/iam.workloadIdentityUser \ --member="serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/spark-driver]" \ "${DPGKE_GSA}"
GSA 역할을 하도록
spark-executor
KSA에iam.workloadIdentityUser
역할을 부여합니다.gcloud iam service-accounts add-iam-policy-binding \ --role=roles/iam.workloadIdentityUser \ --member="serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/spark-executor]" \ "${DPGKE_GSA}"
- Assign your GSA the