שלב 8: התקנת סביבת זמן ריצה היברידית

החלת ההגדרה על האשכול

כדי להתקין את Apigee hybrid באשכול:

  1. חשוב לוודא שאתם נמצאים בספרייה hybrid-base-directory/hybrid-files.
    cd $HYBRID_FILES
  2. כדי לוודא שההקשר של 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
  3. בפלטפורמות Anthos בשרת פיזי,‏ AWS on GKE,‏ EKS ו-GKE on prem בלבד, מוודאים שהמשתנה KUBECONFIG מוגדר באמצעות הפקודה הבאה:
    echo ${KUBECONFIG}
  4. מבצעים אתחול של הרצת בדיקה. הרצת ניסיון מאפשרת לבדוק אם יש שגיאות לפני שמבצעים שינויים באשכול. מריצים את הפקודה init עם הדגל --dry-run באופן הבא:
    ${APIGEECTL_HOME}/apigeectl init -f overrides/overrides.yaml --dry-run=client
  5. אם אין שגיאות, מריצים את הפקודה init באופן הבא:
    ${APIGEECTL_HOME}/apigeectl init -f overrides/overrides.yaml

    הפקודה init מתקינה את שירותי הפריסה של Apigee Apigee Deployment Controller ו-Apigee Admission Webhook.

  6. כדי לבדוק את סטטוס הפריסה, אפשר להשתמש בפקודות הבאות:
    ${APIGEECTL_HOME}/apigeectl check-ready -f overrides/overrides.yaml
    kubectl get pods -n apigee-system
    kubectl get pods -n apigee

    כשהפודים מוכנים, עוברים לשלב הבא.

  7. מבצעים התקנה של הרצה יבשה. מפעילים את הפקודה apply עם הדגל --dry-run.
    ${APIGEECTL_HOME}/apigeectl apply -f overrides/overrides.yaml --dry-run=client
  8. אם אין שגיאות, אפשר להחיל את רכיבי זמן הריצה הספציפיים ל-Apigee על האשכול באמצעות הפקודה הבאה:
    ${APIGEECTL_HOME}/apigeectl apply -f overrides/overrides.yaml
  9. כדי לבדוק את סטטוס הפריסה, מריצים את הפקודה הבאה:
    ${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_HOME
echo $CLUSTER_LOCATION
echo $ENV_NAME
echo $HYBRID_FILES
echo $NAMESPACE
echo $ORG_NAME
echo $PROJECT_ID

מאתחלים את המשתנים שרוצים:

export APIGEECTL_HOME=hybrid-base-directory/apigeectl
export CLUSTER_LOCATION=my-cluster-location
export ENV_NAME=my-environment-name
export HYBRID_FILES=hybrid-base-directory/hybrid-files
export NAMESPACE=apigee
export ORG_NAME=$PROJECT_ID
export PROJECT_ID=my-project-id
  1. אופציונלי: מוחקים את קובצי המפתחות של חשבון השירות.

    כשמריצים את Apigee hybrid ב-GKE, הדרך המקובלת היא ליצור ולהוריד מפתחות פרטיים (קובצי .json) לכל אחד מחשבונות השירות. כשמשתמשים ב-Workload Identity, לא צריך להוריד מפתחות פרטיים של חשבונות שירות ולהוסיף אותם לאשכולות GKE.

    כדי למחוק את קובצי המפתחות, מריצים את הפקודה הבאה:

    rm $HYBRID_FILES/service-accounts/*.json
  2. בודקים את ההגדרה הנוכחית של gcloud למזהה הפרויקט ב-Google Cloud באמצעות הפקודה הבאה:
    gcloud config get project
  3. אם צריך, מגדירים את ההגדרות של gcloud:

    gcloud config set project $PROJECT_ID
  4. יוצרים את חשבון השירות של apigee-cassandra-restore Kubernetes.

    כשמחילים את ההגדרה על ידי הרצת הפקודה apigeectl apply, הפקודה יוצרת את רוב חשבונות השירות של Kubernetes שנדרשים ל-Workload Identity.

    כדי ליצור את חשבון השירות apigee-cassandra-restore ב-Kubernetes, מריצים את הפקודה apigeectl apply עם הדגל --restore:

    $APIGEECTL_HOME/apigeectl apply -f $HYBRID_FILES/overrides/overrides.yaml --restore
  5. מוודאים ש-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
  6. מריצים את הפקודות הבאות כדי לוודא שהתכונה 'זהויות של עומסי עבודה' מופעלת במאגרי הצמתים:

    אשכולות אזוריים

    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.

  7. כדי לבדוק את השמות של חשבונות השירות של 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
    
  8. מאמתים את חשבונות השירות באמצעות הפקודה הבאה:
    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
        
  9. לכל רכיב של 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.
    • Cassandra

      לרכיב Cassandra יש שישה חשבונות שירות משויכים ב-Kubernetes:

      • apigee-cassandra-backup
      • apigee-cassandra-restore
      • apigee-cassandra-schema-setup
      • apigee-cassandra-schema-val (val = אימות)
      • apigee-cassandra-user-setup
      • apigee-datastore-default

      Non-prod

      בשלבים הבאים נעשה שימוש בשני משתני סביבה. תאפסו את הערכים של המשתנים האלה לפני כל קבוצת פקודות:

      • ‫GSA_NAME: השם של חשבון שירות של Google. אלה חשבונות השירות שיצרתם באמצעות הכלי create-service-account בשלב 4: יצירת חשבונות שירות.
      • ‫KSA_NAME: השם של חשבון שירות ב-Kubernetes. אלה החשבונות שציינת למעלה באמצעות הפקודה kubectl get sa -n $NAMESPACE.

      apigee-cassandra-backup חשבון שירות ב-Kubernetes

      1. מגדירים את משתני הסביבה KSA_NAME ו-GSA_NAME:
        GSA_NAME="apigee-non-prod"
        KSA_NAME="apigee-cassandra-backup"
      2. קישור תפקיד 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
      3. מוסיפים הערה לחשבון השירות:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. אימות ההערה:
        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

      1. מגדירים מחדש את משתנה הסביבה KSA_NAME:

        KSA_NAME="apigee-cassandra-restore"
      2. קישור תפקיד 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
      3. מוסיפים הערה לחשבון השירות:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. אימות ההערה:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      apigee-cassandra-schema-setup חשבון שירות ב-Kubernetes

      1. מגדירים מחדש את משתנה הסביבה KSA_NAME:

        KSA_NAME="apigee-cassandra-schema-setup-service-account-name-sa"
        לדוגמה: apigee-cassandra-schema-setup-hybrid-example-project-123abcd-sa.
      2. קישור תפקיד 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
      3. מוסיפים הערה לחשבון השירות:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. אימות ההערה:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      apigee-cassandra-schema-val חשבון שירות ב-Kubernetes

      1. מגדירים מחדש את משתנה הסביבה KSA_NAME:

        KSA_NAME="apigee-cassandra-schema-val-service-account-name"
        לדוגמה: apigee-cassandra-schema-val-hybrid-example-project-123abcd.
      2. קישור תפקיד 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
      3. מוסיפים הערה לחשבון השירות:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. אימות ההערה:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      apigee-cassandra-user-setup חשבון שירות ב-Kubernetes

      1. מגדירים מחדש את משתנה הסביבה KSA_NAME:

        KSA_NAME="apigee-cassandra-user-setup-service-account-name-sa"
        לדוגמה: apigee-cassandra-user-setup-hybrid-example-project-123abcd-sa.
      2. קישור תפקיד 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
      3. מוסיפים הערה לחשבון השירות:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. אימות ההערה:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      apigee-datastore-default-sa חשבון שירות ב-Kubernetes

      1. מגדירים מחדש את משתנה הסביבה KSA_NAME:

        KSA_NAME="apigee-datastore-default-sa"
      2. קישור תפקיד 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
      3. מוסיפים הערה לחשבון השירות:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. אימות ההערה:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Prod

      apigee-cassandra-backup חשבון שירות ב-Kubernetes

      1. מגדירים את משתני הסביבה KSA_NAME ו-GSA_NAME:
        GSA_NAME="apigee-cassandra"
        KSA_NAME="apigee-cassandra-backup"
      2. קישור תפקיד 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
      3. מוסיפים הערה לחשבון השירות:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. אימות ההערה:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
      5. הפלט צריך לכלול שורה עם תיאור ההערה, בדומה ל:

        Annotations:         iam.gke.io/gcp-service-account: apigee-cassandra@my-project-id.iam.gserviceaccount.com
      6. אימות ההערה:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      apigee-cassandra-restore חשבון שירות ב-Kubernetes

      1. מגדירים מחדש את משתנה הסביבה KSA_NAME:

        KSA_NAME="apigee-cassandra-restore"
      2. קישור תפקיד 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
      3. מוסיפים הערה לחשבון השירות:
        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

      1. מגדירים מחדש את משתנה הסביבה KSA_NAME:

        KSA_NAME="apigee-cassandra-schema-setup-service-account-name-sa"
        לדוגמה: apigee-cassandra-schema-setup-hybrid-example-project-123abcd-sa.
      2. קישור תפקיד 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
      3. מוסיפים הערה לחשבון השירות:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. אימות ההערה:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      apigee-cassandra-schema-val חשבון שירות ב-Kubernetes

      1. מגדירים מחדש את משתנה הסביבה KSA_NAME:

        KSA_NAME="apigee-cassandra-schema-val-service-account-name"
        לדוגמה: apigee-cassandra-schema-val-hybrid-example-project-123abcd.
      2. קישור תפקיד 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
      3. מוסיפים הערה לחשבון השירות:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. אימות ההערה:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      apigee-cassandra-user-setup חשבון שירות ב-Kubernetes

      1. מגדירים מחדש את משתנה הסביבה KSA_NAME:

        KSA_NAME="apigee-cassandra-user-setup-service-account-name-sa"
        לדוגמה: apigee-cassandra-user-setup-hybrid-example-project-123abcd-sa.
      2. קישור תפקיד 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
      3. מוסיפים הערה לחשבון השירות:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. אימות ההערה:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      apigee-datastore-default-sa חשבון שירות ב-Kubernetes

      1. מגדירים מחדש את משתנה הסביבה KSA_NAME:

        KSA_NAME="apigee-datastore-default-sa"
      2. קישור תפקיד 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
      3. מוסיפים הערה לחשבון השירות:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. אימות ההערה:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • ‫Apigee Connect

      Non-prod

      1. מגדירים את משתנה הסביבה KSA_NAME:

        KSA_NAME="apigee-connect-agent-service-account-name-sa"
        לדוגמה: apigee-connect-agent-hybrid-example-project-123abcd-sa.
      2. קישור תפקיד 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
      3. מוסיפים הערה לחשבון השירות:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. אימות ההערה:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Prod

      1. מגדירים את משתני הסביבה 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.
      2. קישור תפקיד 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
      3. מוסיפים הערה לחשבון השירות:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. אימות ההערה:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • MART

      Non-prod

      1. מגדירים את משתנה הסביבה KSA_NAME:

        KSA_NAME="apigee-mart-service-account-name-sa"
        לדוגמה: apigee-mart-hybrid-example-project-123abcd-sa.
      2. קישור תפקיד 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
      3. מוסיפים הערה לחשבון השירות:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. אימות ההערה:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Prod

      1. מגדירים את משתני הסביבה KSA_NAME ו-GSA_NAME:

        GSA_NAME="apigee-mart"
        KSA_NAME="apigee-mart-service-account-name-sa"
        לדוגמה: apigee-mart-hybrid-example-project-123abcd-sa.
      2. קישור תפקיד 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
      3. מוסיפים הערה לחשבון השירות:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. אימות ההערה:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • מדדים של Apigee

      Non-prod

      1. מגדירים את משתני הסביבה KSA_NAME:

        KSA_NAME="apigee-metrics-sa"
      2. קישור תפקיד 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
      3. מוסיפים הערה לחשבון השירות:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. אימות ההערה:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Prod

      1. מגדירים את משתני הסביבה KSA_NAME ו-GSA_NAME:

        GSA_NAME="apigee-metrics"
        KSA_NAME="apigee-metrics-sa"
      2. קישור תפקיד 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
      3. מוסיפים הערה לחשבון השירות:
        kubectl annotate serviceaccount \
        --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. אימות ההערה:
        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

      1. מגדירים את משתני הסביבה KSA_NAME:

        KSA_NAME="apigee-udca-service-account-name-sa"
        לדוגמה: apigee-udca-hybrid-example-project-123abcd-sa.
      2. קישור תפקיד 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
      3. מוסיפים הערה לחשבון השירות:
          kubectl annotate serviceaccount \
            --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. אימות ההערה:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Prod

      1. מגדירים את משתני הסביבה KSA_NAME ו-GSA_NAME:

        GSA_NAME="apigee-udca"
        KSA_NAME="apigee-udca-service-account-name-sa"
        לדוגמה: apigee-udca-hybrid-example-project-123abcd-sa.
      2. קישור תפקיד 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
      3. מוסיפים הערה לחשבון השירות:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. אימות ההערה:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • ‫Apigee Watcher

      Non-prod

      1. מגדירים את משתני הסביבה KSA_NAME:

        KSA_NAME="apigee-watcher-service-account-name-sa"
        לדוגמה: apigee-watcher-hybrid-example-project-123abcd-sa.
      2. קישור תפקיד 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
      3. מוסיפים הערה לחשבון השירות:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. אימות ההערה:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Prod

      1. מגדירים את משתני הסביבה KSA_NAME ו-GSA_NAME:

        GSA_NAME="apigee-watcher"
        KSA_NAME="apigee-watcher-service-account-name-sa"
        לדוגמה: apigee-watcher-hybrid-example-project-123abcd-sa.
      2. קישור תפקיד 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
      3. מוסיפים הערה לחשבון השירות:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. אימות ההערה:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • זמן ריצה

      Non-prod

      1. מגדירים את משתני הסביבה KSA_NAME:

        KSA_NAME="apigee-runtime-env-level-service-account-name-sa"
        לדוגמה: apigee-runtime-hybrid-example-project-example-env-234bcde-sa.
      2. קישור תפקיד 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
      3. מוסיפים הערה לחשבון השירות:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. אימות ההערה:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Prod

      1. מגדירים את משתני הסביבה 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.
      2. קישור תפקיד 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
      3. מוסיפים הערה לחשבון השירות:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. אימות ההערה:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • Synchronizer

      Non-prod

      1. מגדירים את משתני הסביבה KSA_NAME:

        KSA_NAME="apigee-synchronizer-env-level-service-account-name-sa"
        לדוגמה: apigee-synchronizer-hybrid-example-project-example-env-234bcde-sa.
      2. קישור תפקיד 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
      3. מוסיפים הערה לחשבון השירות:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. אימות ההערה:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Prod

      1. מגדירים את משתני הסביבה 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.
      2. קישור תפקיד 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
      3. מוסיפים הערה לחשבון השירות:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. אימות ההערה:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • UDCA (env-level)

      Non-prod

      1. מגדירים את משתני הסביבה KSA_NAME:

        KSA_NAME="apigee-udca-env-level-service-account-name-sa"
        לדוגמה: apigee-udca-hybrid-example-project-example-env-234bcde-sa.
      2. קישור תפקיד 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
      3. מוסיפים הערה לחשבון השירות:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. אימות ההערה:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Prod

      1. מגדירים את משתני הסביבה 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.
      2. קישור תפקיד 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
      3. מוסיפים הערה לחשבון השירות:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. אימות ההערה:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
  10. (אופציונלי) אפשר לראות את הסטטוס של חשבונות השירות של Kubernetes בדף Kubernetes: Workloads Overview ב- Google Cloud console.

    כניסה לדף Workloads

  11. כדי לבדוק שוב את סטטוס הפריסה באמצעות apigeectl check-ready:
    ${APIGEECTL_HOME}/apigeectl check-ready -f ${HYBRID_FILES}/overrides/overrides.yaml
1 2 3 4 5 6 7 8 (NEXT) Step 9: Expose Apigee ingress 10