שלב 11: התקנת Apigee hybrid באמצעות Helm

התקנת רכיבי זמן הריצה של Apigee Hybrid

בשלב הזה תשתמשו ב-Helm כדי להתקין את הרכיבים הבאים של Apigee Hybrid:

  • מפעיל Apigee
  • מאגר נתונים של Apigee
  • טלמטריית Apigee
  • Apigee Redis
  • מנהל תעבורת הנתונים הנכנסת ב-Apigee
  • ארגון Apigee
  • הסביבות שלכם ב-Apigee

מתקינים את התרשימים לכל סביבה בנפרד. חשוב להתקין את הרכיבים בסדר הנכון.

הערות לפני ההתקנה

  1. אם עדיין לא התקנתם את Helm בגרסה 3.14.2 ואילך, פועלים לפי ההוראות במאמר התקנת Helm.
  2. ב-Apigee Hybrid נעשה שימוש במעקות בטיחות של Helm כדי לאמת את ההגדרות לפני התקנה או שדרוג של תרשים. יכול להיות שיופיע מידע ספציפי למעקה הבטיחות בפלט של כל אחת מהפקודות בקטע הזה, לדוגמה:

    # Source: apigee-operator/templates/apigee-operators-guardrails.yaml
    apiVersion: v1
    kind: Pod
    metadata:
      name: apigee-hybrid-helm-guardrail-operator
      namespace:  APIGEE_NAMESPACE
      annotations:
        helm.sh/hook: pre-install,pre-upgrade
        helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded
      labels:
        app: apigee-hybrid-helm-guardrail
    

    אם אחת מהפקודות של helm upgrade נכשלת, אפשר להשתמש בפלט של מעקות הבטיחות כדי לאבחן את הסיבה. אבחון בעיות במעקות בטיחות

  3. לפני שמריצים את פקודות השדרוג או ההתקנה של Helm, משתמשים בתכונה "הרצה ללא שמירה" של Helm על ידי הוספת --dry-run=server בסוף הפקודה. אפשר לעיין ב-helm install --h כדי לראות רשימה של פקודות, אפשרויות ושימושים נתמכים.

שלבי ההתקנה

בוחרים את הוראות ההתקנה של סוג האימות של חשבון השירות בהתקנה ההיברידית:

סודות של Kubernetes

  1. אם לא, עוברים לספרייה APIGEE_HELM_CHARTS_HOME. מריצים את הפקודות הבאות מהספרייה הזו.
  2. התקנת Apigee Operator/Controller:
    1. הרצת בדיקה:
      helm upgrade operator apigee-operator/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. מתקינים את התרשים:
      helm upgrade operator apigee-operator/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. אימות ההתקנה של Apigee Operator:

      helm ls -n APIGEE_NAMESPACE
      
      NAME       NAMESPACE       REVISION   UPDATED                                STATUS     CHART                                       APP VERSION
      operator   apigee   3          2025-06-26 00:42:44.492009 -0800 PST   deployed   apigee-operator-1.15.9   1.15.9
      
    4. כדי לוודא שהיא פועלת, בודקים את הזמינות שלה:

      kubectl -n APIGEE_NAMESPACE get deploy apigee-controller-manager
      
      NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
      apigee-controller-manager   1/1     1            1           34s
      
  3. התקנת מאגר הנתונים של Apigee:

    1. הרצת בדיקה:
      helm upgrade datastore apigee-datastore/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. מתקינים את התרשים:

      helm upgrade datastore apigee-datastore/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. לפני שממשיכים לשלב הבא, בודקים את המצב של apigeedatastore כדי לוודא שהיא פועלת:

      kubectl -n APIGEE_NAMESPACE get apigeedatastore default
      
      NAME      STATE       AGE
      default   running    51s
      
  4. מתקינים את הטלמטריה של Apigee:

    1. הרצת בדיקה:
      helm upgrade telemetry apigee-telemetry/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. מתקינים את התרשים:

      helm upgrade telemetry apigee-telemetry/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. כדי לוודא שהיא פועלת, בודקים את המצב שלה:

      kubectl -n APIGEE_NAMESPACE get apigeetelemetry apigee-telemetry
      
      NAME               STATE     AGE
      apigee-telemetry   running   55s
      
  5. מתקינים את Apigee Redis:

    1. הרצת בדיקה:

      helm upgrade redis apigee-redis/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. מתקינים את התרשים:

      helm upgrade redis apigee-redis/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. כדי לוודא שהיא פועלת, בודקים את המצב שלה:

      kubectl -n APIGEE_NAMESPACE get apigeeredis default
      
      NAME      STATE     AGE
      default   running   79s
      
  6. מתקינים את מנהל ה-ingress של Apigee:

    1. הרצת בדיקה:

      helm upgrade ingress-manager apigee-ingress-manager/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. מתקינים את התרשים:

      helm upgrade ingress-manager apigee-ingress-manager/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. כדי לוודא שהיא פועלת, בודקים את הזמינות שלה:

      kubectl -n APIGEE_NAMESPACE get deployment apigee-ingressgateway-manager
      
      NAME                            READY   UP-TO-DATE   AVAILABLE   AGE
      apigee-ingressgateway-manager   2/2     2            2           16s
      
  7. מתקינים את הארגון ב-Apigee. אם הגדרתם את משתנה הסביבה $ORG_NAME במעטפת, אתם יכולים להשתמש בו בפקודות הבאות:

    1. הרצת בדיקה:

      helm upgrade $ORG_NAME apigee-org/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. מתקינים את התרשים:

      helm upgrade $ORG_NAME apigee-org/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. כדי לוודא שהיא פועלת, בודקים את המצב של הארגון הרלוונטי:

      kubectl -n APIGEE_NAMESPACE get apigeeorg
      
      NAME                      STATE     AGE
      my-project-123abcd        running   4m18s
      
  8. מתקינים את הסביבה.

    צריך להתקין סביבה אחת בכל פעם. מציינים את הסביבה באמצעות --set env=ENV_NAME. אם הגדרתם את משתנה הסביבה $ENV_NAME במעטפת, אתם יכולים להשתמש בו בפקודות הבאות:

    1. הרצת בדיקה:

      helm upgrade ENV_RELEASE_NAME apigee-env/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        --set env=$ENV_NAME \
        -f overrides.yaml \
        --dry-run=server
      

        ‫ENV_RELEASE_NAME הוא שם שמשמש למעקב אחרי ההתקנה והשדרוגים של התרשים apigee-env. השם הזה חייב להיות ייחודי ושונה משמות אחרים של גרסאות Helm בהתקנה. בדרך כלל זהה ל-ENV_NAME. עם זאת, אם לסביבה יש שם זהה לזה של קבוצת הסביבות, צריך להשתמש בשמות שונים לגרסאות של הסביבה ושל קבוצת הסביבות, לדוגמה dev-env-release ו-dev-envgroup-release. מידע נוסף על גרסאות ב-Helm זמין במאמר Three big concepts במסמכי התיעוד של Helm.

    2. מתקינים את התרשים:

      helm upgrade ENV_RELEASE_NAME apigee-env/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        --set env=$ENV_NAME \
        -f overrides.yaml
      
    3. כדי לוודא שהיא פועלת, בודקים את המצב של הסביבה הרלוונטית:

      kubectl -n APIGEE_NAMESPACE get apigeeenv
      
      NAME                       STATE     AGE   GATEWAYTYPE
      apigee-my-project-my-env   running   3m1s
      
  9. מתקינים את קבוצות הסביבה (virtualhosts).
    1. צריך להתקין קבוצת סביבות (מארח וירטואלי) אחת בכל פעם. מציינים את קבוצת הסביבות באמצעות --set envgroup=ENV_GROUP. אם הגדרתם את משתנה הסביבה $ENV_GROUP במעטפת, אתם יכולים להשתמש בו בפקודות הבאות. חוזרים על הפקודות הבאות לכל קבוצת סביבות שמוזכרת בקובץ overrides.yaml:

      הרצת בדיקה:

      helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        --set envgroup=$ENV_GROUP \
        -f overrides.yaml \
        --dry-run=server
      

        ‫ENV_GROUP_RELEASE_NAME הוא שם שמשמש למעקב אחרי ההתקנה והשדרוגים של התרשים apigee-virtualhosts. השם הזה חייב להיות ייחודי ושונה משמות אחרים של גרסאות Helm בהתקנה. בדרך כלל זהה ל-ENV_GROUP. עם זאת, אם לקבוצת הסביבות יש שם זהה לשם של סביבה בהתקנה, צריך להשתמש בשמות שונים לגרסאות של קבוצת הסביבות והסביבה, למשל dev-envgroup-release ו-dev-env-release. מידע נוסף על גרסאות ב-Helm זמין במאמר Three big concepts במאמרי העזרה של Helm.

    2. מתקינים את התרשים:

      helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        --set envgroup=$ENV_GROUP \
        -f overrides.yaml
      
    3. בודקים את המצב של ApigeeRoute‏ (AR).

      התקנת virtualhosts יוצרת את ApigeeRouteConfig‏ (ARC), שיוצר באופן פנימי את ApigeeRoute‏ (AR) אחרי שה-Apigee watcher שולף פרטים שקשורים לקבוצת הסביבות ממישור הבקרה. לכן, צריך לבדוק שהמצב של ה-AR התואם הוא "פועל":

      kubectl -n APIGEE_NAMESPACE get arc
      
      NAME                                STATE   AGE
      apigee-org1-dev-egroup                       2m
      
      kubectl -n APIGEE_NAMESPACE get ar
      
      NAME                                                        STATE     AGE
      apigee-ingressgateway-internal-chaining-my-project-123abcd   running   19m
      my-project-myenvgroup-000-321dcba                            running   2m30s
      

