שדרוג של Apigee Hybrid לגרסה 1.16

ההליך הזה מתייחס לשדרוג מגרסה 1.15.x של Apigee Hybrid לגרסה 1.16.11 של Apigee Hybrid, ולשדרוג מגרסאות קודמות של Hybrid 1.16.x לגרסה 1.16.11.

השתמשו באותם תהליכים לשדרוג גרסאות משניות (לדוגמה, מגרסה 1.15 לגרסה 1.16) ולשדרוג גרסאות תיקון (לדוגמה, מגרסה 1.16.0 לגרסה 1.16.11).

אם אתם משדרגים מגרסה 1.14 או גרסה ישנה יותר של Apigee Hybrid, קודם אתם צריכים לשדרג לגרסה 1.15 ורק אז לגרסה 1.16.11. אפשר לעיין בהוראות בנושא שדרוג Apigee Hybrid לגרסה 1.15.

שינויים מגרסה Apigee Hybrid v1.15

שימו לב לשינויים הבאים:

  • פרופילי Seccomp: החל מגרסה 1.16, ב-Apigee Hybrid אפשר להחיל פרופילי Seccomp על רכיבי זמן הריצה, וכך לשפר משמעותית את מצב האבטחה של הפריסה. התכונה הזו מאפשרת לאדמינים ולצוותי אבטחה של Apigee להגביל את קריאות המערכת שתהליך מבוסס-קונטיינר יכול לבצע לליבת המארח. אם מגבילים קונטיינר רק לקריאות המערכת הנחוצות, אפשר:
    • אבטחה משופרת: צמצום הסיכון לבריחה מקונטיינר ולהסלמת הרשאות (privilege escalation).
    • אכיפת הרשאות מינימליות: מוודאים שלרכיבים יש גישה רק לקריאות המערכת המדויקות שנדרשות לפעולה שלהם.
    • תאימות ל-Meet: מספק אמצעי בקרה קריטי לעמידה בדרישות מחמירות של תאימות לאבטחה.
    מידע נוסף זמין במאמר הגדרת פרופילי Seccomp לאבטחת פודים.
  • UDCA בהסרה של Apigee hybrid: ב-Apigee hybrid version 1.16, הוסר הרכיב Unified Data Collection Agent (UDCA). האחריות על שליחת נתוני ניתוח, מעקב ומצב פריסה למישור הבקרה של Apigee מתבצעת עכשיו באמצעות פייפליין נתונים שמבוסס על Google Cloud Pub/Sub. השימוש בפייפליין הנתונים שמבוסס על Pub/Sub הוא מנגנון ברירת המחדל לאיסוף נתונים מאז גרסה 1.14.0 של Apigee Hybrid.
  • חשבון שירות apigee-guardrails: בגרסה 1.16.0, ‏Apigee Hybrid מציג חשבון שירות apigee-guardrails ב-Google IAM. התרשים של apigee-operator משתמש בהרשאה הזו במהלך ההתקנה כדי לבדוק שכל ממשקי ה-API הנדרשים מופעלים בפרויקט.

    מידע נוסף:

  • תמיכה בגרסאות 1.18 ו-1.19 של cert-manager: גרסה 1.16 של Apigee Hybrid תומכת ב-cert-manager גרסה 1.18 וגרסה 1.19. בגרסה 1.18 של cert-manager, יש שינוי בערך ברירת המחדל של Certificate.Spec.PrivateKey.rotationPolicy שיכול להשפיע על התנועה. אם אתם משדרגים מגרסה קודמת של Apigee Hybrid לגרסה 1.18 ומעלה של cert-manager, פעלו לפי ההוראות בקטע שדרוג cert-manager במדריך הזה.

מידע נוסף על התכונות בגרסה 1.16 של Hybrid זמין בהערות לגבי הגרסה Apigee Hybrid v1.16.11.

דרישות מוקדמות

לפני שמשדרגים לגרסה 1.16 של Apigee Hybrid, צריך לוודא שההתקנה עומדת בדרישות הבאות:

