החלת ההגדרה על האשכול
כדי להתקין את Apigee hybrid באשכול:
- חשוב לוודא שאתם נמצאים בספרייה
hybrid-base-directory/hybrid-files.cd $HYBRID_FILES
- כדי לוודא שההקשר של
kubectlמוגדר בצורה נכונה, משתמשים בפקודה הבאה. ההקשר הנוכחי צריך להיות מוגדר לאשכול שבו פורסים את Apigee Hybrid.kubectl config current-context
התוצאה צריכה לכלול את השם של האשכול שבו אתם פורסים את Apigee hybrid. לדוגמה, ב-GKE, שם ההקשר הוא בדרך כלל בפורמט
gke_project-id_cluster-location_cluster-name, כמו בדוגמה הבאה:gke_my-project_us-central1_my-cluster
אם השם של אשכול השמות בהקשר לא תואם, הפקודה הבאה תקבל את
gcloudפרטי הכניסה של האשכול ותגדיר את ההקשרkubectl:אשכולות אזוריים
gcloud container clusters get-credentials $CLUSTER_NAME \ --region $CLUSTER_LOCATION \ --project $PROJECT_ID
אשכולות אזוריים
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $CLUSTER_LOCATION \ --project $PROJECT_ID
- בפלטפורמות Anthos בשרת פיזי, AWS on GKE, EKS ו-GKE on prem בלבד, מוודאים שהמשתנה
KUBECONFIGמוגדר באמצעות הפקודה הבאה:echo ${KUBECONFIG} - מבצעים אתחול של הרצת בדיקה. הרצת ניסיון מאפשרת לבדוק אם יש שגיאות לפני שמבצעים שינויים באשכול. מריצים את הפקודה
initעם הדגל--dry-runבאופן הבא:${APIGEECTL_HOME}/apigeectl init -f overrides/overrides.yaml --dry-run=client - אם אין שגיאות, מריצים את הפקודה
initבאופן הבא:${APIGEECTL_HOME}/apigeectl init -f overrides/overrides.yamlהפקודה
initמתקינה את שירותי הפריסה של Apigee Apigee Deployment Controller ו-Apigee Admission Webhook. - כדי לבדוק את סטטוס הפריסה, אפשר להשתמש בפקודות הבאות:
${APIGEECTL_HOME}/apigeectl check-ready -f overrides/overrides.yamlkubectl get pods -n apigee-system
kubectl get pods -n apigee
כשהפודים מוכנים, עוברים לשלב הבא.
- מבצעים התקנה של הרצה יבשה. מפעילים את הפקודה
applyעם הדגל--dry-run.${APIGEECTL_HOME}/apigeectl apply -f overrides/overrides.yaml --dry-run=client -
אם אין שגיאות, אפשר להחיל את
רכיבי זמן הריצה הספציפיים ל-Apigee על האשכול באמצעות הפקודה הבאה:
${APIGEECTL_HOME}/apigeectl apply -f overrides/overrides.yaml - כדי לבדוק את סטטוס הפריסה, מריצים את הפקודה הבאה:
${APIGEECTL_HOME}/apigeectl check-ready -f overrides/overrides.yamlחוזרים על השלב הזה עד שכל ה-pods מוכנים. יכול להיות שיעברו כמה דקות עד שה-pods יופעלו.
GKE עם Workload Identity
ב-Google Cloud יש אפשרות שנקראת Workload Identity, שמאפשרת לבצע אימות של רכיבי זמן ריצה היברידיים בהתקנות Apigee Hybrid ב-GKE.
חשבונות שירות ב-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
- בודקים שההגדרה הנוכחית של
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: יצירת אשכול, שלב 11 הוא הפעלת 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בתוצאות, מריצים את הפקודה הבאה כדי להפעיל את התכונה 'זהויות של עומסי עבודה' באשכול:אשכולות אזוריים
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
-
מפעילים את התכונה 'זהויות של עומסי עבודה' לכל מאגר צמתים באמצעות הפקודות הבאות. הפעולה הזו יכולה להימשך עד 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. - מריצים את הפקודות הבאות כדי לוודא שהתכונה 'זהויות של עומסי עבודה' מופעלת במאגרי הצמתים:
אשכולות אזוריים
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
כדי להפעיל את אימות הזהויות של עומסי עבודה בהתקנה היברידית, מבצעים את הפעולות הבאות:
-
לכל רכיב של 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
אימות זהות של עומס עבודה
- (אופציונלי) אפשר לראות את הסטטוס של חשבונות השירות של Kubernetes בדף Kubernetes: Workloads Overview ב- Google Cloud console.
- כדי לבדוק שוב את סטטוס הפריסה באמצעות
apigeectl check-ready:${APIGEECTL_HOME}/apigeectl check-ready -f ${HYBRID_FILES}/overrides/overrides.yaml