במאמר הזה מוסבר איך להפעיל איחוד זהויות של עומסי עבודה ב-GKE עבור Apigee hybrid.
אם אתם משתמשים ב-Apigee Hybrid AKS או EKS, אתם צריכים לפעול לפי ההוראות במאמר הפעלת איחוד שירותי אימות הזהות של עומסי עבודה ב-AKS וב-EKS.
סקירה כללית
איחוד זהויות של עומסי עבודה ל-GKE מאפשר לאפליקציות שפועלות ב-GKE (Google Kubernetes Engine) לגשת לשירותים של Google Cloud . סקירות כלליות על איחוד זהויות של עומסי עבודה ל-GKE:
חשבון שירות ב-Cloud IAM של Google הוא זהות שאפליקציה יכולה להשתמש בה כדי לשלוח בקשות ל-Google APIs. במסמך הזה, חשבונות השירות האלה נקראים GSA (חשבונות שירות של Google). מידע נוסף על חשבונות שירות זמין במאמר חשבונות שירות.
בנוסף, ב-Kubernetes יש גם את המושג של חשבונות שירות. חשבון שירות מספק זהות לתהליכים שפועלים ב-Pod. חשבונות שירות ב-Kubernetes הם משאבים ב-Kubernetes, ואילו חשבונות שירות ב-Google הם ספציפיים ל-Google Cloud. מידע על חשבונות שירות של Kubernetes זמין במאמר הגדרת חשבונות שירות לקבוצות Pod במסמכי העזרה של Kubernetes.
כשמתקינים בפעם הראשונה את תרשימי ה-Helm של רכיבים מסוימים, מערכת Apigee יוצרת ומשתמשת בחשבון שירות של Kubernetes לכל סוג של רכיב. הפעלת איחוד שירותי אימות הזהות של עומסי עבודה ב-GKE מאפשרת לרכיבים ההיברידיים ליצור אינטראקציה עם חשבונות השירות של Kubernetes.
משתני סביבה שמשמשים בהליכים האלה
בנהלים האלה נעשה שימוש במשתני הסביבה הבאים. אפשר להגדיר את הערכים האלה במעטפת הפקודות או להחליף אותם בדוגמאות הקוד בערכים בפועל:
-
PROJECT_ID: מזהה הפרויקט ב-Google Cloud. -
ORG_NAME: השם של הארגון שלכם ב-Apigee. -
ENV_NAME: שם סביבת Apigee. -
NAMESPACE: מרחב השמות של Apigee (בדרך כללapigee). -
CLUSTER_LOCATION: האזור או האזור של אשכול Kubernetes, לדוגמה:us-west1. -
CLUSTER_NAME: השם של האשכול.
בודקים את משתני הסביבה:
echo $PROJECT_IDecho $ORG_NAMEecho $ENV_NAMEecho $NAMESPACEecho $CLUSTER_LOCATIONecho $CLUSTER_NAME
מאתחלים את המשתנים שרוצים:
export PROJECT_ID=MY_PROJECT_IDexport ORG_NAME=MY_ORG_NAMEexport ENV_NAME=MY_ENV_NAMEexport NAMESPACE=APIGEE_NAMESPACEexport CLUSTER_LOCATION=MY_CLUSTER_LOCATIONexport CLUSTER_NAME=MY_CLUSTER_NAME
איחוד זהויות של עומסי עבודה ל-GKE וקבצים של מפתחות חשבונות שירות
כשמריצים את Apigee hybrid ב-GKE, הדרך המקובלת היא ליצור ולהוריד מפתחות פרטיים (קובצי .json) לכל אחד מחשבונות השירות. כשמשתמשים באיחוד שירותי אימות הזהות של עומסי עבודה ב-GKE, לא צריך להוריד מפתחות פרטיים של חשבונות שירות ולהוסיף אותם לאשכולות GKE.
אם הורדתם קבצים של מפתחות חשבונות שירות כחלק מההתקנה של Apigee hybrid, תוכלו למחוק אותם אחרי שתפעילו איחוד שירותי אימות הזהות של עומסי עבודה ל-GKE. ברוב ההתקנות, הם נמצאים בספרייה של כל תרשים רכיב.
הפעלת איחוד זהויות של עומסי עבודה ל-GKE עבור Apigee hybrid
כדי להגדיר את הפרויקט לשימוש באיחוד שירותי אימות הזהות של עומסי עבודה ב-GKE, פועלים לפי ההוראות הבאות.
הכנות להגדרה של איחוד זהויות של עומסי עבודה ל-GKE
- מוודאים שאיחוד זהויות של עומסי עבודה ל-GKE מופעל בקובץ ההגדרות החלופיות. צריך להפעיל אותו בקובץ overrides, ולהגדיר ערכים למאפייני התצורה הבאים:
- לכל ההתקנות:
הערך של
gcp.workloadIdentity.enabledצריך להיותtrue. לדוגמה:gcp: workloadIdentity: enabled: true - לגבי התקנות בסביבת ייצור:
- במקרים של התקנות שאינן בסביבת ייצור, צריך לציין את הכתובת של GSA שאינו בסביבת ייצור (עם כל תפקידי ה-IAM הנדרשים) במאפיין
gcp.workloadIdentity.gsa.
- לכל ההתקנות:
הערך של
- מריצים את הפקודה הבאה כדי לוודא שההגדרה הנוכחית של
gcloudמוגדרת למזהה הפרויקט ב-Google Cloud:gcloud config get project
- מוודאים שאיחוד זהויות של עומסי עבודה ל-GKE מופעל באשכול GKE. בשלב 6 של שלב 1: יצירת אשכול, הפעלתם את איחוד הזהויות של עומסי עבודה ל-GKE. כדי לוודא שאיחוד זהויות של עומסי עבודה ל-GKE מופעל, מריצים את הפקודה הבאה:
אשכולות אזוריים
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בתוצאות, מריצים את הפקודה הבאה כדי להפעיל איחוד זהויות של עומסי עבודה ל-GKE באשכול:אשכולות אזוריים
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
-
מפעילים את איחוד הזהויות של עומסי עבודה ל-GKE לכל מאגר צמתים באמצעות הפקודות הבאות. הפעולה הזו יכולה להימשך עד 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. - מריצים את הפקודות הבאות כדי לוודא שאיחוד זהויות של עומסי עבודה ל-GKE מופעל במאגרי הצמתים:
אשכולות אזוריים
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
אם צריך, מגדירים את ההגדרות של gcloud:
gcloud config set project $PROJECT_ID
הגדרת ההתקנה לשימוש ב-Workload Identity Federation ל-GKE
כדי להפעיל איחוד זהויות של עומסי עבודה ל-GKE עבור רכיבי ה-Hybrid הבאים, צריך לבצע את הפעולות הבאות:
apigee-datastoreapigee-telemetryapigee-orgapigee-env
כשמריצים את הפקודה helm upgrade עם הדגלים --dry-run או --dry-run=server עבור התרשימים apigee-datastore, apigee-env, apigee-org ו-apigee-telemetry, הפלט יכלול את הפקודות שצריך כדי להגדיר איחוד זהויות של עומסי עבודה ל-GKE עם השמות הנכונים של GSA ו-KSA.
לדוגמה:
helm upgrade datastore apigee-datastore/ \ --namespace $NAMESPACE \ -f OVERRIDES_FILE \ --dry-run=server
הפלט יהיה דומה לזה:
NAME: datastore
...
For Cassandra backup, please make sure to add the following membership to the IAM policy binding using the respective kubernetes SA (KSA).
gcloud iam service-accounts add-iam-policy-binding apigee-cassandra@PROJECT_ID.iam.gserviceaccount.com \
--role roles/iam.workloadIdentityUser \
--member "serviceAccount:PROJECT_ID.svc.id.goog[APIGEE_NAMESPACE/apigee-cassandra-default]" \
--project PROJECT_ID
kubectl annotate serviceaccount apigee-cassandra-default \
iam.gke.io/gcp-service-account=apigee-cassandra@PROJECT_ID.iam.gserviceaccount.com \
--namespace APIGEE_NAMESPACE
כאשר:
-
apigee-cassandraהוא השם של חשבון השירות של Google (GSA) עבור Cassandra. מידע על חשבונות שירות - מחליפים את
PROJECT_IDבמזהה הפרויקט ב-Google Cloud. APIGEE_NAMESPACEמוחלף במרחב השמות של Apigee, שהואapigeeכברירת מחדל.-
apigee-cassandra-defaultהוא השם של חשבון השירות ב-Kubernetes עבור קבוצות ה-Pod של Cassandra שנוצרו על ידי תרשיםapigee-datastore.
- מקבלים את הפקודה להגדרת איחוד זהויות של עומסי עבודה ל-GKE עבור
apigee-datastoreומריצים את הפקודות שמופיעות בקטעNOTES:בפלט.helm upgrade datastore apigee-datastore/ \ --namespace $NAMESPACE \ -f OVERRIDES_FILE \ --dry-run=server
- מקבלים את הפקודות להגדרת איחוד זהויות של עומסי עבודה ל-GKE עבור
apigee-telemetryומריצים את הפקודות בקטעNOTES:בפלט.helm upgrade telemetry apigee-telemetry/ \ --namespace $NAMESPACE \ -f OVERRIDES_FILE \ --dry-run
- מקבלים את הפקודות להגדרת איחוד זהויות של עומסי עבודה ל-GKE עבור
apigee-orgומריצים את הפקודות בקטעNOTES:בפלט.helm upgrade $ORG_NAME apigee-org/ \ --namespace $NAMESPACE \ -f OVERRIDES_FILE \ --dry-run
- מקבלים את הפקודות להגדרת איחוד זהויות של עומסי עבודה ל-GKE עבור
apigee-envומריצים את הפקודות בקטעNOTES:בפלט.helm upgrade $ENV_NAME apigee-env/ \ --namespace $NAMESPACE \ --set env=$ENV_NAME \ -f OVERRIDES_FILE \ --dry-run
חוזרים על השלב הזה לכל סביבה בהתקנה.
אימות של איחוד שירותי אימות הזהות של עומסי עבודה ל-GKE
- כדי לוודא שהשלבים עבדו:
gcloud config set project $PROJECT_ID
kubectl run --rm -it --image google/cloud-sdk:slim \ --namespace $NAMESPACE workload-identity-test\ -- gcloud auth list
אם לא מופיעה שורת פקודה, נסו להקיש על Enter.
אם השלבים בוצעו בצורה נכונה, אמורה להתקבל תגובה כמו זו:
Credentialed Accounts ACTIVE ACCOUNT * GSA@PROJECT_ID.iam.gserviceaccount.com - אם משדרגים מהתקנה קודמת, צריך לנקות סודות שהכילו מפתחות פרטיים של חשבונות שירות:
kubectl delete secrets -n $NAMESPACE $(k get secrets -n $NAMESPACE | grep svc-account | awk '{print $1}') - בדיקת היומנים:
kubectl logs -n $NAMESPACE -l app=apigee=synchronizer,env=$ENV_NAME,org=$ORG_NAME apigee-synchronizer
- (אופציונלי) אפשר לראות את הסטטוס של חשבונות השירות של Kubernetes בדף Kubernetes: Workloads Overview ב- Google Cloud console.