לפני שמשדרגים לגרסה 1.16.11 – מגבלות והערות חשובות

  • בגרסה 1.16.11 של Apigee Hybrid יש מגבלה חדשה ומשופרת על מספר שרתי ה-Proxy לכל סביבה, שמאפשרת לפרוס יותר שרתי Proxy ותהליכים משותפים בסביבה אחת. במאמר מגבלות: שרתי proxy ל-API מוסברות המגבלות על מספר שרתי ה-proxy והתהליכים המשותפים שאפשר לפרוס בכל סביבה. התכונה הזו זמינה רק בארגונים היברידיים חדשים, ואי אפשר להחיל אותה על ארגונים משודרגים. כדי להשתמש בתכונה הזו, צריך להתקין מחדש את גרסה 1.16.11 של Hybrid וליצור ארגון חדש.

    התכונה הזו זמינה רק כחלק מתוכנית המינויים של 2024, וכפופה להרשאות שניתנות במסגרת המינוי הזה. מידע נוסף על התכונה הזו זמין במאמר מכסות משופרות של פרוקסי לכל סביבה.

  • יכול להיות ששדרוג לגרסה 1.16 של Apigee Hybrid ידרוש זמן השבתה.

    כשמשדרגים את בקר Apigee לגרסה 1.16.11, כל הפריסות של Apigee עוברות הפעלה מחדש מתגלגלת. כדי לצמצם את זמן ההשבתה בסביבות ייצור היברידיות במהלך הפעלה מחדש הדרגתית, ודאו שאתם מפעילים לפחות שני אשכולות (באותו אזור או מרכז נתונים, או באזורים או מרכזי נתונים שונים). להפנות את כל תנועת הייצור לאשכול יחיד ולהעביר את האשכול שאתם עומדים לשדרג למצב אופליין, ואז להמשיך בתהליך השדרוג. חוזרים על התהליך לכל אשכול.

    אנחנו ממליצים לשדרג את כל האשכולות בהקדם האפשרי אחרי שמתחילים את השדרוג, כדי לצמצם את הסיכויים להשפעה על הייצור. אין הגבלת זמן לגבי השדרוג של כל שאר האשכולות אחרי שדרוג האשכול הראשון. עם זאת, עד שכל האשכולות הנותרים ישודרגו, אי אפשר יהיה לגבות ולשחזר את Cassandra בגרסאות מעורבות. לדוגמה, אי אפשר להשתמש בגיבוי מגרסה 1.15 של Hybrid כדי לשחזר מכונה של גרסה 1.16 של Hybrid.

  • לא צריך להשעות לגמרי את השינויים במישור הניהול במהלך השדרוג. אם נדרשות השעיות זמניות לשינויים במישור הניהול, הן מצוינות בהוראות השדרוג שבהמשך.

סקירה כללית של השדרוג לגרסה 1.16.11

ההליכים לשדרוג Apigee Hybrid מאורגנים בקטעים הבאים:

  1. הכנות לשדרוג.
  2. התקנת גרסה 1.16.11 של זמן ריצה היברידי

הכנה לשדרוג לגרסה 1.16

גיבוי ההתקנה ההיברידית

  1. בהוראות האלה משתמשים במשתנה הסביבה APIGEE_HELM_CHARTS_HOME לספרייה במערכת הקבצים שבה התקנתם את תרשימי Helm. אם צריך, משנים את הספרייה לספרייה הזו ומגדירים את המשתנה באמצעות הפקודה הבאה:

    Linux

    export APIGEE_HELM_CHARTS_HOME=$PWD
    echo $APIGEE_HELM_CHARTS_HOME

    Mac OS

    export APIGEE_HELM_CHARTS_HOME=$PWD
    echo $APIGEE_HELM_CHARTS_HOME

    Windows

    set APIGEE_HELM_CHARTS_HOME=%CD%
    echo %APIGEE_HELM_CHARTS_HOME%
  2. יוצרים עותק גיבוי של ספריית $APIGEE_HELM_CHARTS_HOME/ בגרסה 1.15. אפשר להשתמש בכל תהליך גיבוי. לדוגמה, אפשר ליצור קובץ tar של כל הספרייה באמצעות:
    tar -czvf $APIGEE_HELM_CHARTS_HOME/../apigee-helm-charts-v1.15-backup.tar.gz $APIGEE_HELM_CHARTS_HOME
  3. מגבים את מסד הנתונים של Cassandra לפי ההוראות במאמר גיבוי ושחזור של Cassandra.
  4. מוודאים שקובצי המפתח ואישור ה-TLS (.crt, .key או .pem) נמצאים בספרייה $APIGEE_HELM_CHARTS_HOME/apigee-virtualhost/.

שדרוג גרסת Kubernetes

בודקים את הגרסה של פלטפורמת Kubernetes, ואם צריך, משדרגים את פלטפורמת Kubernetes לגרסה שנתמכת גם ב-hybrid 1.15 וגם ב-hybrid 1.16. אם אתם צריכים עזרה, כדאי לעיין במאמרי העזרה של הפלטפורמה.

מורידים את תרשימי ה-Helm של Apigee.

תרשימי Apigee Hybrid מתארחים ב-Google Artifact Registry:

oci://us-docker.pkg.dev/apigee-release/apigee-hybrid-helm-charts

