זהות במישור הנתונים
Managed Service for Apache Spark on GKE משתמש ב-GKE workload identity כדי לאפשר ל-Pods באשכול Managed Service for Apache Spark on GKE לפעול עם ההרשאה של חשבון השירות של מכונת ה-VM שמוגדר כברירת מחדל ב-Managed Service for Apache Spark (זהות מישור הנתונים).
כדי לעדכן את מדיניות ה-IAM בחשבון השירות של Google שמשמש את האשכול הווירטואלי של Managed Service for Apache Spark ב-GKE, נדרשות ההרשאות הבאות ל-Workload Identity:
compute.projects.getiam.serviceAccounts.getIamPolicyiam.serviceAccounts.setIamPolicy
Workload Identity ב-GKE מקשר בין חשבונות השירות הבאים של GKE (KSA) לבין חשבון השירות של המכונה הווירטואלית של Managed Service for Apache Spark:
agentערב הסעודית (אינטראקציה עם מישור הבקרה של Managed Service for Apache Spark):
serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/agent]-
spark-driverKSA (מריץ מנהלי התקנים של Spark):serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/spark-driver] -
spark-executorKSA (runs Spark executors):serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/spark-executor]
הקצאת תפקידים
נותנים הרשאות לחשבון השירות של המכונה הווירטואלית של השירות המנוהל ל-Apache Spark כדי לאפשר ל-spark-driver ול-spark-executor לגשת למשאבי הפרויקט, למקורות נתונים, ליעדי נתונים ולכל שירות אחר שנדרש לעומס העבודה.
דוגמה:
הפקודה הבאה מקצה תפקידים לחשבון השירות שמוגדר כברירת מחדל למכונות וירטואליות של Managed Service for Apache Spark, כדי שעומסי עבודה של Spark שפועלים ב-Managed Service for Apache Spark במכונות וירטואליות באשכול GKE יוכלו לגשת לקטגוריות של Cloud Storage ולמערכי נתונים של BigQuery בפרויקט.
gcloud projects add-iam-policy-binding \
--role=roles/storage.objectAdmin \
--role=roles/bigquery.dataEditor \
--member="project-number-compute@developer.gserviceaccount.com" \
"${PROJECT}"
הגדרת IAM בהתאמה אישית
ב-Managed Service for Apache Spark ב-GKE, משתמשים ב-Workload Identity ב-GKE כדי לקשר את חשבון השירות של מכונות וירטואליות ב-Managed Service for Apache Spark (זהות במישור הנתונים) לשלושת חשבונות השירות של GKE (KSA).
כדי ליצור חשבון שירות אחר ב-Google (GSA) ולהשתמש בו לקישור ל-KSA:
יוצרים את חשבון השירות (ראו יצירה וניהול של חשבונות שירות).
דוגמה ל-CLI של gcloud:
הערות:gcloud iam service-accounts create "dataproc-${USER}" \ --description "Used by Managed Service for Apache Spark on GKE workloads."- בדוגמה, שם ה-GSA מוגדר כ-dataproc-${USER}, אבל אפשר להשתמש בשם אחר.
מגדירים משתני סביבה:
הערות:PROJECT=project-id \ DPGKE_GSA="dataproc-${USER}@${PROJECT}.iam.gserviceaccount.com" DPGKE_NAMESPACE=GKE namespace-
DPGKE_GSA: בדוגמאות, המשתנה שמכיל את כתובת האימייל של חשבון השירות ב-Google מוגדר בשםDPGKE_GSA. אפשר להגדיר ולהשתמש בשם משתנה אחר. -
DPGKE_NAMESPACE: מרחב השמות שמוגדר כברירת מחדל ב-GKE הוא השם של אשכול Managed Service for Apache Spark ב-GKE.
-
כשיוצרים את Managed Service for Apache Spark באשכול GKE, מוסיפים את המאפיינים הבאים כדי ש-Managed Service for Apache Spark ישתמש ב-GSA במקום ב-GSA שמוגדר כברירת מחדל:
--properties "dataproc:dataproc.gke.agent.google-service-account=${DPGKE_GSA}" \ --properties "dataproc:dataproc.gke.nodepool.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}" \מריצים את הפקודות הבאות כדי להקצות את ההרשאות הנדרשות של Workload Identity לחשבונות השירות:
- מקצים ל-GSA את התפקיד
dataproc.workerכדי לאפשר לו לפעול כסוכן:gcloud projects add-iam-policy-binding \ --role=roles/dataproc.worker \ --member="serviceAccount:${DPGKE_GSA}" \ "${PROJECT}" מקצים ל-KSA של
agentאת התפקידiam.workloadIdentityUserכדי לאפשר לו לפעול בתור GSA:gcloud iam service-accounts add-iam-policy-binding \ --role=roles/iam.workloadIdentityUser \ --member="serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/agent]" \ "${DPGKE_GSA}"מקצים ל-KSA של
spark-driverאת התפקידiam.workloadIdentityUserכדי לאפשר לו לפעול בתור GSA:gcloud iam service-accounts add-iam-policy-binding \ --role=roles/iam.workloadIdentityUser \ --member="serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/spark-driver]" \ "${DPGKE_GSA}"נותנים ל-
spark-executorבערב הסעודית את התפקידiam.workloadIdentityUserכדי לאפשר לו לפעול כסוכן המכירות שלכם ב-Google:gcloud iam service-accounts add-iam-policy-binding \ --role=roles/iam.workloadIdentityUser \ --member="serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/spark-executor]" \ "${DPGKE_GSA}"
- מקצים ל-GSA את התפקיד