GKE עם Workload Identity בלבד: הגדרת Workload Identity
אם הגדרתם את קובץ ההחלפות של Workload Identity ב-GKE בשלב 6: הגדרת האשכול, אתם צריכים לבצע את השלבים הבאים.
אם אתם לא משתמשים ב-Workload Identity ב-GKE, עוברים אל חלק 3, שלב 1: חשיפת שער הכניסה של Apigee.
חשבונות שירות ב-Google Cloud וחשבונות שירות ב-Kubernetes
חשבון שירות ב-Google Cloud הוא סוג מיוחד של חשבון שאפשר להשתמש בו כדי לבצע קריאות מורשות ל-API על ידי אימות כחשבון השירות עצמו. אפשר להקצות לחשבונות שירות ב-Google Cloud תפקידים והרשאות בדומה למשתמשים פרטיים. כשאפליקציה מבצעת אימות כחשבון שירות, יש לה גישה לכל המשאבים שחשבון השירות מורשה לגשת אליהם. מידע נוסף על חשבונות שירות ב-Google Cloud זמין במאמר סקירה כללית על חשבונות שירות.
יצרתם חשבונות שירות ב-Google Cloud להתקנת Apigee Hybrid בשלב 4: יצירת חשבונות שירות. Apigee משתמש בחשבונות השירות האלה כדי לאמת את הרכיבים ההיברידיים.
חשבונות שירות של Kubernetes דומים לחשבונות שירות של Google Cloud. חשבון שירות של Kubernetes מספק זהות לתהליכים שפועלים ב-Pod, ומאפשר לו לבצע אימות לשרת ה-API באופן דומה למשתמש. מידע נוסף על חשבונות שירות ב-Kubernetes זמין במאמר הגדרת חשבונות שירות לקבוצות Pod.
הכלי apigeectl יצר את רוב חשבונות השירות של Kubernetes שנדרשים ל-Apigee Hybrid כשמריצים את הפקודה apigeectl apply בתהליך הקודם.
כשמגדירים Workload Identity ב-GKE, משייכים את חשבונות השירות של Google Cloud לחשבונות השירות של Kubernetes באשכול Kubernetes. כך, חשבונות השירות של Kubernetes יכולים להתחזות לחשבונות השירות של Google Cloud ולהשתמש בתפקידים ובהרשאות שהוקצו להם כדי לבצע אימות מול הרכיבים ההיברידיים.
כדי להגדיר את Workload Identity בפרויקט, פועלים לפי ההוראות האלה.
הכנות להגדרת Workload Identity
בנהלים האלה נעשה שימוש במשתני הסביבה הבאים. בודקים אם הם מוגדרים, ואם לא, מגדירים אותם:
echo $APIGEECTL_HOMEecho $CLUSTER_LOCATIONecho $ENV_NAMEecho $HYBRID_FILESecho $NAMESPACEecho $PROJECT_IDecho $ORG_NAME
כאשר:
-
APIGEECTL_HOMEהיא הספרייה שבה התקנתם אתapigeectl. -
CLUSTER_LOCATIONהוא האזור (או התחום) של האשכול, לדוגמהus-central1. -
ENV_NAMEהוא השם של הסביבה. -
HYBRID_FILESהיא הספרייה שבה יצרתם את הספריותoverridesו-certs. -
NAMESPACEהוא מרחב השמות של Apigee. -
PROJECT_IDהוא הפרויקט שלכם ב-Google Cloud. -
ORG_NAMEהוא השם של הארגון שלכם ב-Apigee.
- בודקים שההגדרה הנוכחית של
gcloudמוגדרת למזהה הפרויקט ב-Google Cloud באמצעות הפקודה הבאה:gcloud config get project
- יוצרים את חשבון השירות של
apigee-cassandra-restoreKubernetes.כשמחילים את ההגדרות על ידי הפעלת הפקודה
apigeectl apply, הפקודה יוצרת את רוב חשבונות השירות של Kubernetes שנדרשים ל-Workload Identity.כדי ליצור את חשבון השירות
apigee-cassandra-restoreב-Kubernetes, מריצים את הפקודהapigeectl applyעם הדגל--restore:$APIGEECTL_HOME/apigeectl apply -f $HYBRID_FILES/overrides/overrides.yaml --restore
- מוודאים ש-Workload Identity מופעל באשכול GKE. כשיוצרים את האשכול בשלב 1: יצירת אשכול, השלב השישי הוא הפעלת Workload Identity. כדי לוודא ש-Workload Identity מופעל, מריצים את הפקודה הבאה:
אשכולות אזוריים
gcloud container clusters describe $CLUSTER_NAME \ --region $CLUSTER_LOCATION \ --project $PROJECT_ID \ --flatten 'workloadIdentityConfig'
אשכולות אזוריים
gcloud container clusters describe $CLUSTER_NAME \ --zone $CLUSTER_LOCATION \ --project $PROJECT_ID \ --flatten 'workloadIdentityConfig'
הפלט אמור להיראות כך:
--- workloadPool: PROJECT_ID.svc.id.goog
אם במקום זאת רואים
nullבתוצאות, מריצים את הפקודה הבאה כדי להפעיל את Workload Identity באשכול:אשכולות אזוריים
gcloud container clusters update $CLUSTER_NAME \ --workload-pool=$PROJECT_ID.svc.id.goog \ --project $PROJECT_ID \ --region $CLUSTER_LOCATION
אשכולות אזוריים
gcloud container clusters update $CLUSTER_NAME \ --workload-pool=$PROJECT_ID.svc.id.goog \ --zone $CLUSTER_LOCATION \ --project $PROJECT_ID
-
מפעילים את התכונה Workload Identity לכל מאגר צמתים באמצעות הפקודות הבאות. הפעולה הזו יכולה להימשך עד 30 דקות לכל צומת:
אשכולות אזוריים
gcloud container node-pools update NODE_POOL_NAME \ --cluster=$CLUSTER_NAME \ --region $CLUSTER_LOCATION \ --project $PROJECT_ID \ --workload-metadata=GKE_METADATA
אשכולות אזוריים
gcloud container node-pools update NODE_POOL_NAME \ --cluster=$CLUSTER_NAME \ --zone $CLUSTER_LOCATION \ --project $PROJECT_ID \ --workload-metadata=GKE_METADATA
כאשר NODE_POOL_NAME הוא השם של כל מאגר צמתים. ברוב ההתקנות של Apigee hybrid, שני מאגרי הצמתים שמוגדרים כברירת מחדל נקראים
apigee-dataו-apigee-runtime. - מריצים את הפקודות הבאות כדי לוודא שהתכונה Workload Identity מופעלת במאגרי הצמתים:
אשכולות אזוריים
gcloud container node-pools describe apigee-data \ --cluster $CLUSTER_NAME \ --region $CLUSTER_LOCATION \ --project $PROJECT_ID \ --flatten "config:"
gcloud container node-pools describe apigee-runtime \ --cluster $CLUSTER_NAME \ --region $CLUSTER_LOCATION \ --project $PROJECT_ID \ --flatten "config:"
אשכולות אזוריים
gcloud container node-pools describe apigee-data \ --cluster $CLUSTER_NAME \ --zone $CLUSTER_LOCATION \ --project $PROJECT_ID \ --flatten "config:"
gcloud container node-pools describe apigee-runtime \ --cluster $CLUSTER_NAME \ --zone $CLUSTER_LOCATION \ --project $PROJECT_ID \ --flatten "config:"
הפלט אמור להיראות כך:
--- diskSizeGb: 100 diskType: pd-standard ... workloadMetadataConfig: mode: GKE_METADATA - קבלת רשימה של שמות חשבונות השירות ב-Google Cloud שמשויכים לפרויקט. תצטרכו את השמות האלה כדי לשייך את חשבונות השירות של Kubernetes להגדרת Workload Identity. במקרים של התקנות שאינן בסביבת ייצור, צריך להיות רק חשבון שירות אחד של Google. בגרסת הייצור
צריכות להיות שמונה התקנות.
כדי לקבל את רשימת השמות, משתמשים בפקודה הבאה:
gcloud iam service-accounts list --project $PROJECT_ID
הפלט אמור להיראות כך:
Non-prod
לסביבות שאינן סביבות ייצור:
DISPLAY NAME EMAIL DISABLED apigee-non-prod apigee-non-prod@my_project_id.iam.gserviceaccount.com False
ייצור
לסביבות שאינן סביבות ייצור:
DISPLAY NAME EMAIL DISABLED apigee-cassandra apigee-cassandra@my_project_id.iam.gserviceaccount.com False apigee-logger apigee-logger@my_project_id.iam.gserviceaccount.com False apigee-mart apigee-mart@my_project_id.iam.gserviceaccount.com False apigee-metrics apigee-metrics@my_project_id.iam.gserviceaccount.com False apigee-runtime apigee-runtime@my_project_id.iam.gserviceaccount.com False apigee-synchronizer apigee-synchronizer@my_project_id.iam.gserviceaccount.com False apigee-udca apigee-udca@my_project_id.iam.gserviceaccount.com False apigee-watcher apigee-watcher@my_project_id.iam.gserviceaccount.com False
- מקבלים רשימה של שמות חשבונות השירות של Kubernetes. תצטרכו את רשימת השמות הזו כדי לשייך אותם לחשבונות השירות שלכם ב-Google Cloud בהמשך התהליך הזה. משתמשים בפקודה הבאה:
kubectl get sa -n $NAMESPACE
הפלט אמור להיראות כך: חשבונות השירות של Kubernetes שמופיעים בהדגשה הם אלה שתצטרכו לשייך לחשבונות השירות שלכם ב-Google Cloud:
NAME SECRETS AGE apigee-cassandra-backup 1 11m apigee-cassandra-restore 1 11m apigee-cassandra-schema-setup-my-project-id-123abcd-sa 1 11m apigee-cassandra-schema-val-my-project-id-123abcd 1 11m apigee-cassandra-user-setup-my-project-id-123abcd-sa 1 11m apigee-connect-agent-my-project-id-123abcd-sa 1 11m apigee-datastore-default-sa 1 11m apigee-ingressgateway 1 11m apigee-ingressgateway-my-project-id-123abcd 1 11m apigee-ingressgateway-manager 1 11m apigee-init 1 11m apigee-mart-my-project-id-123abcd-sa 1 11m apigee-metrics-sa 1 11m apigee-mint-task-scheduler-my-project-id-123abcd-sa 1 11m apigee-redis-default-sa 1 11m apigee-redis-envoy-default-sa 1 11m apigee-runtime-my-project-id-env-name-234bcde-sa 1 11m apigee-synchronizer-my-project-id-env-name-234bcde-sa 1 11m apigee-udca-my-project-id-123abcd-sa 1 11m apigee-udca-my-project-id-env-name-234bcde-sa 1 11m apigee-watcher-my-project-id-123abcd-sa 1 11m default 1 11m
אם צריך, מגדירים את ההגדרות של gcloud:
gcloud config set project $PROJECT_ID
הגדרת Workload Identity
כדי להפעיל את Workload Identity בהתקנה היברידית, מבצעים את הפעולות הבאות:
-
לכל רכיב של Apigee, מוסיפים הערה לחשבונות השירות המתאימים של Kubernetes עם חשבון השירות של Google לרכיב.
בשלבים הבאים נעשה שימוש בשני משתני סביבה. תאפסו את הערכים של המשתנים האלה לפני כל קבוצת פקודות:
- GSA_NAME: השם של חשבון שירות של Google. אלה חשבונות השירות שיצרתם באמצעות הכלי
create-service-accountבשלב 4: יצירת חשבונות שירות. - KSA_NAME: השם של חשבון שירות ב-Kubernetes. אלה החשבונות שרשמתם למעלה באמצעות הפקודה
kubectl get sa -n $NAMESPACE, לדוגמה:apigee-cassandra-schema-setup-hybrid-example-project-123abcd-sa.
- GSA_NAME: השם של חשבון שירות של Google. אלה חשבונות השירות שיצרתם באמצעות הכלי
- Cassandra
מגדירים את Workload Identity לרכיב Cassandra.
לרכיב Cassandra יש שישה חשבונות שירות משויכים ב-Kubernetes:
apigee-cassandra-backupapigee-cassandra-restoreapigee-cassandra-schema-setupapigee-cassandra-schema-val(val= אימות)apigee-cassandra-user-setupapigee-datastore-default
Non-prod
הגדרת
apigee-cassandra-backupחשבון שירות של Kubernetes- מגדירים את משתני הסביבה
KSA_NAMEו-GSA_NAME:GSA_NAME="apigee-non-prod"
KSA_NAME="apigee-cassandra-backup" - קישור תפקיד IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- מוסיפים הערה לחשבון השירות:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- אימות ההערה:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
הפלט צריך לכלול שורה עם תיאור ההערה, בדומה ל:
Annotations: iam.gke.io/gcp-service-account: apigee-non-prod@my-project-id.iam.gserviceaccount.com
הגדרת
apigee-cassandra-restoreחשבון שירות של Kubernetes- מגדירים מחדש את משתנה הסביבה
KSA_NAME:KSA_NAME="apigee-cassandra-restore"
- קישור תפקיד IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- מוסיפים הערה לחשבון השירות:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- אימות ההערה:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
הגדרת
apigee-cassandra-schema-setupחשבון שירות של Kubernetes- מגדירים מחדש את משתנה הסביבה
KSA_NAME: לדוגמה:KSA_NAME="apigee-cassandra-schema-setup-service-account-name-sa"
apigee-cassandra-schema-setup-hybrid-example-project-123abcd-sa. - קישור תפקיד IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- מוסיפים הערה לחשבון השירות:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- אימות ההערה:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
הגדרת
apigee-cassandra-schema-valחשבון שירות של Kubernetes- מגדירים מחדש את משתנה הסביבה
KSA_NAME: לדוגמה:KSA_NAME="apigee-cassandra-schema-val-service-account-name"
apigee-cassandra-schema-val-hybrid-example-project-123abcd. - קישור תפקיד IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- מוסיפים הערה לחשבון השירות:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- אימות ההערה:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
הגדרת
apigee-cassandra-user-setupחשבון שירות של Kubernetes- מגדירים מחדש את משתנה הסביבה
KSA_NAME: לדוגמה:KSA_NAME="apigee-cassandra-user-setup-service-account-name-sa"
apigee-cassandra-user-setup-hybrid-example-project-123abcd-sa. - קישור תפקיד IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- מוסיפים הערה לחשבון השירות:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- אימות ההערה:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
הגדרת
apigee-datastore-default-saחשבון שירות של Kubernetes- מגדירים מחדש את משתנה הסביבה
KSA_NAME:KSA_NAME="apigee-datastore-default-sa"
- קישור תפקיד IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- מוסיפים הערה לחשבון השירות:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- אימות ההערה:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
ייצור
הגדרת
apigee-cassandra-backupחשבון שירות של Kubernetes- מגדירים את משתני הסביבה
KSA_NAMEו-GSA_NAME:GSA_NAME="apigee-cassandra"
KSA_NAME="apigee-cassandra-backup" - קישור תפקיד IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- מוסיפים הערה לחשבון השירות:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- אימות ההערה:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- אימות ההערה:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
הפלט צריך לכלול שורה עם תיאור ההערה, בדומה ל:
Annotations: iam.gke.io/gcp-service-account: apigee-cassandra@my-project-id.iam.gserviceaccount.com
הגדרת
apigee-cassandra-restoreחשבון שירות של Kubernetes- מגדירים מחדש את משתנה הסביבה
KSA_NAME:KSA_NAME="apigee-cassandra-restore"
- קישור תפקיד IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- מוסיפים הערה לחשבון השירות:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
הגדרת
apigee-cassandra-schema-setupחשבון שירות של Kubernetes- מגדירים מחדש את משתנה הסביבה
KSA_NAME: לדוגמה:KSA_NAME="apigee-cassandra-schema-setup-service-account-name-sa"
apigee-cassandra-schema-setup-hybrid-example-project-123abcd-sa. - מוסיפים הערה לחשבון השירות:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- אימות ההערה:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
קישור תפקיד IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
הגדרת
apigee-cassandra-schema-valחשבון שירות של Kubernetes- מגדירים מחדש את משתנה הסביבה
KSA_NAME: לדוגמה:KSA_NAME="apigee-cassandra-schema-val-service-account-name"
apigee-cassandra-schema-val-hybrid-example-project-123abcd. - קישור תפקיד IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- מוסיפים הערה לחשבון השירות:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- אימות ההערה:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
הגדרת
apigee-cassandra-user-setupחשבון שירות של Kubernetes- מגדירים מחדש את משתנה הסביבה
KSA_NAME: לדוגמה:KSA_NAME="apigee-cassandra-user-setup-service-account-name-sa"
apigee-cassandra-user-setup-hybrid-example-project-123abcd-sa. - קישור תפקיד IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- מוסיפים הערה לחשבון השירות:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- אימות ההערה:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
הגדרת
apigee-datastore-default-saחשבון שירות של Kubernetes- מגדירים מחדש את משתנה הסביבה
KSA_NAME:KSA_NAME="apigee-datastore-default-sa"
- קישור תפקיד IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- מוסיפים הערה לחשבון השירות:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- אימות ההערה:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Apigee Connect
מגדירים את Workload Identity לרכיב Apigee Connect.
Non-prod
- מגדירים את משתנה הסביבה
KSA_NAME: לדוגמה:KSA_NAME="apigee-connect-agent-service-account-name-sa"
apigee-connect-agent-hybrid-example-project-123abcd-sa. - קישור תפקיד IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- מוסיפים הערה לחשבון השירות:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- אימות ההערה:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
ייצור
- מגדירים את משתני הסביבה
KSA_NAMEו-GSA_NAME: לדוגמה:GSA_NAME="apigee-mart"
KSA_NAME="apigee-connect-agent-service-account-name-sa"apigee-connect-agent-hybrid-example-project-123abcd-sa. - קישור תפקיד IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- מוסיפים הערה לחשבון השירות:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- אימות ההערה:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- מגדירים את משתנה הסביבה
- MART
מגדירים את Workload Identity לרכיב MART.
Non-prod
- מגדירים את משתנה הסביבה
KSA_NAME: לדוגמה:KSA_NAME="apigee-mart-service-account-name-sa"
apigee-mart-hybrid-example-project-123abcd-sa. - קישור תפקיד IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- מוסיפים הערה לחשבון השירות:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- אימות ההערה:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
ייצור
- מגדירים את משתני הסביבה
KSA_NAMEו-GSA_NAME: לדוגמה:GSA_NAME="apigee-mart"
KSA_NAME="apigee-mart-service-account-name-sa"apigee-mart-hybrid-example-project-123abcd-sa. - קישור תפקיד IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- מוסיפים הערה לחשבון השירות:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- אימות ההערה:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- מגדירים את משתנה הסביבה
- מדדים של Apigee
מגדירים את Workload Identity לרכיב המדדים של Apigee.
Non-prod
- מגדירים את משתני הסביבה
KSA_NAME:KSA_NAME="apigee-metrics-sa"
- קישור תפקיד IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- מוסיפים הערה לחשבון השירות:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- אימות ההערה:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
ייצור
- מגדירים את משתני הסביבה
KSA_NAMEו-GSA_NAME:GSA_NAME="apigee-metrics"
KSA_NAME="apigee-metrics-sa" - קישור תפקיד IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- מוסיפים הערה לחשבון השירות:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- אימות ההערה:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- מגדירים את משתני הסביבה
- UDCA (org-level)
מגדירים את Workload Identity לרכיב UDCA ברמת הארגון.
ה-UDCA מיושם בהיקפים של רמת הארגון ורמת הסביבה. לכן, יש שני חשבונות שירות נפרדים של Kubernetes ל-UDCA, אחד לכל היקף. אפשר להבחין ביניהם לפי שם החשבון. החשבון env-scope כולל את שם הסביבה בשם של חשבון השירות. לדוגמה:
- ברמת הארגון:
apigee-udca-my-project-id-123abcd-saכאשרmy-project-idהוא מזהה הפרויקט. - ברמת הסביבה:
apigee-udca-my-project-id-my-env-234bcde-saכאשרmy-envהוא שם הסביבה.
Non-prod
- מגדירים את משתני הסביבה
KSA_NAME: לדוגמה:KSA_NAME="apigee-udca-service-account-name-sa"
apigee-udca-hybrid-example-project-123abcd-sa. - קישור תפקיד IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID - מוסיפים הערה לחשבון השירות:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com - אימות ההערה:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
ייצור
- מגדירים את משתני הסביבה
KSA_NAMEו-GSA_NAME: לדוגמה:GSA_NAME="apigee-udca"
KSA_NAME="apigee-udca-service-account-name-sa"apigee-udca-hybrid-example-project-123abcd-sa. - קישור תפקיד IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- מוסיפים הערה לחשבון השירות:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- אימות ההערה:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- ברמת הארגון:
- Apigee Watcher
מגדירים את Workload Identity לרכיב Apigee Watcher.
Non-prod
- מגדירים את משתני הסביבה
KSA_NAME: לדוגמה:KSA_NAME="apigee-watcher-service-account-name-sa"
apigee-watcher-hybrid-example-project-123abcd-sa. - קישור תפקיד IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- מוסיפים הערה לחשבון השירות:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- אימות ההערה:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
ייצור
- מגדירים את משתני הסביבה
KSA_NAMEו-GSA_NAME: לדוגמה:GSA_NAME="apigee-watcher"
KSA_NAME="apigee-watcher-service-account-name-sa"apigee-watcher-hybrid-example-project-123abcd-sa. - קישור תפקיד IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- מוסיפים הערה לחשבון השירות:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- אימות ההערה:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- מגדירים את משתני הסביבה
- זמן ריצה
מגדירים את Workload Identity לרכיב Apigee Runtime.
Non-prod
- מגדירים את משתני הסביבה
KSA_NAME: לדוגמה:KSA_NAME="apigee-runtime-env-level-service-account-name-sa"
apigee-runtime-hybrid-example-project-example-env-234bcde-sa. - קישור תפקיד IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- מוסיפים הערה לחשבון השירות:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- אימות ההערה:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
ייצור
- מגדירים את משתני הסביבה
KSA_NAMEו-GSA_NAME: לדוגמה:GSA_NAME="apigee-runtime"
KSA_NAME="apigee-runtime-env-level-service-account-name-sa"apigee-runtime-hybrid-example-project-example-env-234bcde-sa. - קישור תפקיד IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- מוסיפים הערה לחשבון השירות:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- אימות ההערה:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- מגדירים את משתני הסביבה
- Synchronizer
מגדירים את Workload Identity לרכיב Synchronizer.
Non-prod
- מגדירים את משתני הסביבה
KSA_NAME: לדוגמה:KSA_NAME="apigee-synchronizer-env-level-service-account-name-sa"
apigee-synchronizer-hybrid-example-project-example-env-234bcde-sa. - קישור תפקיד IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- מוסיפים הערה לחשבון השירות:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- אימות ההערה:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
ייצור
- מגדירים את משתני הסביבה
KSA_NAMEו-GSA_NAME: לדוגמה:GSA_NAME="apigee-synchronizer"
KSA_NAME="apigee-synchronizer-env-level-service-account-name-sa"apigee-synchronizer-hybrid-example-project-example-env-234bcde-sa. - קישור תפקיד IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- מוסיפים הערה לחשבון השירות:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- אימות ההערה:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- מגדירים את משתני הסביבה
- UDCA (env-level)
מגדירים את Workload Identity לרכיב UDCA ברמת הסביבה.
Non-prod
- מגדירים את משתני הסביבה
KSA_NAME: לדוגמה:KSA_NAME="apigee-udca-env-level-service-account-name-sa"
apigee-udca-hybrid-example-project-example-env-234bcde-sa. - קישור תפקיד IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- מוסיפים הערה לחשבון השירות:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- אימות ההערה:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
ייצור
- מגדירים את משתני הסביבה
KSA_NAMEו-GSA_NAME: לדוגמה:GSA_NAME="apigee-udca"
KSA_NAME="apigee-udca-env-level-service-account-name-sa"apigee-udca-hybrid-example-project-example-env-234bcde-sa. - קישור תפקיד IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- מוסיפים הערה לחשבון השירות:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- אימות ההערה:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- מגדירים את משתני הסביבה
- אופציונלי: מוחקים את קובצי המפתח של חשבון השירות שהורדו.
אם יצרתם את חשבונות השירות של Google באמצעות הכלי
create-service-account, יכול להיות שהכלי יצר מפתחות של חשבונות שירות והוריד את קובצי המפתחות.json. כשמשתמשים ב-Workload Identity ב-GKE, לא צריך את קובצי המפתח האלה.כדי למחוק את קובצי המפתחות, מריצים את הפקודה הבאה:
rm $HYBRID_FILES/service-accounts/*.json
אימות של Workload Identity
- (אופציונלי) אפשר לראות את הסטטוס של חשבונות השירות של Kubernetes בדף Kubernetes: Workloads Overview ב- Google Cloud console.
- כדי לבדוק שוב את סטטוס הפריסה באמצעות
apigeectl check-ready:${APIGEECTL_HOME}/apigeectl check-ready -f ${HYBRID_FILES}/overrides/overrides.yaml