כדי להעתיק את כל תרשימי ה-Helm של Apigee hybrid לאחסון המקומי, משתמשים בפקודה pull הבאה:

export CHART_REPO=oci://us-docker.pkg.dev/apigee-release/apigee-hybrid-helm-charts
export CHART_VERSION=1.16.11
helm pull $CHART_REPO/apigee-operator --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-datastore --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-env --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-ingress-manager --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-org --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-redis --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-telemetry --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-virtualhost --version $CHART_VERSION --untar

עריכת kustomization.yaml למרחב שמות מותאם אישית של Apigee

אם מרחב השמות של Apigee הוא לא apigee, עורכים את הקובץ apigee-operator/etc/crds/default/kustomization.yaml ומחליפים את הערך namespace במרחב השמות של Apigee.

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

namespace: APIGEE_NAMESPACE

אם אתם משתמשים ב-apigee כמרחב השמות, אתם לא צריכים לערוך את הקובץ.

  • מתקינים את ה-CRD המעודכנים של Apigee:
    1. משתמשים בתכונת ההרצה היבשה של kubectl על ידי הרצת הפקודה הבאה:

      kubectl apply -k  apigee-operator/etc/crds/default/ --server-side --force-conflicts --validate=false --dry-run=server
      
    2. אחרי האימות באמצעות הפקודה להרצה יבשה, מריצים את הפקודה הבאה:

      kubectl apply -k  apigee-operator/etc/crds/default/ \
        --server-side \
        --force-conflicts \
        --validate=false
      
    3. מאמתים את ההתקנה באמצעות הפקודה kubectl get crds:
      kubectl get crds | grep apigee

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

      apigeedatastores.apigee.cloud.google.com                    2024-08-21T14:48:30Z
      apigeedeployments.apigee.cloud.google.com                   2024-08-21T14:48:30Z
      apigeeenvironments.apigee.cloud.google.com                  2024-08-21T14:48:31Z
      apigeeissues.apigee.cloud.google.com                        2024-08-21T14:48:31Z
      apigeeorganizations.apigee.cloud.google.com                 2024-08-21T14:48:32Z
      apigeeredis.apigee.cloud.google.com                         2024-08-21T14:48:33Z
      apigeerouteconfigs.apigee.cloud.google.com                  2024-08-21T14:48:33Z
      apigeeroutes.apigee.cloud.google.com                        2024-08-21T14:48:33Z
      apigeetelemetries.apigee.cloud.google.com                   2024-08-21T14:48:34Z
      cassandradatareplications.apigee.cloud.google.com           2024-08-21T14:48:35Z
      
  • בודקים את התוויות בצמתים של האשכול. כברירת מחדל, Apigee מתזמן פודים של נתונים בצמתים עם התווית cloud.google.com/gke-nodepool=apigee-data, ופודים של זמן ריצה מתזמנים בצמתים עם התווית cloud.google.com/gke-nodepool=apigee-runtime. אתם יכולים להתאים אישית את תוויות מאגר הצמתים בקובץ overrides.yaml.

    מידע נוסף זמין במאמר הגדרת מאגרי צמתים ייעודיים.

  • הגדרה של חשבון השירות apigee-guardrails

    החל מגרסה 1.16 של Apigee Hybrid, צריך את חשבון השירות apigee-guardrails כדי לשדרג את תרשים ה-Helm של apigee-operator.

    בתהליך הבא, בוחרים את סוג האימות של חשבון השירות שבו משתמשים.

    1. מוודאים שאפשר להפעיל את create-service-account. אם הרגע הורדתם את התרשימים, יכול להיות שקובץ create-service-account לא במצב הפעלה. בספרייה APIGEE_HELM_CHARTS_HOME, מריצים את הפקודה הבאה:
      ./apigee-operator/etc/tools/create-service-account --help

      אם הפלט מציין permission denied שצריך להפוך את הקובץ לניתן להפעלה, למשל באמצעות chmod ב-Linux, ב-MacOS או ב-UNIX, או בסייר הקבצים ב-Windows או באמצעות הפקודה icacls ב-Windows. לדוגמה:

      chmod +x ./apigee-operator/etc/tools/create-service-account
    2. יוצרים את חשבון השירות apigee-guardrails:

      סודות של Kubernetes

      ./apigee-operator/etc/tools/create-service-account \
        --env prod \
        --profile apigee-guardrails \
        --dir service-accounts

      הפקודה הזו יוצרת את חשבון השירות apigee-guardrails ומורידה את המפתח לספרייה service-accounts/.

      קובצי JSON

      ./apigee-operator/etc/tools/create-service-account \
        --env prod \
        --profile apigee-guardrails \
        --dir ./apigee-operator/

      הפקודה הזו יוצרת את חשבון השירות apigee-guardrails ומורידה את המפתח לספריית התרשים apigee-operator/.

      Vault

      ./apigee-operator/etc/tools/create-service-account \
        --env prod \
        --profile apigee-guardrails \
        --dir service-accounts

      הפקודה הזו יוצרת את חשבון השירות apigee-guardrails ומורידה את המפתח לספרייה service-accounts/.

      ‫WIF ל-GKE

      ./apigee-operator/etc/tools/create-service-account \
        --env prod \
        --profile apigee-guardrails \
        --dir service-accounts

      הפקודה הזו יוצרת את חשבון השירות apigee-guardrails ומורידה את המפתח לספרייה apigee-operator/etc/tools/service-accounts/. אתם לא צריכים את קובץ המפתח שהורדתם ואתם יכולים למחוק אותו.

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

      ./apigee-operator/etc/tools/create-service-account \
        --env prod \
        --profile apigee-guardrails \
        --dir service-accounts

      הפקודה הזו יוצרת את חשבון השירות apigee-guardrails ומורידה את המפתח לספרייה service-accounts/.

    3. מגדירים אימות לחשבון השירות apigee-guardrails:

      סודות של Kubernetes

      יוצרים את הסוד של Kubernetes באמצעות קובץ המפתח של חשבון השירות apigee-guardrails בספרייה service-accounts/:

      kubectl create secret generic apigee-guardrails-svc-account \
          --from-file="client_secret.json=$APIGEE_HELM_CHARTS_HOME/service-accounts/$PROJECT_ID-apigee-guardrails.json" \
          -n $APIGEE_NAMESPACE

      מוסיפים לקובץ overrides.yaml את הנתונים הבאים:

      guardrails:
        serviceAccountRef: apigee-guardrails-svc-account

      קובצי JSON

      מוסיפים לקובץ overrides.yaml את הנתונים הבאים, באמצעות הנתיב לקובץ המפתח של חשבון השירות apigee-guardrails בספרייה apigee-operator/:

      guardrails:
        serviceAccountPath: $PROJECT_ID-apigee-guardrails.json

      Vault

      1. מעדכנים את הסוד של Vault‏ secret/data/apigee/orgsakeys כדי להוסיף רשומה של guardrails עם התוכן של קובץ המפתח של חשבון השירות apigee-guardrails.
        vault kv patch secret/apigee/orgsakeys guardrails="$(cat ./service-accounts/hybrid115-apigee-guardrails.json)"
        
      2. חשבון השירות של Kubernetes‏ (KSA) למעקות בטיחות נקרא apigee-operator-guardrails-sa. מוסיפים את ה-KSA של Guardrails לחשבונות השירות הספציפיים לארגון שמקושרים לתפקיד apigee-orgsakeys ב-Vault.
        1. מציגים את הרשימה הנוכחית של הקישורים של ה-KSA:
          vault read auth/kubernetes/role/apigee-orgsakeys
          

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

          Key                                         Value
          ---                                         -----
          alias_name_source                           serviceaccount_uid
          bound_service_account_names                 BOUND_SERVICE_ACCOUNT_NAMES
          bound_service_account_namespace_selector    n/a
          bound_service_account_namespaces            APIGEE_NAMESPACE

          בפלט, BOUND_SERVICE_ACCOUNT_NAMES היא רשימה של שמות חשבונות שירות שמופרדים בפסיקים. מוסיפים את apigee-operator-guardrails-sa לרשימת השמות. לדוגמה (ללא מעברי השורה שנוספו כדי שיהיה קל יותר לקרוא):

          apigee-manager,apigee-cassandra-default,apigee-cassandra-backup-sa,
          apigee-cassandra-restore-sa,apigee-cassandra-schema-setup-myhybrido
          rg-5b044c1,apigee-cassandra-schema-val-myhybridorg-5b044c1,apigee-c
          assandra-user-setup-myhybridorg-5b044c1,apigee-mart-myhybridorg-5b0
          44c1,apigee-mint-task-scheduler-myhybridorg-5b044c1,apigee-connect-
          agent-myhybridorg-5b044c1,apigee-watcher-myhybridorg-5b044c1,apigee
          -metrics-apigee-telemetry,apigee-open-telemetry,apigee-synchronizer
          -myhybridorg-dev-ee52aca,apigee-runtime-telemetry-collector-apigee-
          telemetry,apigee-logger-apigee-e-myhybrridorg-dev-ee52aca,apigee-sy
          nchronizer-myhybridog-prod-2d0221c,apigee-runtime-myhybridorg-prod-
          2d0221c,apigee-operator-guardrails-sa
        2. מעדכנים את הקישורים לתפקיד apigee-orgsakeys באמצעות הרשימה המעודכנת של שמות חשבונות השירות:
          vault write auth/kubernetes/role/apigee-orgsakeys \
            bound_service_account_names=UPDATED_BOUND_SERVICE_ACCOUNT_NAMES \
            bound_service_account_namespaces=APIGEE_NAMESPACE \
            policies=apigee-orgsakeys-auth \
            ttl=1m
          
      3. הוספת "מעקות בטיחות" ל-SecretProviderClass
        1. עורכים את הקובץ spc-org.yaml.
        2. בקטע spec.parameters.objects, מוסיפים רשומה של מעקי בטיחות:
                - objectName: "guardrails"
                  secretPath: ""
                  secretKey: ""
        3. עדכון של SecretProviderClass:
          kubectl -n APIGEE_NAMESPACE apply -f spc-org.yaml
          

      ‫WIF ל-GKE

      חשבון השירות של Kubernetes‏ (KSA) למעקות בטיחות נקרא apigee-operator-guardrails-sa. יוצרים את הקישור לחשבון השירות של Google‏ (GSA) ב-apigee-guardrails באמצעות הפקודה הבאה:

      gcloud iam service-accounts add-iam-policy-binding apigee-guardrails@$PROJECT_ID.iam.gserviceaccount.com \
          --role roles/iam.workloadIdentityUser \
          --member "serviceAccount:$PROJECT_ID.svc.id.goog[$APIGEE_NAMESPACE/apigee-operator-guardrails-sa]" \
          --project $PROJECT_ID

      מוסיפים לקובץ overrides.yaml את הנתונים הבאים:

      guardrails:
        gsa: apigee-guardrails@$PROJECT_ID.iam.gserviceaccount.com

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

      חשבון השירות של Kubernetes‏ (KSA) למעקות בטיחות נקרא apigee-operator-guardrails-sa. צריך לתת ל-KSA של מעקות הבטיחות גישה כדי להתחזות לחשבון השירות של Google‏ (GSA) ב-apigee-guardrails, ולהגדיר את השינויים כך שישתמשו בקובץ תצורה של פרטי כניסה.

      1. נותנים ל-KSA גישה להתחזות ל-GSA באמצעות הפקודה הבאה:

        תבנית

        gcloud iam service-accounts add-iam-policy-binding \
          apigee-guardrails@$PROJECT_ID.iam.gserviceaccount.com \
          --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/system:serviceaccount:APIGEE_NAMESPACE:apigee-operator-guardrails-sa" \
          --role=roles/iam.workloadIdentityUser

        דוגמה

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

        כאשר:

        • PROJECT_ID: מזהה הפרויקט בענן של Google.
        • ‫PROJECT_NUMBER: מספר הפרויקט שבו יצרתם את מאגר הזהויות של עומסי העבודה.
        • ‫POOL_ID: המזהה של מאגר הזהויות של עומסי העבודה.
        • ‫APIGEE_NAMESPACE: מרחב השמות שבו מותקן Apigee Hybrid.
      2. יוצרים קובץ תצורה של פרטי הכניסה לחשבון השירות apigee-guardrails:
        gcloud iam workload-identity-pools create-cred-config \
          projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/WORKLOAD_PROVIDER_ID \
          --service-account=apigee-guardrails@$PROJECT_ID.iam.gserviceaccount.com \
          --credential-source-file=/var/run/service-account/token \
          --credential-source-type=text \
          --output-file=apigee-guardrails-credential-configuration.json
            

        כאשר WORKLOAD_PROVIDER_ID הוא המזהה של ספק מאגר הזהויות של עומסי העבודה.

      3. מגדירים את apigee-guardrails לשימוש באיחוד שירותי אימות הזהות של עומסי עבודה באחת מהשיטות הבאות:

        ‫WIF: סודות

        1. יוצרים סוד חדש של Kubernetes באמצעות קובץ מקור פרטי הכניסה לכל קובץ תצורה של פרטי כניסה.
          kubectl create secret -n APIGEE_NAMESPACE generic guardrails-workload-identity-secret --from-file="client_secret.json=./apigee-guardrails-credential-configuration.json"
        2. מחליפים את הערך של serviceAccountRef בסוד החדש:
          guardrails:
            serviceAccountRef: guardrails-workload-identity-secret

        WIF: files

        מעבירים את קובץ apigee-guardrails-credential-configuration.json שנוצר לספריית התרשים של apigee-operator/.

        מוסיפים לקובץ overrides.yaml את הנתונים הבאים:

        guardrails:
          serviceAccountPath: apigee-guardrails-credential-configuration.json

        WIF: Vault

        צריך לעדכן את המפתח של חשבון השירות של guardrails ב-Vault באמצעות קובץ המקור התואם של פרטי הכניסה:

        SAKEY=$(cat .apigee-guardrails-credential-configuration.json); kubectl -n APIGEE_NAMESPACE exec vault-0 -- vault kv patch secret/apigee/orgsakeys guardrails="$SAKEY"

        מידע נוסף זמין בכתובת Storing service account keys in Hashicorp Vault.

    שדרוג של cert-manager

    גרסה 1.16 של Apigee Hybrid תומכת בגרסאות 1.16 עד 1.19 של cert-manager. יש שינוי ב-cert-manager 1.18 שעלול לגרום לבעיה בתנועה. בגרסה 1.18 של cert-manager, ערך ברירת המחדל של Certificate.Spec.PrivateKey.rotationPolicy השתנה מ-Never ל-Always. בהתקנות משודרגות של Apigee hybrid, זה עלול לגרום לבעיה בתנועה. כשמשדרגים לגרסה 1.16 של Hybrid מגרסה קודמת, צריך לערוך את האישור של apigee-ca כדי לפצות על השינוי הזה, או להשאיר את הגרסה של cert-manager בגרסה 1.17.x או בגרסה קודמת.

    לפני שמשדרגים את cert-manager לגרסה 1.18 או 1.19, צריך לערוך את האישור של apigee-ca כדי להגדיר את הערך של Certificate.Spec.PrivateKey.rotationPolicy ל-Never.

    1. בודקים את התוכן של האישור apigee-ca כדי לראות אם rotationPolicy מוגדר:
      kubectl get certificate apigee-ca -n cert-manager -o yaml
      

      מחפשים את הערכים בקטע spec.privateKey בפלט:

      ...
      spec:
        commonName: apigee-hybrid
        duration: 87600h
        isCA: true
        issuerRef:
          group: cert-manager.io
          kind: ClusterIssuer
          name: apigee-root-certificate-issuer
        privateKey:
          algorithm: ECDSA
          # Note: rotationPolicy would appear here if it is set.
          size: 256
        secretName: apigee-ca
      ...
    2. אם הערך של rotationPolicy לא מוגדר או אם הוא מוגדר ל-Always, צריך לערוך את האישור apigee-ca כדי להגדיר את הערך של rotationPolicy ל-Never:
      1. קודם מבצעים הרצה יבשה:
        kubectl patch Certificate \
          --dry-run=server \
          -n cert-manager \
          --type=json \
          -p='[{"op": "replace", "path": "/spec/privateKey/rotationPolicy", "value": "Never"}]' \
          -o=yaml \
          apigee-ca
        
      2. מתקנים את האישור:
        kubectl patch Certificate \
          -n cert-manager \
          --type=json \
          -p='[{"op": "replace", "path": "/spec/privateKey/rotationPolicy", "value": "Never"}]' \
          -o=yaml \
          apigee-ca
        
    3. מוודאים שהערך של rotationPolicy מוגדר עכשיו כ-Never:
      kubectl get certificate apigee-ca -n cert-manager -o yaml
      

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

      ...
      spec:
        commonName: apigee-hybrid
        duration: 87600h
        isCA: true
        issuerRef:
          group: cert-manager.io
          kind: ClusterIssuer
          name: apigee-root-certificate-issuer
        privateKey:
          algorithm: ECDSA
          rotationPolicy: Never
          size: 256
        secretName: apigee-ca
      ...
    4. משדרגים את cert-manager. הפקודה הבאה תוריד ותתקין את cert-manager v1.19.2:
      kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.19.2/cert-manager.yaml

      רשימת הגרסאות הנתמכות מופיעה במאמר פלטפורמות וגרסאות נתמכות: cert-manager.

    למידע נוסף:

    התקנת סביבת זמן הריצה של Apigee Hybrid בגרסה 1.16.11

    1. אם לא, עוברים לספרייה APIGEE_HELM_CHARTS_HOME. מריצים את הפקודות הבאות מהספרייה הזו.
    2. משדרגים את Apigee Operator/Controller:

      הרצת בדיקה:

      helm upgrade operator apigee-operator/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        -f OVERRIDES_FILE \
        --dry-run=server
      

      כדי לשדרג את התרשים:

      helm upgrade operator apigee-operator/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        -f OVERRIDES_FILE
      

      אימות ההתקנה של Apigee Operator:

      helm ls -n APIGEE_NAMESPACE
      
      NAME       NAMESPACE       REVISION   UPDATED                                STATUS     CHART                   APP VERSION
      operator   apigee   3          2024-08-21 00:42:44.492009 -0800 PST   deployed   apigee-operator-1.16.11   1.16.11
      

      כדי לוודא שהיא פועלת, בודקים את הזמינות שלה:

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

      הרצת בדיקה:

      helm upgrade datastore apigee-datastore/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        -f OVERRIDES_FILE \
        --dry-run=server
      

      כדי לשדרג את התרשים:

      helm upgrade datastore apigee-datastore/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        -f OVERRIDES_FILE
      

      כדי לוודא ש-apigeedatastore פועל, בודקים את המצב שלו:

      kubectl -n APIGEE_NAMESPACE get apigeedatastore default
      
      NAME      STATE       AGE
      default   running    2d
    4. שדרוג הטלמטריה של Apigee:

      הרצת בדיקה:

      helm upgrade telemetry apigee-telemetry/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        -f OVERRIDES_FILE \
        --dry-run=server
      

      שדרוג התרשים:

      helm upgrade telemetry apigee-telemetry/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        -f OVERRIDES_FILE
      

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

      kubectl -n APIGEE_NAMESPACE get apigeetelemetry apigee-telemetry
      
      NAME               STATE     AGE
      apigee-telemetry   running   2d
    5. שדרוג של Apigee Redis:

      הרצת בדיקה:

      helm upgrade redis apigee-redis/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        -f OVERRIDES_FILE \
        --dry-run=server
      

      שדרוג התרשים:

      helm upgrade redis apigee-redis/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        -f OVERRIDES_FILE
      

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

      kubectl -n APIGEE_NAMESPACE get apigeeredis default
      
      NAME      STATE     AGE
      default   running   2d
    6. שדרוג של Apigee ingress manager:

      הרצת בדיקה:

      helm upgrade ingress-manager apigee-ingress-manager/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        -f OVERRIDES_FILE \
        --dry-run=server
      

      כדי לשדרג את התרשים:

      helm upgrade ingress-manager apigee-ingress-manager/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        -f OVERRIDES_FILE
      

      כדי לוודא שהיא פועלת, בודקים את הזמינות שלה:

      kubectl -n APIGEE_NAMESPACE get deployment apigee-ingressgateway-manager
      
      NAME                            READY   UP-TO-DATE   AVAILABLE   AGE
      apigee-ingressgateway-manager   2/2     2            2           2d
    7. משדרגים את הארגון ב-Apigee:

      הרצת בדיקה:

      helm upgrade ORG_NAME apigee-org/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        -f OVERRIDES_FILE \
        --dry-run=server
      

      שדרוג התרשים:

      helm upgrade ORG_NAME apigee-org/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        -f OVERRIDES_FILE
      

      כדי לוודא שהיא פועלת, בודקים את המצב של הארגון הרלוונטי:

      kubectl -n APIGEE_NAMESPACE get apigeeorg
      
      NAME                      STATE     AGE
      apigee-my-org-my-env      running   2d
    8. משדרגים את הסביבה.

      צריך להתקין סביבה אחת בכל פעם. מציינים את הסביבה באמצעות --set env=ENV_NAME.

      הרצת בדיקה:

      helm upgrade ENV_RELEASE_NAME apigee-env/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --set env=ENV_NAME \
        -f OVERRIDES_FILE \
        --dry-run=server
      
      • ‫ENV_RELEASE_NAME הוא שם שמשמש למעקב אחרי ההתקנה והשדרוגים של התרשים apigee-env. השם הזה חייב להיות ייחודי ושונה משמות אחרים של גרסאות Helm בהתקנה. בדרך כלל, זוהי כתובת ה-URL הסופית של ENV_NAME. עם זאת, אם לסביבה יש שם זהה לשם של קבוצת הסביבות, צריך להשתמש בשמות שונים לגרסאות של הסביבה ושל קבוצת הסביבות, למשל dev-env-release ו-dev-envgroup-release. מידע נוסף על גרסאות ב-Helm זמין במאמר Three big concepts (שלושה מושגים חשובים) במאמרי העזרה של Helm.
      • ‫ENV_NAME הוא שם הסביבה שמשדרגים.
      • ‫OVERRIDES_FILE הוא קובץ ההחלפות החדש שלך לגרסה 1.16.11

      שדרוג התרשים:

      helm upgrade ENV_RELEASE_NAME apigee-env/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --set env=ENV_NAME \
        -f OVERRIDES_FILE
      

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

      kubectl -n APIGEE_NAMESPACE get apigeeenv
      
      NAME                          STATE       AGE   GATEWAYTYPE
      apigee-my-org-my-env          running     2d
    9. משדרגים את קבוצות הסביבות (virtualhosts).
      1. צריך לשדרג קבוצת סביבות (virtualhost) אחת בכל פעם. מציינים את קבוצת הסביבות באמצעות --set envgroup=ENV_GROUP_NAME. חוזרים על הפקודות הבאות לכל קבוצת סביבות שמוזכרת בקובץ overrides.yaml:

        הרצת בדיקה:

        helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \
          --install \
          --namespace APIGEE_NAMESPACE \
          --set envgroup=ENV_GROUP_NAME \
          -f OVERRIDES_FILE \
          --dry-run=server
        

        ‫ENV_GROUP_RELEASE_NAME הוא השם שבו התקנתם בעבר את התרשים apigee-virtualhost. בדרך כלל זה ENV_GROUP_NAME.

        שדרוג התרשים:

        helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \
          --install \
          --namespace APIGEE_NAMESPACE \
          --set envgroup=ENV_GROUP_NAME \
          -f OVERRIDES_FILE
        
      2. בודקים את המצב של ApigeeRoute ‏ (AR).

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

        kubectl -n APIGEE_NAMESPACE get arc
        
        NAME                                STATE   AGE
        apigee-org1-dev-egroup                       2d
        kubectl -n APIGEE_NAMESPACE get ar
        
        NAME                                        STATE     AGE
        apigee-org1-dev-egroup-123abc               running   2d
    10. אחרי שמוודאים שכל ההתקנות שודרגו בהצלחה, מוחקים את הגרסה הישנה יותר של apigee-operator ממרחב השמות apigee-system.
      1. מסירים את הגרסה הישנה של operator:
        helm delete operator -n apigee-system
        
      2. מוחקים את מרחב השמות apigee-system:
        kubectl delete namespace apigee-system
        
    11. משדרגים את operator שוב במרחב השמות של Apigee כדי להתקין מחדש את המשאבים שנמחקו בהיקף האשכול:
      helm upgrade operator apigee-operator/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      

    חזרה לגרסה קודמת

    כדי לחזור לגרסה הקודמת, משתמשים בגרסה הישנה יותר של התרשים כדי לחזור אחורה בתהליך השדרוג בסדר הפוך. מתחילים עם apigee-virtualhost וחוזרים אחורה עד apigee-operator, ואז מחזירים את ה-CRD.

    1. מבטלים את השינויים בתרשימים. הפקודות הבאות מניחות שאתם משתמשים בתרשימים מהגרסה הקודמת (v1.15.x).
      1. מריצים את הפקודה הבאה לכל קבוצת סביבות:

        helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \
          --install \
          --namespace APIGEE_NAMESPACE \
          --atomic \
          --set envgroup=ENV_GROUP_NAME \
          -f 1.15_OVERRIDES_FILE
        
      2. מריצים את הפקודה הבאה לכל סביבה:

        helm upgrade ENV_RELEASE_NAME apigee-env/ \
          --install \
          --namespace APIGEE_NAMESPACE \
          --atomic \
          --set env=ENV_NAME \
          -f 1.15_OVERRIDES_FILE
        
      3. apigee-org:

        helm upgrade ORG_NAME apigee-org/ \
          --install \
          --namespace APIGEE_NAMESPACE \
          --atomic \
          -f 1.15_OVERRIDES_FILE
        
      4. apigee-ingress-manager:

        helm upgrade ingress-manager apigee-ingress-manager/ \
          --install \
          --namespace APIGEE_NAMESPACE \
          --atomic \
          -f 1.15_OVERRIDES_FILE
        
      5. apigee-redis:

        helm upgrade redis apigee-redis/ \
          --install \
          --namespace APIGEE_NAMESPACE \
          --atomic \
          -f 1.15_OVERRIDES_FILE
        
      6. apigee-telemetry:

        helm upgrade telemetry apigee-telemetry/ \
          --install \
          --namespace APIGEE_NAMESPACE \
          --atomic \
          -f 1.15_OVERRIDES_FILE
        
      7. apigee-datastore:

        helm upgrade datastore apigee-datastore/ \
          --install \
          --namespace APIGEE_NAMESPACE \
          --atomic \
          -f 1.15_OVERRIDES_FILE
        
      8. apigee-operator:

        helm upgrade operator apigee-operator/ \
          --install \
          --namespace APIGEE_NAMESPACE \
          --atomic \
          -f 1.15_OVERRIDES_FILE
        
    2. כדי לחזור לגרסה הקודמת של ה-CRD, מתקינים מחדש את ה-CRD הישנים יותר.
      kubectl apply -k apigee-operator/etc/crds/default/ \
        --server-side \
        --force-conflicts \
        --validate=false