קובצי JSON

  1. אם לא, עוברים לספרייה APIGEE_HELM_CHARTS_HOME. מריצים את הפקודות הבאות מהספרייה הזו.
  2. התקנת Apigee Operator/Controller:
    1. הרצת בדיקה:
      helm upgrade operator apigee-operator/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. מתקינים את התרשים:
      helm upgrade operator apigee-operator/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. אימות ההתקנה של Apigee Operator:

      helm ls -n APIGEE_NAMESPACE
      
      NAME       NAMESPACE       REVISION   UPDATED                                STATUS     CHART                                       APP VERSION
      operator   apigee   3          2025-06-26 00:42:44.492009 -0800 PST   deployed   apigee-operator-1.15.9   1.15.9
      
    4. כדי לוודא שהיא פועלת, בודקים את הזמינות שלה:

      kubectl -n APIGEE_NAMESPACE get deploy apigee-controller-manager
      
      NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
      apigee-controller-manager   1/1     1            1           34s
      
  3. התקנת מאגר הנתונים של Apigee:

    1. הרצת בדיקה:
      helm upgrade datastore apigee-datastore/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. מתקינים את התרשים:

      helm upgrade datastore apigee-datastore/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. לפני שממשיכים לשלב הבא, בודקים את המצב של apigeedatastore כדי לוודא שהיא פועלת:

      kubectl -n APIGEE_NAMESPACE get apigeedatastore default
      
      NAME      STATE       AGE
      default   running    51s
      
  4. מתקינים את הטלמטריה של Apigee:

    1. הרצת בדיקה:
      helm upgrade telemetry apigee-telemetry/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. מתקינים את התרשים:

      helm upgrade telemetry apigee-telemetry/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. כדי לוודא שהיא פועלת, בודקים את המצב שלה:

      kubectl -n APIGEE_NAMESPACE get apigeetelemetry apigee-telemetry
      
      NAME               STATE     AGE
      apigee-telemetry   running   55s
      
  5. מתקינים את Apigee Redis:

    1. הרצת בדיקה:

      helm upgrade redis apigee-redis/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. מתקינים את התרשים:

      helm upgrade redis apigee-redis/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. כדי לוודא שהיא פועלת, בודקים את המצב שלה:

      kubectl -n APIGEE_NAMESPACE get apigeeredis default
      
      NAME      STATE     AGE
      default   running   79s
      
  6. מתקינים את מנהל ה-ingress של Apigee:

    1. הרצת בדיקה:

      helm upgrade ingress-manager apigee-ingress-manager/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. מתקינים את התרשים:

      helm upgrade ingress-manager apigee-ingress-manager/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. כדי לוודא שהיא פועלת, בודקים את הזמינות שלה:

      kubectl -n APIGEE_NAMESPACE get deployment apigee-ingressgateway-manager
      
      NAME                            READY   UP-TO-DATE   AVAILABLE   AGE
      apigee-ingressgateway-manager   2/2     2            2           16s
      
  7. מתקינים את הארגון ב-Apigee. אם הגדרתם את משתנה הסביבה $ORG_NAME במעטפת, אתם יכולים להשתמש בו בפקודות הבאות:

    1. הרצת בדיקה:

      helm upgrade $ORG_NAME apigee-org/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. מתקינים את התרשים:

      helm upgrade $ORG_NAME apigee-org/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. כדי לוודא שהיא פועלת, בודקים את המצב של הארגון הרלוונטי:

      kubectl -n APIGEE_NAMESPACE get apigeeorg
      
      NAME                      STATE     AGE
      my-project-123abcd        running   4m18s
      
  8. מתקינים את הסביבה.

    צריך להתקין סביבה אחת בכל פעם. מציינים את הסביבה באמצעות --set env=ENV_NAME. אם הגדרתם את משתנה הסביבה $ENV_NAME במעטפת, אתם יכולים להשתמש בו בפקודות הבאות:

    1. הרצת בדיקה:

      helm upgrade ENV_RELEASE_NAME apigee-env/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        --set env=$ENV_NAME \
        -f overrides.yaml \
        --dry-run=server
      

        ‫ENV_RELEASE_NAME הוא שם שמשמש למעקב אחרי ההתקנה והשדרוגים של התרשים apigee-env. השם הזה חייב להיות ייחודי ושונה משמות אחרים של גרסאות Helm בהתקנה. בדרך כלל זהה ל-ENV_NAME. עם זאת, אם לסביבה יש שם זהה לזה של קבוצת הסביבות, צריך להשתמש בשמות שונים לגרסאות של הסביבה ושל קבוצת הסביבות, לדוגמה dev-env-release ו-dev-envgroup-release. מידע נוסף על גרסאות ב-Helm זמין במאמר Three big concepts במסמכי התיעוד של Helm.

    2. מתקינים את התרשים:

      helm upgrade ENV_RELEASE_NAME apigee-env/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        --set env=$ENV_NAME \
        -f overrides.yaml
      
    3. כדי לוודא שהיא פועלת, בודקים את המצב של הסביבה הרלוונטית:

      kubectl -n APIGEE_NAMESPACE get apigeeenv
      
      NAME                       STATE     AGE   GATEWAYTYPE
      apigee-my-project-my-env   running   3m1s
      
  9. מתקינים את קבוצות הסביבה (virtualhosts).
    1. צריך להתקין קבוצת סביבות (מארח וירטואלי) אחת בכל פעם. מציינים את קבוצת הסביבות באמצעות --set envgroup=ENV_GROUP. אם הגדרתם את משתנה הסביבה $ENV_GROUP במעטפת, אתם יכולים להשתמש בו בפקודות הבאות. חוזרים על הפקודות הבאות לכל קבוצת סביבות שמוזכרת בקובץ overrides.yaml:

      הרצת בדיקה:

      helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        --set envgroup=$ENV_GROUP \
        -f overrides.yaml \
        --dry-run=server
      

        ‫ENV_GROUP_RELEASE_NAME הוא שם שמשמש למעקב אחרי ההתקנה והשדרוגים של התרשים apigee-virtualhosts. השם הזה חייב להיות ייחודי ושונה משמות אחרים של גרסאות Helm בהתקנה. בדרך כלל זהה ל-ENV_GROUP. עם זאת, אם לקבוצת הסביבות יש שם זהה לשם של סביבה בהתקנה, צריך להשתמש בשמות שונים לגרסאות של קבוצת הסביבות והסביבה, למשל dev-envgroup-release ו-dev-env-release. מידע נוסף על גרסאות ב-Helm זמין במאמר Three big concepts במסמכי התיעוד של Helm.

    2. מתקינים את התרשים:

      helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        --set envgroup=$ENV_GROUP \
        -f overrides.yaml
      
    3. בודקים את המצב של ApigeeRoute‏ (AR).

      התקנת virtualhosts יוצרת את ApigeeRouteConfig‏ (ARC), שיוצר באופן פנימי את ApigeeRoute‏ (AR) אחרי שה-Apigee watcher שולף פרטים שקשורים לקבוצת הסביבות ממישור הבקרה. לכן, צריך לבדוק שהמצב של ה-AR התואם הוא "פועל":

      kubectl -n APIGEE_NAMESPACE get arc
      
      NAME                                STATE   AGE
      apigee-org1-dev-egroup                       2m
      
      kubectl -n APIGEE_NAMESPACE get ar
      
      NAME                                                        STATE     AGE
      apigee-ingressgateway-internal-chaining-my-project-123abcd   running   19m
      my-project-myenvgroup-000-321dcba                            running   2m30s
      

Vault

  1. אם לא, עוברים לספרייה APIGEE_HELM_CHARTS_HOME. מריצים את הפקודות הבאות מהספרייה הזו.
  2. התקנת Apigee Operator/Controller:
    1. הרצת בדיקה:
      helm upgrade operator apigee-operator/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. מתקינים את התרשים:
      helm upgrade operator apigee-operator/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. אימות ההתקנה של Apigee Operator:

      helm ls -n APIGEE_NAMESPACE
      
      NAME       NAMESPACE       REVISION   UPDATED                                STATUS     CHART                                       APP VERSION
      operator   apigee   3          2025-06-26 00:42:44.492009 -0800 PST   deployed   apigee-operator-1.15.9   1.15.9
      
    4. כדי לוודא שהיא פועלת, בודקים את הזמינות שלה:

      kubectl -n APIGEE_NAMESPACE get deploy apigee-controller-manager
      
      NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
      apigee-controller-manager   1/1     1            1           34s
      
  3. התקנת מאגר הנתונים של Apigee:

    1. הרצת בדיקה:
      helm upgrade datastore apigee-datastore/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. מתקינים את התרשים:

      helm upgrade datastore apigee-datastore/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. לפני שממשיכים לשלב הבא, בודקים את המצב של apigeedatastore כדי לוודא שהיא פועלת:

      kubectl -n APIGEE_NAMESPACE get apigeedatastore default
      
      NAME      STATE       AGE
      default   running    51s
      
  4. מתקינים את הטלמטריה של Apigee:

    1. הרצת בדיקה:
      helm upgrade telemetry apigee-telemetry/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. מתקינים את התרשים:

      helm upgrade telemetry apigee-telemetry/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. כדי לוודא שהיא פועלת, בודקים את המצב שלה:

      kubectl -n APIGEE_NAMESPACE get apigeetelemetry apigee-telemetry
      
      NAME               STATE     AGE
      apigee-telemetry   running   55s
      
  5. מתקינים את Apigee Redis:

    1. הרצת בדיקה:

      helm upgrade redis apigee-redis/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. מתקינים את התרשים:

      helm upgrade redis apigee-redis/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. כדי לוודא שהיא פועלת, בודקים את המצב שלה:

      kubectl -n APIGEE_NAMESPACE get apigeeredis default
      
      NAME      STATE     AGE
      default   running   79s
      
  6. מתקינים את מנהל ה-ingress של Apigee:

    1. הרצת בדיקה:

      helm upgrade ingress-manager apigee-ingress-manager/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. מתקינים את התרשים:

      helm upgrade ingress-manager apigee-ingress-manager/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. כדי לוודא שהיא פועלת, בודקים את הזמינות שלה:

      kubectl -n APIGEE_NAMESPACE get deployment apigee-ingressgateway-manager
      
      NAME                            READY   UP-TO-DATE   AVAILABLE   AGE
      apigee-ingressgateway-manager   2/2     2            2           16s
      
  7. מתקינים את הארגון ב-Apigee. אם הגדרתם את משתנה הסביבה $ORG_NAME במעטפת, אתם יכולים להשתמש בו בפקודות הבאות:

    1. הרצת בדיקה:

      helm upgrade $ORG_NAME apigee-org/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. מתקינים את התרשים:

      helm upgrade $ORG_NAME apigee-org/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. כדי לוודא שהיא פועלת, בודקים את המצב של הארגון הרלוונטי:

      kubectl -n APIGEE_NAMESPACE get apigeeorg
      
      NAME                      STATE     AGE
      my-project-123abcd        running   4m18s
      
  8. מתקינים את הסביבה.

    צריך להתקין סביבה אחת בכל פעם. מציינים את הסביבה באמצעות --set env=ENV_NAME. אם הגדרתם את משתנה הסביבה $ENV_NAME במעטפת, אתם יכולים להשתמש בו בפקודות הבאות:

    1. הרצת בדיקה:

      helm upgrade ENV_RELEASE_NAME apigee-env/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        --set env=$ENV_NAME \
        -f overrides.yaml \
        --dry-run=server
      

        ‫ENV_RELEASE_NAME הוא שם שמשמש למעקב אחרי ההתקנה והשדרוגים של התרשים apigee-env. השם הזה חייב להיות ייחודי ושונה משמות אחרים של גרסאות Helm בהתקנה. בדרך כלל זהה ל-ENV_NAME. עם זאת, אם לסביבה יש שם זהה לזה של קבוצת הסביבות, צריך להשתמש בשמות שונים לגרסאות של הסביבה ושל קבוצת הסביבות, לדוגמה dev-env-release ו-dev-envgroup-release. מידע נוסף על גרסאות ב-Helm זמין במאמר Three big concepts במסמכי התיעוד של Helm.

    2. מתקינים את התרשים:

      helm upgrade ENV_RELEASE_NAME apigee-env/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        --set env=$ENV_NAME \
        -f overrides.yaml
      
    3. כדי לוודא שהיא פועלת, בודקים את המצב של הסביבה הרלוונטית:

      kubectl -n APIGEE_NAMESPACE get apigeeenv
      
      NAME                       STATE     AGE   GATEWAYTYPE
      apigee-my-project-my-env   running   3m1s
      
  9. מתקינים את קבוצות הסביבה (virtualhosts).
    1. צריך להתקין קבוצת סביבות (מארח וירטואלי) אחת בכל פעם. מציינים את קבוצת הסביבות באמצעות --set envgroup=ENV_GROUP. אם הגדרתם את משתנה הסביבה $ENV_GROUP במעטפת, אתם יכולים להשתמש בו בפקודות הבאות. חוזרים על הפקודות הבאות לכל קבוצת סביבות שמוזכרת בקובץ overrides.yaml:

      הרצת בדיקה:

      helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        --set envgroup=$ENV_GROUP \
        -f overrides.yaml \
        --dry-run=server
      

        ‫ENV_GROUP_RELEASE_NAME הוא שם שמשמש למעקב אחרי ההתקנה והשדרוגים של התרשים apigee-virtualhosts. השם הזה חייב להיות ייחודי ושונה משמות אחרים של גרסאות Helm בהתקנה. בדרך כלל זהה ל-ENV_GROUP. עם זאת, אם לקבוצת הסביבות יש שם זהה לשם של סביבה בהתקנה, צריך להשתמש בשמות שונים לגרסאות של קבוצת הסביבות והסביבה, למשל dev-envgroup-release ו-dev-env-release. מידע נוסף על גרסאות ב-Helm זמין במאמר Three big concepts במסמכי התיעוד של Helm.

    2. מתקינים את התרשים:

      helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        --set envgroup=$ENV_GROUP \
        -f overrides.yaml
      
    3. בודקים את המצב של ApigeeRoute‏ (AR).

      התקנת virtualhosts יוצרת את ApigeeRouteConfig‏ (ARC), שיוצר באופן פנימי את ApigeeRoute‏ (AR) אחרי שה-Apigee watcher שולף פרטים שקשורים לקבוצת הסביבות ממישור הבקרה. לכן, צריך לבדוק שהמצב של ה-AR התואם הוא "פועל":

      kubectl -n APIGEE_NAMESPACE get arc
      
      NAME                                STATE   AGE
      apigee-org1-dev-egroup                       2m
      
      kubectl -n APIGEE_NAMESPACE get ar
      
      NAME                                                        STATE     AGE
      apigee-ingressgateway-internal-chaining-my-project-123abcd   running   19m
      my-project-myenvgroup-000-321dcba                            running   2m30s
      

