החלת ההגדרה על האשכול
כדי להתקין את 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
אם אתם משתמשים ב-Workload Identity ב-GKE, אתם צריכים לפעול לפי ההוראות האלה כדי לשייך את חשבונות השירות של Kubernetes שנוצרו על ידי apigeectl לחשבונות השירות של Google שיצרתם בשלב 4: יצירת חשבונות שירות ופרטי כניסה.
בנהלים האלה נעשה שימוש במשתני הסביבה הבאים. אפשר להגדיר את הערכים האלה במעטפת הפקודות או להחליף אותם בדוגמאות הקוד בערכים בפועל:
-
APIGEECTL_HOME: הספרייה שבה התקנתם אתapigeectl. -
CLUSTER_LOCATION: האזור או האזור של האשכול, לדוגמה:us-west1. -
CLUSTER_LOCATION: השם של האשכול. -
ENV_NAME: שם סביבת Apigee. -
NAMESPACE: מרחב השמות של Apigee. כברירת מחדל,apigee. -
HYBRID_FILES: ספריית הקבצים ההיברידית, לדוגמהhybrid-base-directory/hybrid-files. -
ORG_NAME: השם של הארגון שלכם ב-Apigee. -
PROJECT_ID: מזהה הפרויקט ב-Google Cloud.
בודקים את משתני הסביבה:
echo $APIGEECTL_HOMEecho $CLUSTER_LOCATIONecho $ENV_NAMEecho $HYBRID_FILESecho $NAMESPACEecho $ORG_NAMEecho $PROJECT_ID
מאתחלים את המשתנים שרוצים:
export APIGEECTL_HOME=hybrid-base-directory/apigeectlexport CLUSTER_LOCATION=my-cluster-locationexport ENV_NAME=my-environment-nameexport HYBRID_FILES=hybrid-base-directory/hybrid-filesexport NAMESPACE=apigeeexport ORG_NAME=$PROJECT_IDexport PROJECT_ID=my-project-id
- אופציונלי: מוחקים את קובצי המפתחות של חשבון השירות.
כשמריצים את Apigee hybrid ב-GKE, הדרך המקובלת היא ליצור ולהוריד מפתחות פרטיים (קובצי
.json) לכל אחד מחשבונות השירות. כשמשתמשים ב-Workload Identity, לא צריך להוריד מפתחות פרטיים של חשבונות שירות ולהוסיף אותם לאשכולות GKE.כדי למחוק את קובצי המפתחות, מריצים את הפקודה הבאה:
rm $HYBRID_FILES/service-accounts/*.json
- בודקים את ההגדרה הנוכחית של
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בתוצאות, מריצים את הפקודה הבאה כדי להפעיל את התכונה 'זהויות של עומסי עבודה' באשכול:אשכולות אזוריים
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
- מריצים את הפקודות הבאות כדי לוודא שהתכונה 'זהויות של עומסי עבודה' מופעלת במאגרי הצמתים:
אשכולות אזוריים
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אם הפלט לא מכיל שורה של
workloadMetadataConfig:, מפעילים את הזהות של עומס העבודה לכל מאגר צמתים באמצעות הפקודות הבאות. הפעולה הזו יכולה להימשך עד 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. - כדי לבדוק את השמות של חשבונות השירות של 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
Prod
לסביבות שאינן סביבות ייצור:
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
- מאמתים את חשבונות השירות באמצעות הפקודה הבאה:
kubectl get sa -n $NAMESPACE
הפלט אמור להיראות כך: חשבונות השירות של Kubernetes שמופיעים במודגש הם אלה שצריך להוסיף להם הערות עם חשבונות השירות של Google:
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 -
לכל רכיב של 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
לרכיב Cassandra יש שישה חשבונות שירות משויכים ב-Kubernetes:
apigee-cassandra-backupapigee-cassandra-restoreapigee-cassandra-schema-setupapigee-cassandra-schema-val(val= אימות)apigee-cassandra-user-setupapigee-datastore-default
Non-prod
בשלבים הבאים נעשה שימוש בשני משתני סביבה. תאפסו את הערכים של המשתנים האלה לפני כל קבוצת פקודות:
- GSA_NAME: השם של חשבון שירות של Google. אלה חשבונות השירות שיצרתם באמצעות הכלי
create-service-accountבשלב 4: יצירת חשבונות שירות. - KSA_NAME: השם של חשבון שירות ב-Kubernetes. אלה החשבונות שציינת למעלה באמצעות הפקודה
kubectl get sa -n $NAMESPACE.
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
Prod
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
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
Prod
- מגדירים את משתני הסביבה
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
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
Prod
- מגדירים את משתני הסביבה
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
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
Prod
- מגדירים את משתני הסביבה
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)
ה-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
Prod
- מגדירים את משתני הסביבה
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
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
Prod
- מגדירים את משתני הסביבה
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
- מגדירים את משתני הסביבה
- זמן ריצה
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
Prod
- מגדירים את משתני הסביבה
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
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
Prod
- מגדירים את משתני הסביבה
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)
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
Prod
- מגדירים את משתני הסביבה
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
- מגדירים את משתני הסביבה
- (אופציונלי) אפשר לראות את הסטטוס של חשבונות השירות של Kubernetes בדף Kubernetes: Workloads Overview ב- Google Cloud console.
- כדי לבדוק שוב את סטטוס הפריסה באמצעות
apigeectl check-ready:${APIGEECTL_HOME}/apigeectl check-ready -f ${HYBRID_FILES}/overrides/overrides.yaml
אם צריך, מגדירים את ההגדרות של gcloud:
gcloud config set project $PROJECT_ID