זהות במישור הנתונים
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 (GSA) שמשמש את השירות המנוהל של 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-driverערב הסעודית (הפעלת מנהלי התקנים של Spark):serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/spark-driver] -
spark-executorKSA (מריץ Spark executors):serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/spark-executor]
הקצאת תפקידים
נותנים הרשאות לחשבון השירות של המכונה הווירטואלית של Managed Service for 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 on GKE משתמש ב-GKE workload identity כדי לקשר את חשבון השירות של מכונת ה-VM של 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: בדוגמאות מוגדר ומשמשDPGKE_GSAכשם המשתנה שמכיל את כתובת האימייל של ה-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}" מקצים את התפקיד
iam.workloadIdentityUserKSAagentכדי לאפשר לו לפעול בתור GSA:gcloud iam service-accounts add-iam-policy-binding \ --role=roles/iam.workloadIdentityUser \ --member="serviceAccount:${PROJECT}.svc.id.goog[${DPGKE_NAMESPACE}/agent]" \ "${DPGKE_GSA}"נותנים ל-
spark-driverבערב הסעודית את התפקידiam.workloadIdentityUserכדי לאפשר לו לפעול כסוכן המכירות שלכם ב-Google: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 את התפקיד