‫WIF ל-GKE

  1. אם לא, עוברים לספרייה APIGEE_HELM_CHARTS_HOME. מריצים את הפקודות הבאות מהספרייה הזו.
  2. התקנת Apigee Operator/Controller:
    1. הרצת בדיקה:
      helm upgrade operator apigee-operator/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. מתקינים את התרשים:
      helm upgrade operator apigee-operator/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. אימות ההתקנה של Apigee Operator:

      helm ls -n APIGEE_NAMESPACE
      
      NAME       NAMESPACE       REVISION   UPDATED                                STATUS     CHART                                       APP VERSION
      operator   apigee   3          2025-06-26 00:42:44.492009 -0800 PST   deployed   apigee-operator-1.15.9   1.15.9
      
    4. כדי לוודא שהיא פועלת, בודקים את הזמינות שלה:

      kubectl -n APIGEE_NAMESPACE get deploy apigee-controller-manager
      
      NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
      apigee-controller-manager   1/1     1            1           34s
      
  3. התקנת מאגר הנתונים של Apigee:

    1. הרצת בדיקה:
      helm upgrade datastore apigee-datastore/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. מגדירים את הקישורים של חשבון השירות ל-Cassandra בשביל איחוד זהויות של עומסי עבודה ל-GKE:

      הפלט מהפקודה helm upgrade אמור להכיל פקודות בקטע NOTES. מבצעים את הפקודות האלה כדי להגדיר את הקישורים של חשבון השירות. אמורים להיות שתי פקודות בפורמט הבא:

      ייצור

      gcloud iam service-accounts add-iam-policy-binding CASSANDRA_SERVICE_ACCOUNT_EMAIL \
        --role roles/iam.workloadIdentityUser \
        --member "serviceAccount:PROJECT_ID.svc.id.goog[apigee/apigee-cassandra-default]" \
        --project PROJECT_ID
      

      לא בסביבת ייצור

      gcloud iam service-accounts add-iam-policy-binding NON_PROD_SERVICE_ACCOUNT_EMAIL \
        --role roles/iam.workloadIdentityUser \
        --member "serviceAccount:PROJECT_ID.svc.id.goog[apigee/apigee-cassandra-default]" \
        --project PROJECT_ID
      

      וגם:

      ייצור

      kubectl annotate serviceaccount apigee-cassandra-default \
        iam.gke.io/gcp-service-account=CASSANDRA_SERVICE_ACCOUNT_EMAIL \
        --namespace APIGEE_NAMESPACE
      

      לא בסביבת ייצור

      kubectl annotate serviceaccount apigee-cassandra-default \
        iam.gke.io/gcp-service-account=NON_PROD_SERVICE_ACCOUNT_EMAIL \
        --namespace APIGEE_NAMESPACE
      

      לדוגמה:

      ייצור

      NOTES:
      For Cassandra backup GKE Workload Identity, please make sure to add the following membership to the IAM policy binding using the respective kubernetes SA (KSA).
        gcloud iam service-accounts add-iam-policy-binding apigee-cassandra@my-project.iam.gserviceaccount.com \
              --role roles/iam.workloadIdentityUser \
              --member "serviceAccount:my-project.svc.id.goog[apigee/apigee-cassandra-default]" \
              --project my-project
      
        kubectl annotate serviceaccount apigee-cassandra-default \
              iam.gke.io/gcp-service-account=apigee-cassandra@my-project.iam.gserviceaccount.com \
              --namespace apigee
      

      לא בסביבת ייצור

      NOTES:
      For Cassandra backup GKE Workload Identity, please make sure to add the following membership to the IAM policy binding using the respective kubernetes SA (KSA).
        gcloud iam service-accounts add-iam-policy-binding apigee-non-prod@my-project.iam.gserviceaccount.com \
              --role roles/iam.workloadIdentityUser \
              --member "serviceAccount:my-project.svc.id.goog[apigee/apigee-cassandra-default]" \
              --project my-project
      
        kubectl annotate serviceaccount apigee-cassandra-default \
              iam.gke.io/gcp-service-account=apigee-non-prod@my-project.iam.gserviceaccount.com \
              --namespace apigee
      

      אופציונלי: אם אתם לא רוצים להגדיר גיבוי של Cassandra בשלב הזה, אתם יכולים לערוך את קובץ השינויים כדי להסיר או לסמן כהערה את הבית cassandra.backup לפני הרצת הפקודה helm upgrade בלי הדגל --dry-run. מידע נוסף על הגדרת הגיבוי של Cassandra זמין במאמר גיבוי ושחזור של נתוני Cassandra.

    3. מתקינים את התרשים:

      helm upgrade datastore apigee-datastore/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    4. לפני שממשיכים לשלב הבא, בודקים את המצב של apigeedatastore כדי לוודא שהיא פועלת:

      kubectl -n APIGEE_NAMESPACE get apigeedatastore default
      
      NAME      STATE       AGE
      default   running    51s
      
  4. מתקינים את הטלמטריה של Apigee:

    1. הרצת בדיקה:
      helm upgrade telemetry apigee-telemetry/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. מגדירים את הקישורים של חשבון השירות ל-Logger ול-Metrics בשביל איחוד זהויות של עומסי עבודה ל-GKE:

      הפלט מהפקודה helm upgrade אמור להכיל פקודות בקטע NOTES. מבצעים את הפקודות האלה כדי להגדיר את הקישורים של חשבון השירות. אמורות להיות שתי פקודות בפורמט הבא:

      Logger KSA: apigee-logger-apigee-telemetry

      gcloud iam service-accounts add-iam-policy-binding LOGGER_SERVICE_ACCOUNT_EMAIL \
        --role roles/iam.workloadIdentityUser \
        --member "serviceAccount:PROJECT_ID.svc.id.goog[apigee/apigee-logger-apigee-telemetry]" \
        --project PROJECT_ID
      

      מדדי KSA: apigee-metrics-sa

      ייצור

      gcloud iam service-accounts add-iam-policy-binding METRICS_SERVICE_ACCOUNT_EMAIL \
        --role roles/iam.workloadIdentityUser \
        --member "serviceAccount:PROJECT_ID.svc.id.goog[apigee/apigee-metrics-sa]" \
        --project PROJECT_ID

      לא בסביבת ייצור

      gcloud iam service-accounts add-iam-policy-binding NON_PROD_SERVICE_ACCOUNT_EMAIL \
        --role roles/iam.workloadIdentityUser \
        --member "serviceAccount:PROJECT_ID.svc.id.goog[apigee/apigee-metrics-sa]" \
        --project PROJECT_ID

      לדוגמה:

      ייצור

      NOTES:
      For GKE Workload Identity, please make sure to add the following membership to the IAM policy binding using the respective kubernetes SA (KSA).
        Logger KSA: apigee-logger-apigee-telemetry
        gcloud iam service-accounts add-iam-policy-binding apigee-logger@my-project.iam.gserviceaccount.com \
              --role roles/iam.workloadIdentityUser \
              --member "serviceAccount:my-project.svc.id.goog[apigee/apigee-logger-apigee-telemetry]" \
              --project my-project
      
        Metrics KSA: apigee-metrics-sa
        gcloud iam service-accounts add-iam-policy-binding apigee-metrics@my-project.iam.gserviceaccount.com \
              --role roles/iam.workloadIdentityUser \
              --member "serviceAccount:my-project.svc.id.goog[apigee/apigee-metrics-sa]" \
              --project my-project
      

      לא בסביבת ייצור

      NOTES:
      For GKE Workload Identity, please make sure to add the following membership to the IAM policy binding using the respective kubernetes SA (KSA).
        Logger KSA: apigee-logger-apigee-telemetry
        gcloud iam service-accounts add-iam-policy-binding apigee-non-prod@my-project.iam.gserviceaccount.com \
              --role roles/iam.workloadIdentityUser \
              --member "serviceAccount:my-project.svc.id.goog[apigee/apigee-logger-apigee-telemetry]" \
              --project my-project
      
        Metrics KSA: apigee-metrics-sa
        gcloud iam service-accounts add-iam-policy-binding apigee-non-prod@my-project.iam.gserviceaccount.com \
              --role roles/iam.workloadIdentityUser \
              --member "serviceAccount:my-project.svc.id.goog[apigee/apigee-metrics-sa]" \
              --project my-project
      
    3. מתקינים את התרשים:

      helm upgrade telemetry apigee-telemetry/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    4. כדי לוודא שהיא פועלת, בודקים את המצב שלה:

      kubectl -n APIGEE_NAMESPACE get apigeetelemetry apigee-telemetry
      
      NAME               STATE     AGE
      apigee-telemetry   running   55s
      
  5. מתקינים את Apigee Redis:

    1. הרצת בדיקה:

      helm upgrade redis apigee-redis/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. מתקינים את התרשים:

      helm upgrade redis apigee-redis/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. כדי לוודא שהיא פועלת, בודקים את המצב שלה:

      kubectl -n APIGEE_NAMESPACE get apigeeredis default
      
      NAME      STATE     AGE
      default   running   79s
      
  6. מתקינים את מנהל ה-ingress של Apigee:

    1. הרצת בדיקה:

      helm upgrade ingress-manager apigee-ingress-manager/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. מתקינים את התרשים:

      helm upgrade ingress-manager apigee-ingress-manager/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. כדי לוודא שהיא פועלת, בודקים את הזמינות שלה:

      kubectl -n APIGEE_NAMESPACE get deployment apigee-ingressgateway-manager
      
      NAME                            READY   UP-TO-DATE   AVAILABLE   AGE
      apigee-ingressgateway-manager   2/2     2            2           16s
      
  7. מתקינים את הארגון ב-Apigee. אם הגדרתם את משתנה הסביבה $ORG_NAME במעטפת, אתם יכולים להשתמש בו בפקודות הבאות:

    1. הרצת בדיקה:

      helm upgrade $ORG_NAME apigee-org/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. מגדירים את הקישורים של חשבון השירות לרכיבים ברמת הארגון בשביל איחוד זהויות של עומסי עבודה ל-GKE,‏ MART,‏ Apigee Connect,‏ UDCA ו-Watcher.

      הפלט מהפקודה helm upgrade אמור להכיל פקודות בקטע NOTES. מבצעים את הפקודות האלה כדי להגדיר את הקישורים של חשבון השירות. צריכות להיות ארבע פקודות.

      MART KSA: apigee-mart-PROJECT_ID-ORG_HASH_ID-sa

      ייצור

      gcloud iam service-accounts add-iam-policy-binding MART_SERVICE_ACCOUNT_EMAIL \
        --role roles/iam.workloadIdentityUser \
        --member "serviceAccount:PROJECT_ID.svc.id.goog[apigee/apigee-mart-PROJECT_ID-ORG_HASH_ID-sa]" \
        --project PROJECT_ID
      

      לא בסביבת ייצור

      gcloud iam service-accounts add-iam-policy-binding NON_PROD_SERVICE_ACCOUNT_EMAIL \
        --role roles/iam.workloadIdentityUser \
        --member "serviceAccount:PROJECT_ID.svc.id.goog[apigee/apigee-mart-PROJECT_ID-ORG_HASH_ID-sa]" \
        --project PROJECT_ID
      

      Connect Agent KSA: apigee-connect-agent-PROJECT_ID-ORG_HASH_ID-sa

      ייצור

      gcloud iam service-accounts add-iam-policy-binding MART_SERVICE_ACCOUNT_EMAIL \
        --role roles/iam.workloadIdentityUser \
        --member "serviceAccount:PROJECT_ID.svc.id.goog[apigee/apigee-connect-agent-PROJECT_ID-ORG_HASH_ID-sa]" \
        --project PROJECT_ID
      

      לא בסביבת ייצור

      gcloud iam service-accounts add-iam-policy-binding NON_PROD_SERVICE_ACCOUNT_EMAIL \
        --role roles/iam.workloadIdentityUser \
        --member "serviceAccount:PROJECT_ID.svc.id.goog[apigee/apigee-connect-agent-PROJECT_ID-ORG_HASH_ID-sa]" \
        --project PROJECT_ID
      

      Mint Task Scheduler KSA: (אם אתם משתמשים במונטיזציה ל-Apigee Hybrid) apigee-mint-task-scheduler-PROJECT_ID-ORG_HASH_ID-sa

      ייצור

      gcloud iam service-accounts add-iam-policy-binding MINT_TASK_SCHEDULER_SERVICE_ACCOUNT_EMAIL \
        --role roles/iam.workloadIdentityUser \
        --member "serviceAccount:PROJECT_ID.svc.id.goog[apigee/apigee-mint-task-scheduler-PROJECT_ID-ORG_HASH_ID-sa]" \
        --project PROJECT_ID
      

      לא בסביבת ייצור

      gcloud iam service-accounts add-iam-policy-binding NON_PROD_SERVICE_ACCOUNT_EMAIL \
        --role roles/iam.workloadIdentityUser \
        --member "serviceAccount:PROJECT_ID.svc.id.goog[apigee/apigee-mint-task-scheduler-PROJECT_ID-ORG_HASH_ID-sa]" \
        --project PROJECT_ID
      

      UDCA KSA: apigee-udca-PROJECT_ID-ORG_HASH_ID-sa

      ייצור

      gcloud iam service-accounts add-iam-policy-binding UDCA_SERVICE_ACCOUNT_EMAIL \
        --role roles/iam.workloadIdentityUser \
        --member "serviceAccount:PROJECT_ID.svc.id.goog[apigee/apigee-udca-PROJECT_ID-ORG_HASH_ID-sa]" \
        --project PROJECT_ID
      

      לא בסביבת ייצור

      gcloud iam service-accounts add-iam-policy-binding NON_PROD_SERVICE_ACCOUNT_EMAIL \
        --role roles/iam.workloadIdentityUser \
        --member "serviceAccount:PROJECT_ID.svc.id.goog[apigee/apigee-udca-PROJECT_ID-ORG_HASH_ID-sa]" \
        --project PROJECT_ID
      

      Watcher KSA: apigee-watcher-PROJECT_ID-ORG_HASH_ID-sa

      ייצור

      gcloud iam service-accounts add-iam-policy-binding WATCHER_SERVICE_ACCOUNT_EMAIL \
        --role roles/iam.workloadIdentityUser \
        --member "serviceAccount:PROJECT_ID.svc.id.goog[apigee/apigee-watcher-PROJECT_ID-ORG_HASH_ID-sa]" \
        --project PROJECT_ID
      

      לא בסביבת ייצור

      gcloud iam service-accounts add-iam-policy-binding NON_PROD_SERVICE_ACCOUNT_EMAIL \
        --role roles/iam.workloadIdentityUser \
        --member "serviceAccount:PROJECT_ID.svc.id.goog[apigee/apigee-watcher-PROJECT_ID-ORG_HASH_ID-sa]" \
        --project PROJECT_ID
      

      לדוגמה:

      ייצור

      NOTES:
      For Apigee Organization GKE Workload Identity, my-project, please make sure to add the following membership to the IAM policy binding using the respective kubernetes SA (KSA).
      
      
        MART KSA: apigee-mart-my-project-1a2b3c4-sa
        gcloud iam service-accounts add-iam-policy-binding apigee-mart@my-project.iam.gserviceaccount.com \
              --role roles/iam.workloadIdentityUser \
              --member "serviceAccount:my-project.svc.id.goog[apigee/apigee-mart-my-project-1a2b3c4-sa]" \
              --project my-project
      
      
        Connect Agent KSA: apigee-connect-agent-my-project-1a2b3c4-sa
        gcloud iam service-accounts add-iam-policy-binding apigee-mart@my-project.iam.gserviceaccount.com \
              --role roles/iam.workloadIdentityUser \
              --member "serviceAccount:my-project.svc.id.goog[apigee/apigee-connect-agent-my-project-1a2b3c4-sa]" \
              --project my-project
      
      
        Mint task scheduler KSA: apigee-mint-task-scheduler-my-project-1a2b3c4-sa
        gcloud iam service-accounts add-iam-policy-binding apigee-mint-task-scheduler@my-project.iam.gserviceaccount.com \
              --role roles/iam.workloadIdentityUser \
              --member "serviceAccount:my-project.svc.id.goog[apigee/apigee-mint-task-scheduler-my-project-1a2b3c4-sa]" \
              --project my-project
      
      
        UDCA KSA: apigee-udca-my-project-1a2b3c4-sa
        gcloud iam service-accounts add-iam-policy-binding apigee-udca@my-project.iam.gserviceaccount.com \
              --role roles/iam.workloadIdentityUser \
              --member "serviceAccount:my-project.svc.id.goog[apigee/apigee-udca-my-project-1a2b3c4-sa]" \
              --project my-project
      
      
        Watcher KSA: apigee-watcher-my-project-1a2b3c4-sa
        gcloud iam service-accounts add-iam-policy-binding apigee-watcher@my-project.iam.gserviceaccount.com \
              --role roles/iam.workloadIdentityUser \
              --member "serviceAccount:my-project.svc.id.goog[apigee/apigee-watcher-my-project-1a2b3c4-sa]" \
              --project my-project
      

      לא בסביבת ייצור

      NOTES:
      For Apigee Organization GKE Workload Identity, my-project, please make sure to add the following membership to the IAM policy binding using the respective kubernetes SA (KSA).
      
        MART KSA: apigee-mart-my-project-1a2b3c4-sa
        gcloud iam service-accounts add-iam-policy-binding apigee-non-prod@my-project.iam.gserviceaccount.com \
              --role roles/iam.workloadIdentityUser \
              --member "serviceAccount:my-project.svc.id.goog[apigee/apigee-mart-my-project-1a2b3c4-sa]" \
              --project my-project
      
      
        Connect Agent KSA: apigee-connect-agent-my-project-1a2b3c4-sa
        gcloud iam service-accounts add-iam-policy-binding apigee-non-prod@my-project.iam.gserviceaccount.com \
              --role roles/iam.workloadIdentityUser \
              --member "serviceAccount:my-project.svc.id.goog[apigee/apigee-connect-agent-my-project-1a2b3c4-sa]" \
              --project my-project
      
      
        UDCA KSA: apigee-udca-my-project-1a2b3c4-sa
        gcloud iam service-accounts add-iam-policy-binding apigee-non-prod@my-project.iam.gserviceaccount.com \
              --role roles/iam.workloadIdentityUser \
              --member "serviceAccount:my-project.svc.id.goog[apigee/apigee-udca-my-project-1a2b3c4-sa]" \
              --project my-project
      
      
        Watcher KSA: apigee-watcher-my-project-1a2b3c4-sa
        gcloud iam service-accounts add-iam-policy-binding apigee-non-prod@my-project.iam.gserviceaccount.com \
              --role roles/iam.workloadIdentityUser \
              --member "serviceAccount:my-project.svc.id.goog[apigee/apigee-watcher-my-project-1a2b3c4-sa]" \
              --project my-project
      
    3. מתקינים את התרשים:

      helm upgrade $ORG_NAME apigee-org/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    4. כדי לוודא שהיא פועלת, בודקים את המצב של הארגון הרלוונטי:

      kubectl -n APIGEE_NAMESPACE get apigeeorg
      
      NAME                      STATE     AGE
      my-project-123abcd        running   4m18s
      
  8. מתקינים את הסביבה.

    צריך להתקין סביבה אחת בכל פעם. מציינים את הסביבה באמצעות --set env=ENV_NAME. אם הגדרתם את משתנה הסביבה $ENV_NAME במעטפת, אתם יכולים להשתמש בו בפקודות הבאות:

    1. הרצת בדיקה:

      helm upgrade ENV_RELEASE_NAME apigee-env/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        --set env=$ENV_NAME \
        -f overrides.yaml \
        --dry-run=server
      

        ‫ENV_RELEASE_NAME הוא שם שמשמש למעקב אחרי ההתקנה והשדרוגים של התרשים apigee-env. השם הזה חייב להיות ייחודי ושונה משמות אחרים של גרסאות Helm בהתקנה. בדרך כלל זהה ל-ENV_NAME. עם זאת, אם לסביבה יש שם זהה לזה של קבוצת הסביבות, צריך להשתמש בשמות שונים לגרסאות של הסביבה ושל קבוצת הסביבות, לדוגמה dev-env-release ו-dev-envgroup-release. מידע נוסף על גרסאות ב-Helm זמין במאמר Three big concepts במסמכי התיעוד של Helm.

    2. מגדירים את הקישורים של חשבון השירות לרכיבים ברמת הסביבה של איחוד זהויות של עומסי עבודה ל-GKE, של סביבת זמן הריצה, של Synchronizer ושל UDCA.

      הפלט מהפקודה helm upgrade אמור להכיל פקודות בקטע NOTES. מבצעים את הפקודות האלה כדי להגדיר את הקישורים של חשבון השירות. צריכות להיות ארבע פקודות.

      ‫

      זמן ריצה של KSA: apigee-runtime-PROJECT_ID-ENV_NAME-ENV_HASH_ID-sa

      ייצור

      gcloud iam service-accounts add-iam-policy-binding RUNTIME_SERVICE_ACCOUNT_EMAIL \
        --role roles/iam.workloadIdentityUser \
        --member "serviceAccount:PROJECT_ID.svc.id.goog[apigee/apigee-runtime-PROJECT_ID-ENV_NAME-ENV_HASH_ID-sa]" \
        --project PROJECT_ID
      

      לא בסביבת ייצור

      gcloud iam service-accounts add-iam-policy-binding NON_PROD_SERVICE_ACCOUNT_EMAIL \
        --role roles/iam.workloadIdentityUser \
        --member "serviceAccount:PROJECT_ID.svc.id.goog[apigee/apigee-runtime-PROJECT_ID-ENV_NAME-ENV_HASH_ID-sa]" \
        --project PROJECT_ID
      

      Synchronizer KSA: apigee-synchronizer-PROJECT_ID-ENV_NAME-ENV_HASH_ID-sa

      ייצור

      gcloud iam service-accounts add-iam-policy-binding SYNCHRONIZER_SERVICE_ACCOUNT_EMAIL \
        --role roles/iam.workloadIdentityUser \
        --member "serviceAccount:PROJECT_ID.svc.id.goog[apigee/apigee-synchronizer-PROJECT_ID-ENV_NAME-ENV_HASH_ID-sa]" \
        --project PROJECT_ID
      

      לא בסביבת ייצור

      gcloud iam service-accounts add-iam-policy-binding NON_PROD_SERVICE_ACCOUNT_EMAIL \
        --role roles/iam.workloadIdentityUser \
        --member "serviceAccount:PROJECT_ID.svc.id.goog[apigee/apigee-synchronizer-PROJECT_ID-ENV_NAME-ENV_HASH_ID-sa]" \
        --project PROJECT_ID
      

      UDCA KSA: apigee-udca-PROJECT_ID-ORG_HASH_ID-ENV_NAME-ENV_HASH_ID-sa

      ייצור

      gcloud iam service-accounts add-iam-policy-binding UDCA_SERVICE_ACCOUNT_EMAIL \
        --role roles/iam.workloadIdentityUser \
        --member "serviceAccount:PROJECT_ID.svc.id.goog[apigee/apigee-udca-PROJECT_ID-ENV_NAME-ENV_HASH_ID-sa]" \
        --project PROJECT_ID
      

      לא בסביבת ייצור

      gcloud iam service-accounts add-iam-policy-binding NON_PROD_SERVICE_ACCOUNT_EMAIL \
        --role roles/iam.workloadIdentityUser \
        --member "serviceAccount:PROJECT_ID.svc.id.goog[apigee/apigee-udca-PROJECT_ID-ENV_NAME-ENV_HASH_ID-sa]" \
        --project PROJECT_ID
      

      לדוגמה:

      NOTES:
      For Apigee Environment GKE Workload Identity, my-env, please make sure to add the following membership to the IAM policy binding using the respective kubernetes SA (KSA).
      
      
        Runtime KSA: apigee-runtime-my-project-my-env-b2c3d4e-sa
        gcloud iam service-accounts add-iam-policy-binding apigee-runtime@my-project.iam.gserviceaccount.com \
              --role roles/iam.workloadIdentityUser \
              --member "serviceAccount:my-project.svc.id.goog[apigee/apigee-runtime-my-project-my-env-b2c3d4e-sa]" \
              --project my-project
      
      
        Synchronizer KSA: apigee-synchronizer-my-project-my-env-b2c3d4e-sa
        gcloud iam service-accounts add-iam-policy-binding apigee-synchronizer@my-project.iam.gserviceaccount.com \
              --role roles/iam.workloadIdentityUser \
              --member "serviceAccount:my-project.svc.id.goog[apigee/apigee-synchronizer-my-project-my-env-b2c3d4e-sa]" \
              --project my-project
      
      
        UDCA KSA: apigee-udca-my-project-my-env-b2c3d4e-sa:
        gcloud iam service-accounts add-iam-policy-binding apigee-udca@my-project.iam.gserviceaccount.com \
              --role roles/iam.workloadIdentityUser \
              --member "serviceAccount:my-project.svc.id.goog[apigee/apigee-udca-my-project-my-env-b2c3d4e-sa]" \
              --project my-project
      
    3. מתקינים את התרשים:

      helm upgrade ENV_RELEASE_NAME apigee-env/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        --set env=$ENV_NAME \
        -f overrides.yaml
      
    4. כדי לוודא שהיא פועלת, בודקים את המצב של הסביבה הרלוונטית:

      kubectl -n APIGEE_NAMESPACE get apigeeenv
      
      NAME                       STATE     AGE   GATEWAYTYPE
      apigee-my-project-my-env   running   3m1s
      
  9. מתקינים את קבוצות הסביבה (virtualhosts).
    1. צריך להתקין קבוצת סביבות (מארח וירטואלי) אחת בכל פעם. מציינים את קבוצת הסביבות באמצעות --set envgroup=ENV_GROUP. אם הגדרתם את משתנה הסביבה $ENV_GROUP במעטפת, אתם יכולים להשתמש בו בפקודות הבאות. חוזרים על הפקודות הבאות לכל קבוצת סביבות שמוזכרת בקובץ overrides.yaml:

      הרצת בדיקה:

      helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        --set envgroup=$ENV_GROUP \
        -f overrides.yaml \
        --dry-run=server
      

        ‫ENV_GROUP_RELEASE_NAME הוא שם שמשמש למעקב אחרי ההתקנה והשדרוגים של התרשים apigee-virtualhosts. השם הזה חייב להיות ייחודי ושונה משמות אחרים של גרסאות Helm בהתקנה. בדרך כלל זהה ל-ENV_GROUP. עם זאת, אם לקבוצת הסביבות יש שם זהה לשם של סביבה בהתקנה, צריך להשתמש בשמות שונים לגרסאות של קבוצת הסביבות והסביבה, למשל dev-envgroup-release ו-dev-env-release. מידע נוסף על גרסאות ב-Helm זמין במאמר Three big concepts במסמכי התיעוד של Helm.

    2. מתקינים את התרשים:

      helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        --set envgroup=$ENV_GROUP \
        -f overrides.yaml
      
    3. בודקים את המצב של ApigeeRoute‏ (AR).

      התקנת virtualhosts יוצרת את ApigeeRouteConfig‏ (ARC), שיוצר באופן פנימי את ApigeeRoute‏ (AR) אחרי שה-Apigee watcher שולף פרטים שקשורים לקבוצת הסביבות ממישור הבקרה. לכן, צריך לבדוק שהמצב של ה-AR התואם הוא "פועל":

      kubectl -n APIGEE_NAMESPACE get arc
      
      NAME                                STATE   AGE
      apigee-org1-dev-egroup                       2m
      
      kubectl -n APIGEE_NAMESPACE get ar
      
      NAME                                                        STATE     AGE
      apigee-ingressgateway-internal-chaining-my-project-123abcd   running   19m
      my-project-myenvgroup-000-321dcba                            running   2m30s
      
  10. (אופציונלי) אפשר לראות את הסטטוס של חשבונות השירות של Kubernetes בדף Kubernetes: Workloads Overview ב- Google Cloud console.

    כניסה לדף Workloads

‫WIF בפלטפורמות אחרות

  1. אם לא, עוברים לספרייה APIGEE_HELM_CHARTS_HOME. מריצים את הפקודות הבאות מהספרייה הזו.
  2. התקנת Apigee Operator/Controller:
    1. הרצת בדיקה:
      helm upgrade operator apigee-operator/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. מתקינים את התרשים:
      helm upgrade operator apigee-operator/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. אימות ההתקנה של Apigee Operator:

      helm ls -n APIGEE_NAMESPACE
      
      NAME       NAMESPACE       REVISION   UPDATED                                STATUS     CHART                                       APP VERSION
      operator   apigee   3          2025-06-26 00:42:44.492009 -0800 PST   deployed   apigee-operator-1.15.9   1.15.9
      
    4. כדי לוודא שהיא פועלת, בודקים את הזמינות שלה:

      kubectl -n APIGEE_NAMESPACE get deploy apigee-controller-manager
      
      NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
      apigee-controller-manager   1/1     1            1           34s
      
  3. התקנת מאגר הנתונים של Apigee:

    1. הרצת בדיקה:
      helm upgrade datastore apigee-datastore/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. מתקינים את התרשים:

      helm upgrade datastore apigee-datastore/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. אם הפעלתם את הגיבוי או השחזור של Cassandra, תנו לחשבונות השירות של Cassandra Kubernetes גישה כדי להתחזות לחשבון השירות המשויך ב-apigee-cassandraIAM.
      1. מציגים את כתובות האימייל של חשבון השירות ב-IAM בשביל Cassandra:

        ייצור

        gcloud iam service-accounts list --project PROJECT_ID | grep "apigee-cassandra"

        לא בסביבת ייצור

        gcloud iam service-accounts list --project PROJECT_ID | grep "apigee-non-prod"

        הפלט אמור להיראות כך:

        ייצור

        apigee-cassandra      apigee-cassandra@my-project.iam.gserviceaccount.com      False
                          

        לא בסביבת ייצור

        apigee-non-prod       apigee-non-prod@my-project.iam.gserviceaccount.com      False
                          
      2. מציגים את רשימת חשבונות השירות של Cassandra Kubernetes:
        kubectl get serviceaccount -n APIGEE_NAMESPACE | grep "apigee-cassandra"

        הפלט אמור להיראות כך:

        apigee-cassandra-backup-sa                       0   7m37s
        apigee-cassandra-default                         0   7m12s
        apigee-cassandra-guardrails-sa                   0   6m43s
        apigee-cassandra-restore-sa                      0   7m37s
        apigee-cassandra-schema-setup-my-project-1a2b2c4 0   7m30s
        apigee-cassandra-schema-val-my-project-1a2b2c4   0   7m29s
        apigee-cassandra-user-setup-my-project-1a2b2c4   0   7m22s
                      
      3. אם יצרתם את חשבונות השירות apigee-cassandra-backup-sa או apigee-cassandra-restore-sa ב-Kubernetes, אתם צריכים לתת לכל אחד מהם גישה כדי להתחזות לחשבון השירות apigee-cassandra ב-IAM באמצעות הפקודה הבאה:

        ייצור

        תבנית

        gcloud iam service-accounts add-iam-policy-binding \
          CASSANDRA_IAM_SA_EMAIL \
            --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/MAPPED_SUBJECT" \
            --role=roles/iam.workloadIdentityUser

        דוגמה

        gcloud iam service-accounts add-iam-policy-binding \
          apigee-cassandra@my-project.iam.gserviceaccount.com \
            --member="principal://iam.googleapis.com/projects/1234567890/locations/global/workloadIdentityPools/my-pool/subject/system:serviceaccount:apigee:apigee-cassandra-backup-sa" \
            --role=roles/iam.workloadIdentityUser

        לא בסביבת ייצור

        תבנית

        gcloud iam service-accounts add-iam-policy-binding \
          NON_PROD_IAM_SA_EMAIL \
            --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/MAPPED_SUBJECT" \
            --role=roles/iam.workloadIdentityUser

        דוגמה

        gcloud iam service-accounts add-iam-policy-binding \
          apigee-non-prod@my-project.iam.gserviceaccount.com \
            --member="principal://iam.googleapis.com/projects/1234567890/locations/global/workloadIdentityPools/my-pool/subject/system:serviceaccount:apigee:apigee-cassandra-backup-sa" \
            --role=roles/iam.workloadIdentityUser

        כאשר:

        • ‫CASSANDRA_IAM_SA_EMAIL: כתובת האימייל של חשבון השירות של Cassandra ב-IAM.
        • ‫PROJECT_NUMBER: מספר הפרויקט שבו יצרתם את מאגר הזהויות של עומסי העבודה.
        • ‫POOL_ID: מזהה מאגר הזהויות של עומסי העבודה.
        • ‫MAPPED_SUBJECT: ה-Kubernetes ServiceAccount מההצהרה באסימון המזהה. ברוב ההתקנות המשולבות, הפורמט יהיה: system:serviceaccount:APIGEE_NAMESPACE:K8S_SA_NAME.
          • ב-apigee-cassandra-backup-sa, זה יהיה דומה ל-system:serviceaccount:apigee:apigee-cassandra-backup-sa.
          • ב-apigee-cassandra-restore-sa, זה ייראה בערך כך: system:serviceaccount:apigee:apigee-cassandra-restore-sa.
    4. לפני שממשיכים לשלב הבא, בודקים את המצב של apigeedatastore כדי לוודא שהיא פועלת:

      kubectl -n APIGEE_NAMESPACE get apigeedatastore default
      
      NAME      STATE       AGE
      default   running    51s
      
  4. מתקינים את הטלמטריה של Apigee:

    1. הרצת בדיקה:
      helm upgrade telemetry apigee-telemetry/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. מתקינים את התרשים:

      helm upgrade telemetry apigee-telemetry/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. כדי לוודא שהיא פועלת, בודקים את המצב שלה:

      kubectl -n APIGEE_NAMESPACE get apigeetelemetry apigee-telemetry
      
      NAME               STATE     AGE
      apigee-telemetry   running   55s
      
    4. נותנים לחשבונות השירות של הטלמטריה ב-Kubernetes גישה כדי להתחזות לחשבון השירות המשויך ב-apigee-metricsIAM.
      1. מציינים את כתובת האימייל של חשבון השירות ב-IAM למדדים:

        ייצור

        gcloud iam service-accounts list --project PROJECT_ID | grep "apigee-metrics"

        הפלט אמור להיראות כך:

        apigee-metrics   apigee-metrics@my-project.iam.gserviceaccount.com   False

        לא בסביבת ייצור

        gcloud iam service-accounts list --project PROJECT_ID | grep "apigee-non-prod"

        הפלט אמור להיראות כך:

        apigee-non-prod   apigee-non-prod@my-project.iam.gserviceaccount.com   False
      2. מציגים את רשימת חשבונות השירות של הטלמטריה ב-Kubernetes:
        kubectl get serviceaccount -n APIGEE_NAMESPACE | grep "telemetry"

        הפלט אמור להיראות כך:

        apigee-metrics-apigee-telemetry                    0   42m
        apigee-open-telemetry-collector-apigee-telemetry   0   37m
      3. נותנים לכל אחד מחשבונות השירות של הטלמטריה ב-Kubernetes גישה להתחזות לחשבון השירות apigee-metrics ב-IAM, באמצעות הפקודה הבאה:

        ייצור

        Apigee Metrics KSA: apigee-metrics-apigee-telemetry לחשבון שירות של Google IAM‏ apigee-metrics

        קוד

        gcloud iam service-accounts add-iam-policy-binding \
          METRICS_IAM_SA_EMAIL \
            --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/MAPPED_SUBJECT" \
            --role=roles/iam.workloadIdentityUser

        דוגמה

        gcloud iam service-accounts add-iam-policy-binding \
          apigee-metrics@my-project.iam.gserviceaccount.com \
            --member="principal://iam.googleapis.com/projects/1234567890/locations/global/workloadIdentityPools/my-pool/subject/system:serviceaccount:apigee:apigee-metrics-apigee-telemetry" \
            --role=roles/iam.workloadIdentityUser

        ‫Apigee OpenTelemetry Collector KSA:‏ apigee-open-telemetry-collector-apigee-telemetry לחשבון שירות Google IAM‏ apigee-metrics

        קוד

        gcloud iam service-accounts add-iam-policy-binding \
          METRICS_IAM_SA_EMAIL \
            --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/MAPPED_SUBJECT" \
            --role=roles/iam.workloadIdentityUser

        דוגמה

        gcloud iam service-accounts add-iam-policy-binding \
          apigee-metrics@my-project.iam.gserviceaccount.com \
            --member="principal://iam.googleapis.com/projects/1234567890/locations/global/workloadIdentityPools/my-pool/subject/system:serviceaccount:apigee:apigee-open-telemetry-collector-apigee-telemetry" \
            --role=roles/iam.workloadIdentityUser

        לא בסביבת ייצור

        Apigee Metrics KSA: apigee-metrics-apigee-telemetry to apigee-non-prod Google IAM service account

        קוד

        gcloud iam service-accounts add-iam-policy-binding \
          NON_PROD_IAM_SA_EMAIL \
            --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/MAPPED_SUBJECT" \
            --role=roles/iam.workloadIdentityUser

        דוגמה

        gcloud iam service-accounts add-iam-policy-binding \
          apigee-non-prod@my-project.iam.gserviceaccount.com \
            --member="principal://iam.googleapis.com/projects/1234567890/locations/global/workloadIdentityPools/my-pool/subject/system:serviceaccount:apigee:apigee-metrics-apigee-telemetry" \
            --role=roles/iam.workloadIdentityUser

        ‫Apigee OpenTelemetry Collector KSA:‏ apigee-open-telemetry-collector-apigee-telemetry לחשבון שירות Google IAM‏ apigee-non-prod

        קוד

        gcloud iam service-accounts add-iam-policy-binding \
          NON_PROD_IAM_SA_EMAIL \
            --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/MAPPED_SUBJECT" \
            --role=roles/iam.workloadIdentityUser

        דוגמה

        gcloud iam service-accounts add-iam-policy-binding \
          apigee-non-prod@my-project.iam.gserviceaccount.com \
            --member="principal://iam.googleapis.com/projects/1234567890/locations/global/workloadIdentityPools/my-pool/subject/system:serviceaccount:apigee:apigee-open-telemetry-collector-apigee-telemetry" \
            --role=roles/iam.workloadIdentityUser
  5. מתקינים את Apigee Redis:

    1. הרצת בדיקה:

      helm upgrade redis apigee-redis/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. מתקינים את התרשים:

      helm upgrade redis apigee-redis/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. כדי לוודא שהיא פועלת, בודקים את המצב שלה:

      kubectl -n APIGEE_NAMESPACE get apigeeredis default
      
      NAME      STATE     AGE
      default   running   79s
      
  6. מתקינים את מנהל ה-ingress של Apigee:

    1. הרצת בדיקה:

      helm upgrade ingress-manager apigee-ingress-manager/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. מתקינים את התרשים:

      helm upgrade ingress-manager apigee-ingress-manager/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. כדי לוודא שהיא פועלת, בודקים את הזמינות שלה:

      kubectl -n APIGEE_NAMESPACE get deployment apigee-ingressgateway-manager
      
      NAME                            READY   UP-TO-DATE   AVAILABLE   AGE
      apigee-ingressgateway-manager   2/2     2            2           16s
      
  7. מתקינים את הארגון ב-Apigee. אם הגדרתם את משתנה הסביבה $ORG_NAME במעטפת, אתם יכולים להשתמש בו בפקודות הבאות:

    1. הרצת בדיקה:

      helm upgrade $ORG_NAME apigee-org/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      
    2. מתקינים את התרשים:

      helm upgrade $ORG_NAME apigee-org/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. כדי לוודא שהיא פועלת, בודקים את המצב של הארגון הרלוונטי:

      kubectl -n APIGEE_NAMESPACE get apigeeorg
      
      NAME                      STATE     AGE
      my-project-123abcd        running   4m18s
      
    4. נותנים לחשבונות השירות של Kubernetes ברמת הארגון גישה להתחזות לחשבונות השירות המשויכים של IAM.
      1. מציגים את כתובות האימייל של חשבונות השירות ב-IAM שמשמשים את הרכיבים apigee-mart,‏ apigee-udca ו-apigee-watcher:

        ייצור

        gcloud iam service-accounts list --project PROJECT_ID | grep "apigee-mart\|apigee-udca\|apigee-watcher"

        הפלט אמור להיראות כך:

        apigee-mart      apigee-mart@my-project.iam.gserviceaccount.com      False
        apigee-udca      apigee-udca@my-project.iam.gserviceaccount.com      False
        apigee-watcher   apigee-watcher@my-project.iam.gserviceaccount.com   False
        

        אם אתם משתמשים במונטיזציה ב-Apigee Hybrid, אתם צריכים גם את כתובת האימייל של חשבון השירות apigee-mint-task-scheduler.

        gcloud iam service-accounts list --project PROJECT_ID | grep "apigee-mint-task-scheduler"

        הפלט אמור להיראות כך:

        apigee-mint-task-scheduler   apigee-mint-task-scheduler@my-project.iam.gserviceaccount.com   False
        

        לא בסביבת ייצור

        gcloud iam service-accounts list --project PROJECT_ID | grep "apigee-non-prod"

        הפלט אמור להיראות כך:

        apigee-non-prod     apigee-non-prod@my-project.iam.gserviceaccount.com         False
                          
      2. מציגים את רשימת חשבונות השירות של Kubernetes ברמת הארגון:
        kubectl get serviceaccount -n APIGEE_NAMESPACE | grep "apigee-connect-agent\|apigee-mart\|apigee-udca\|apigee-watcher"

        הפלט אמור להיראות כך:

        apigee-connect-agent-my-project-123abcd         0   1h4m
        apigee-mart-my-project-123abcd                  0   1h4m
        apigee-mint-task-scheduler-my-project-123abcd   0   1h3m
        apigee-udca-my-project-123abcd                  0   1h2m
        apigee-watcher-my-project-123abcd               0   1h1m
                      
      3. כדי לתת לחשבונות השירות של Kubernetes ברמת הארגון גישה להתחזות לחשבונות השירות המשויכים של IAM, משתמשים בפקודות הבאות:

        ייצור

        Connect agent KSA: חשבון שירות של Kubernetes‏ (apigee-connect-agent-ORG_NAME-ORG_HASH_ID) לחשבון שירות של IAM‏ (apigee-mart).

        קוד

        gcloud iam service-accounts add-iam-policy-binding \
          APIGEE_MART_SA_EMAIL \
            --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/MAPPED_SUBJECT" \
            --role=roles/iam.workloadIdentityUser

        דוגמה

        gcloud iam service-accounts add-iam-policy-binding \
          apigee-mart@my-project.iam.gserviceaccount.com \
            --member="principal://iam.googleapis.com/projects/1234567890/locations/global/workloadIdentityPools/my-pool/subject/system:serviceaccount:apigee:apigee-connect-agent-my-org-123abcd" \
            --role=roles/iam.workloadIdentityUser

        ‫MART KSA: חשבון שירות של Kubernetes ב-apigee-mart-ORG_NAME-ORG_HASH_ID לחשבון שירות של IAM ב-apigee-mart. ‫MART ו-Connect agent משתמשים באותו חשבון שירות של IAM.

        קוד

        gcloud iam service-accounts add-iam-policy-binding \
          APIGEE_MART_SA_EMAIL \
            --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/MAPPED_SUBJECT" \
            --role=roles/iam.workloadIdentityUser

        דוגמה

        gcloud iam service-accounts add-iam-policy-binding \
          apigee-mart@my-project.iam.gserviceaccount.com \
            --member="principal://iam.googleapis.com/projects/1234567890/locations/global/workloadIdentityPools/my-pool/subject/system:serviceaccount:apigee:apigee-mart-my-org-123abcd" \
            --role=roles/iam.workloadIdentityUser

        Mint task scheduler KSA: (אם משתמשים במונטיזציה ל-Apigee Hybrid)

        חשבון שירות של Kubernetes ב-apigee-mint-task-scheduler-ORG_NAME-ORG_HASH_ID לחשבון שירות של IAM ב-apigee-mint-task-scheduler.

        קוד

        gcloud iam service-accounts add-iam-policy-binding \
          APIGEE_MINT_TASK_SCHEDULER_SA_EMAIL \
            --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/MAPPED_SUBJECT" \
            --role=roles/iam.workloadIdentityUser

        דוגמה

        gcloud iam service-accounts add-iam-policy-binding \
          apigee-mint-task-scheduler@my-project.iam.gserviceaccount.com \
            --member="principal://iam.googleapis.com/projects/1234567890/locations/global/workloadIdentityPools/my-pool/subject/system:serviceaccount:apigee:apigee-mint-task-scheduler-my-org-123abcd" \
            --role=roles/iam.workloadIdentityUser

        ‫Org-scoped UDCA KSA: חשבון שירות של Kubernetes‏ apigee-udca-ORG_NAME-ORG_HASH_ID לחשבון שירות של IAM‏ apigee-udca.

        קוד

        gcloud iam service-accounts add-iam-policy-binding \
          APIGEE_UDCA_SA_EMAIL \
            --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/MAPPED_SUBJECT" \
            --role=roles/iam.workloadIdentityUser

        דוגמה

        gcloud iam service-accounts add-iam-policy-binding \
          apigee-udca-task-scheduler@my-project.iam.gserviceaccount.com \
            --member="principal://iam.googleapis.com/projects/1234567890/locations/global/workloadIdentityPools/my-pool/subject/system:serviceaccount:apigee:apigee-udca-my-org-123abcd" \
            --role=roles/iam.workloadIdentityUser

        ‫Watcher KSA: חשבון שירות של Kubernetes ב-apigee-watcher-ORG_NAME-ORG_HASH_ID לחשבון שירות של IAM ב-apigee-watcher.

        קוד

        gcloud iam service-accounts add-iam-policy-binding \
          APIGEE_WATCHER_SA_EMAIL \
            --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/MAPPED_SUBJECT" \
            --role=roles/iam.workloadIdentityUser

        דוגמה

        gcloud iam service-accounts add-iam-policy-binding \
          apigee-watcher@my-project.iam.gserviceaccount.com \
            --member="principal://iam.googleapis.com/projects/1234567890/locations/global/workloadIdentityPools/my-pool/subject/system:serviceaccount:apigee:apigee-watcher-my-org-123abcd" \
            --role=roles/iam.workloadIdentityUser

        לא בסביבת ייצור

        Connect agent KSA: חשבון שירות של Kubernetes‏ (apigee-connect-agent-ORG_NAME-ORG_HASH_ID) לחשבון שירות של IAM‏ (apigee-non-prod).

        קוד

        gcloud iam service-accounts add-iam-policy-binding \
          NON_PROD_IAM_SA_EMAIL \
            --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/MAPPED_SUBJECT" \
            --role=roles/iam.workloadIdentityUser

        דוגמה

        gcloud iam service-accounts add-iam-policy-binding \
          apigee-non-prod@my-project.iam.gserviceaccount.com \
            --member="principal://iam.googleapis.com/projects/1234567890/locations/global/workloadIdentityPools/my-pool/subject/system:serviceaccount:apigee:apigee-connect-agent-my-org-123abcd" \
            --role=roles/iam.workloadIdentityUser

        ‫MART KSA: חשבון שירות של Kubernetes ב-apigee-mart-ORG_NAME-ORG_HASH_ID לחשבון שירות של IAM ב-apigee-non-prod.

        קוד

        gcloud iam service-accounts add-iam-policy-binding \
          NON_PROD_IAM_SA_EMAIL \
            --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/MAPPED_SUBJECT" \
            --role=roles/iam.workloadIdentityUser

        דוגמה

        gcloud iam service-accounts add-iam-policy-binding \
          apigee-non-prod@my-project.iam.gserviceaccount.com \
            --member="principal://iam.googleapis.com/projects/1234567890/locations/global/workloadIdentityPools/my-pool/subject/system:serviceaccount:apigee:apigee-mart-my-org-123abcd" \
            --role=roles/iam.workloadIdentityUser

        Mint task scheduler KSA: (אם משתמשים במונטיזציה ל-Apigee Hybrid)

        חשבון שירות אחד (apigee-mint-task-scheduler-ORG_NAME-UUIORG_HASH_IDD) ב-Kubernetes לחשבון שירות אחד (apigee-non-prod) ב-IAM.

        קוד

        gcloud iam service-accounts add-iam-policy-binding \
          NON_PROD_IAM_SA_EMAIL \
            --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/MAPPED_SUBJECT" \
            --role=roles/iam.workloadIdentityUser

        דוגמה

        gcloud iam service-accounts add-iam-policy-binding \
          apigee-non-prod@my-project.iam.gserviceaccount.com \
            --member="principal://iam.googleapis.com/projects/1234567890/locations/global/workloadIdentityPools/my-pool/subject/system:serviceaccount:apigee:apigee-mint-task-scheduler-my-org-123abcd" \
            --role=roles/iam.workloadIdentityUser

        ‫Org-scoped UDCA KSA: חשבון שירות של Kubernetes‏ apigee-udca-ORG_NAME-ORG_HASH_ID לחשבון שירות של IAM‏ apigee-non-prod.

        קוד

        gcloud iam service-accounts add-iam-policy-binding \
          NON_PROD_IAM_SA_EMAIL \
            --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/MAPPED_SUBJECT" \
            --role=roles/iam.workloadIdentityUser

        דוגמה

        gcloud iam service-accounts add-iam-policy-binding \
          apigee-non-prod@my-project.iam.gserviceaccount.com \
            --member="principal://iam.googleapis.com/projects/1234567890/locations/global/workloadIdentityPools/my-pool/subject/system:serviceaccount:apigee:apigee-udca-my-org-123abcd" \
            --role=roles/iam.workloadIdentityUser

        ‫Watcher KSA: חשבון שירות של Kubernetes ב-apigee-watcher-ORG_NAME-ORG_HASH_ID לחשבון שירות של IAM ב-apigee-non-prod.

        קוד

        gcloud iam service-accounts add-iam-policy-binding \
          NON_PROD_IAM_SA_EMAIL \
            --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/MAPPED_SUBJECT" \
            --role=roles/iam.workloadIdentityUser

        דוגמה

        gcloud iam service-accounts add-iam-policy-binding \
          apigee-non-prod@my-project.iam.gserviceaccount.com \
            --member="principal://iam.googleapis.com/projects/1234567890/locations/global/workloadIdentityPools/my-pool/subject/system:serviceaccount:apigee:apigee-watcher-my-org-123abcd" \
            --role=roles/iam.workloadIdentityUser
  8. מתקינים את הסביבה.

    צריך להתקין סביבה אחת בכל פעם. מציינים את הסביבה באמצעות --set env=ENV_NAME. אם הגדרתם את משתנה הסביבה $ENV_NAME במעטפת, אתם יכולים להשתמש בו בפקודות הבאות:

    1. הרצת בדיקה:

      helm upgrade ENV_RELEASE_NAME apigee-env/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        --set env=$ENV_NAME \
        -f overrides.yaml \
        --dry-run=server
      

        ‫ENV_RELEASE_NAME הוא שם שמשמש למעקב אחרי ההתקנה והשדרוגים של התרשים apigee-env. השם הזה חייב להיות ייחודי ושונה משמות אחרים של גרסאות Helm בהתקנה. בדרך כלל זהה ל-ENV_NAME. עם זאת, אם לסביבה יש שם זהה לזה של קבוצת הסביבות, צריך להשתמש בשמות שונים לגרסאות של הסביבה ושל קבוצת הסביבות, לדוגמה dev-env-release ו-dev-envgroup-release. מידע נוסף על גרסאות ב-Helm זמין במאמר Three big concepts במסמכי התיעוד של Helm.

    2. מתקינים את התרשים:

      helm upgrade ENV_RELEASE_NAME apigee-env/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        --set env=$ENV_NAME \
        -f overrides.yaml
      
    3. כדי לוודא שהיא פועלת, בודקים את המצב של הסביבה הרלוונטית:

      kubectl -n APIGEE_NAMESPACE get apigeeenv
      
      NAME                       STATE     AGE   GATEWAYTYPE
      apigee-my-project-my-env   running   3m1s
      
    4. נותנים לחשבונות השירות של Kubernetes ברמת הסביבה גישה להתחזות לחשבונות השירות המשויכים של IAM.
      1. מציגים את כתובת האימייל של חשבונות השירות ב-IAM שמשמשים את הרכיבים apigee-runtime,‏ apigee-synchronizer ו-apigee-udca:

        ייצור

        gcloud iam service-accounts list --project PROJECT_ID | grep "apigee-runtime\|apigee-synchronizer\|apigee-udca"

        לא בסביבת ייצור

        gcloud iam service-accounts list --project PROJECT_ID | grep "apigee-non-prod"
        gcloud iam service-accounts list --project PROJECT_ID | grep "apigee-mart\|apigee-udca\|apigee-watcher"

        הפלט אמור להיראות כך:

        ייצור

        apigee-runtime         apigee-runtime@my-project.iam.gserviceaccount.com         False
        apigee-synchronizer    apigee-synchronizer@my-project.iam.gserviceaccount.com      False
        apigee-udca            apigee-udca@my-project.iam.gserviceaccount.com         False
                          

        לא בסביבת ייצור

        apigee-non-prod     apigee-non-prod@my-project.iam.gserviceaccount.com         False
                          
      2. מציגים את רשימת חשבונות השירות של Kubernetes ברמת הסביבה:
        kubectl get serviceaccount -n APIGEE_NAMESPACE | grep "apigee-runtime\|apigee-synchronizer\|apigee-udca"

        הפלט אמור להיראות כך:

        apigee-runtime-my-project--my-env-cdef123          0   19m
        apigee-synchronizer-my-project-my-env-cdef123      0   17m
        apigee-udca-my-project-123abcd                     0   1h29m
        apigee-udca-my-project-my-env-cdef123              0   22m
                      
      3. כדי לתת לחשבונות השירות של Kubernetes ברמת הסביבה גישה להתחזות לחשבונות השירות המשויכים של IAM, משתמשים בפקודה הבאה:

        ייצור

        ‫KSA של זמן ריצה: apigee-runtime-PROJECT_ID-ENV_NAME-ENV_HASH_ID-sa KSA ל-apigee-runtime Google IAM SA

        קוד

        gcloud iam service-accounts add-iam-policy-binding \
          RUNTIME_IAM_SA_EMAIL \
            --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/MAPPED_SUBJECT" \
            --role=roles/iam.workloadIdentityUser

        דוגמה

        gcloud iam service-accounts add-iam-policy-binding \
          apigee-runtime@my-project.iam.gserviceaccount.com \
            --member="principal://iam.googleapis.com/projects/1234567890/locations/global/workloadIdentityPools/my-pool/subject/system:serviceaccount:apigee:apigee-runtime-my-project-my-env-cdef123" \
            --role=roles/iam.workloadIdentityUser

        ‫Synchronizer KSA: ‏apigee-synchronizer-PROJECT_ID-ENV_NAME-ENV_HASH_ID-sa KSA ל-apigee-synchronizer Google IAM SA

        קוד

        gcloud iam service-accounts add-iam-policy-binding \
          SYNCHRONIZER_IAM_SA_EMAIL \
            --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/MAPPED_SUBJECT" \
            --role=roles/iam.workloadIdentityUser

        דוגמה

        gcloud iam service-accounts add-iam-policy-binding \
          apigee-synchronizer@my-project.iam.gserviceaccount.com \
            --member="principal://iam.googleapis.com/projects/1234567890/locations/global/workloadIdentityPools/my-pool/subject/system:serviceaccount:apigee:apigee-synchronizer-my-project-my-env-cdef123" \
            --role=roles/iam.workloadIdentityUser

        ‫UDCA KSA: ‏apigee-udca-PROJECT_ID-ENV_NAME-ENV_HASH_ID-sa KSA אל apigee-udca Google IAM SA

        קוד

        gcloud iam service-accounts add-iam-policy-binding \
          UDCA_IAM_SA_EMAIL \
            --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/MAPPED_SUBJECT" \
            --role=roles/iam.workloadIdentityUser

        דוגמה

        gcloud iam service-accounts add-iam-policy-binding \
          apigee-udca@my-project.iam.gserviceaccount.com \
            --member="principal://iam.googleapis.com/projects/1234567890/locations/global/workloadIdentityPools/my-pool/subject/system:serviceaccount:apigee:apigee-udca-my-project-my-env-cdef123" \
            --role=roles/iam.workloadIdentityUser

        לא בסביבת ייצור

        ‫KSA של זמן ריצה: apigee-runtime-PROJECT_ID-ENV_NAME-ENV_HASH_ID-sa KSA אל apigee-non-prod Google IAM SA

        קוד

        gcloud iam service-accounts add-iam-policy-binding \
          NON_PROD_IAM_SA_EMAIL \
            --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/MAPPED_SUBJECT" \
            --role=roles/iam.workloadIdentityUser

        דוגמה

        gcloud iam service-accounts add-iam-policy-binding \
          apigee-non-prod@my-project.iam.gserviceaccount.com \
            --member="principal://iam.googleapis.com/projects/1234567890/locations/global/workloadIdentityPools/my-pool/subject/system:serviceaccount:apigee:apigee-runtime-my-project-my-env-cdef123" \
            --role=roles/iam.workloadIdentityUser

        לא בסביבת ייצור

        ‫Synchronizer KSA: ‏apigee-synchronizer-PROJECT_ID-ENV_NAME-ENV_HASH_ID-sa KSA ל-apigee-non-prod Google IAM SA

        קוד

        gcloud iam service-accounts add-iam-policy-binding \
          NON_PROD_IAM_SA_EMAIL \
            --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/MAPPED_SUBJECT" \
            --role=roles/iam.workloadIdentityUser

        דוגמה

        gcloud iam service-accounts add-iam-policy-binding \
          apigee-non-prod@my-project.iam.gserviceaccount.com \
            --member="principal://iam.googleapis.com/projects/1234567890/locations/global/workloadIdentityPools/my-pool/subject/system:serviceaccount:apigee:apigee-synchronizer-my-project-my-env-cdef123" \
            --role=roles/iam.workloadIdentityUser

        לא בסביבת ייצור

        ‫UDCA KSA: ‏apigee-udca-PROJECT_ID-ENV_NAME-ENV_HASH_ID-sa KSA אל apigee-non-prod Google IAM SA

        קוד

        gcloud iam service-accounts add-iam-policy-binding \
          NON_PROD_IAM_SA_EMAIL \
            --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/MAPPED_SUBJECT" \
            --role=roles/iam.workloadIdentityUser

        דוגמה

        gcloud iam service-accounts add-iam-policy-binding \
          apigee-non-prod@my-project.iam.gserviceaccount.com \
            --member="principal://iam.googleapis.com/projects/1234567890/locations/global/workloadIdentityPools/my-pool/subject/system:serviceaccount:apigee:apigee-udca-my-project-my-env-cdef123" \
            --role=roles/iam.workloadIdentityUser
  9. מתקינים את קבוצות הסביבה (virtualhosts).
    1. צריך להתקין קבוצת סביבות (מארח וירטואלי) אחת בכל פעם. מציינים את קבוצת הסביבות באמצעות --set envgroup=ENV_GROUP. אם הגדרתם את משתנה הסביבה $ENV_GROUP במעטפת, אתם יכולים להשתמש בו בפקודות הבאות. חוזרים על הפקודות הבאות לכל קבוצת סביבות שמוזכרת בקובץ overrides.yaml:

      הרצת בדיקה:

      helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        --set envgroup=$ENV_GROUP \
        -f overrides.yaml \
        --dry-run=server
      

        ‫ENV_GROUP_RELEASE_NAME הוא שם שמשמש למעקב אחרי ההתקנה והשדרוגים של התרשים apigee-virtualhosts. השם הזה חייב להיות ייחודי ושונה משמות אחרים של גרסאות Helm בהתקנה. בדרך כלל זהה ל-ENV_GROUP. עם זאת, אם לקבוצת הסביבות יש שם זהה לשם של סביבה בהתקנה, צריך להשתמש בשמות שונים לגרסאות של קבוצת הסביבות והסביבה, למשל dev-envgroup-release ו-dev-env-release. מידע נוסף על גרסאות ב-Helm זמין במאמר Three big concepts במאמרי העזרה של Helm.

    2. מתקינים את התרשים:

      helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        --set envgroup=$ENV_GROUP \
        -f overrides.yaml
      
    3. בודקים את המצב של ApigeeRoute‏ (AR).

      התקנת virtualhosts יוצרת את ApigeeRouteConfig‏ (ARC), שיוצר באופן פנימי את ApigeeRoute‏ (AR) אחרי שה-Apigee watcher שולף פרטים שקשורים לקבוצת הסביבות ממישור הבקרה. לכן, צריך לבדוק שהמצב של ה-AR התואם הוא "פועל":

      kubectl -n APIGEE_NAMESPACE get arc
      
      NAME                                STATE   AGE
      apigee-org1-dev-egroup                       2m
      
      kubectl -n APIGEE_NAMESPACE get ar
      
      NAME                                                        STATE     AGE
      apigee-ingressgateway-internal-chaining-my-project-123abcd   running   19m
      my-project-myenvgroup-000-321dcba                            running   2m30s
      

השלב הבא

בשלב הבא תגדירו את שער הכניסה של Apigee ותפרסו שרת proxy כדי לבדוק את ההתקנה.

(הבא) שלב 1: חשיפת ה-ingress של Apigee 2