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

אותן פעולות נדרשות גם לשדרוג גרסאות משניות (לדוגמה, מגרסה 1.6 לגרסה 1.7) וגם לשדרוג גרסאות של תיקוני אבטחה (לדוגמה, מגרסה 1.7.0 לגרסה 1.7.6).

אם אתם משדרגים מ-Apigee Hybrid גרסה 1.5 או גרסה ישנה יותר, אתם צריכים לשדרג קודם לגרסה 1.6 לפני שאתם משדרגים לגרסה 1.7.6. אפשר לעיין בהוראות בנושא שדרוג Apigee Hybrid לגרסה 1.6.

סקירה כללית על שדרוג לגרסה 1.7.6.

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

  1. הכנות לשדרוג לגרסה 1.7
  2. התקנת גרסה 1.7.6 של זמן ריצה היברידי.
  3. שדרוג cert-manager.
  4. שדרוג ASM

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

ההוראות לשדרוג מניחות שיש לכם את Apigee hybrid בגרסה 1.6.x או בגרסת תיקון קודמת של גרסה 1.7.x, ואתם רוצים לשדרג לגרסה 1.7.6. אם אתם משדרגים מגרסה קודמת, עיינו בהוראות לשדרוג Apigee hybrid לגרסה 1.6.

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

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

  1. בהוראות האלה נעשה שימוש במשתנה הסביבה $APIGEECTL_HOME עבור הספרייה במערכת הקבצים שבה מותקן כלי השירות apigeectl. אם צריך, עוברים אל הספרייה cd ומגדירים את המשתנה באמצעות הפקודה הבאה:
    apigeectl

    Linux

    export APIGEECTL_HOME=$PWD
    echo $APIGEECTL_HOME

    Mac OS

    export APIGEECTL_HOME=$PWD
    echo $APIGEECTL_HOME

    Windows

    set APIGEECTL_HOME=%CD%
    echo %APIGEECTL_HOME%
  2. (מומלץ) יוצרים עותק גיבוי של ספריית 1.6 $APIGEECTL_HOME/. לדוגמה:
    tar -czvf $APIGEECTL_HOME/../apigeectl-v1.6-backup.tar.gz $APIGEECTL_HOME
  3. (מומלץ) מגבים את מסד הנתונים של Cassandra לפי ההוראות במאמר בנושא גיבוי ושחזור של Cassandra

שדרוג גרסת Kubernetes

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

מוסיפים את התפקיד Cloud Trace Agent לחשבון השירות apigee-runtime.

אופציונלי: אם אתם מתכננים להשתמש ב-Cloud Trace, ודאו שלחשבון השירות apigee-runtime יש את תפקיד Google‏ Cloud Trace Agent‏ (roles/cloudtrace.agent). אפשר לעשות זאת בממשק המשתמש של מסוף Cloud > IAM & Admin > Service accounts או באמצעות הפקודות הבאות:

  1. כדי לקבל את כתובת האימייל של חשבון השירות apigee-runtime, מריצים את הפקודה הבאה:
    gcloud iam service-accounts list --filter "apigee-runtime"

    אם הוא תואם לדפוס apigee-runtime@$ORG_NAME.iam.gserviceaccount.com, אפשר להשתמש בדפוס הזה בשלב הבא.

  2. מקצים לחשבון השירות את התפקיד Cloud Trace Agent:
    gcloud projects add-iam-policy-binding $PROJECT_ID \
        --member="serviceAccount:apigee-runtime@$PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/cloudtrace.agent"

    כאשר: $PROJECT_ID הוא השם של הפרויקט בענן של Google שבו מותקן Apigee Hybrid.

החלפת נכסי metrics:stackdriverExporter בהגדרות ברירת המחדל.

החל מגרסה 1.7 של Hybrid, ‏ metrics:stackdriverExporter הוחלף ב-metrics:appStackdriverExporter וב-metrics:proxyStackdriverExporter. מחליפים את המאפיינים האלה במאפיינים מקבילים. לדוגמה, מחליפים את:

metrics:
  ... ...
  stackdriverExporter:
    resources:
      limits:
        cpu: 500m
        memory: 1Gi
      requests:
        cpu: 128m
        memory: 512Mi

עם:

metrics:
  ... ...
  appStackdriverExporter:
    resources:
      limits:
        cpu: 500m
        memory: 1Gi
      requests:
        cpu: 128m
        memory: 512Mi
  proxyStackdriverExporter:
    resources:
      limits:
        cpu: 500m
        memory: 1Gi
      requests:
        cpu: 128m
        memory: 512Mi

חומר עזר בנושא מאפייני הגדרה: מדדים

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

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

    Linux

    export VERSION=$(curl -s \
      https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/current-version.txt?ignoreCache=1)

    Mac OS

    export VERSION=$(curl -s \
      https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/current-version.txt)

    Windows

    for /f "tokens=*" %a in ('curl -s ^
      https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/current-version.txt') ^
    do set VERSION=%a
  2. כדי לוודא שהמשתנה אוכלס במספר גרסה, מריצים את הפקודה הבאה. אם רוצים להשתמש בגרסה אחרת, אפשר לשמור אותה במשתנה סביבה.
    echo $VERSION
      1.7.6
  3. חשוב לוודא שאתם נמצאים בספריית הבסיס של ההיברידי (הספרייה הראשית שבה נמצא קובץ ההפעלה apigeectl):
    cd $APIGEECTL_HOME/..
  4. מורידים את חבילת הגרסה למערכת ההפעלה באמצעות הפקודה הבאה. חשוב לבחור את הפלטפורמה שלכם בטבלה הבאה:

    Linux

    Linux 64 bit:

    curl -LO \
      https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/$VERSION/apigeectl_linux_64.tar.gz

    Mac OS

    Mac 64 bit:

    curl -LO \
      https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/$VERSION/apigeectl_mac_64.tar.gz

    Windows

    Windows 64 bit:

    curl -LO ^
      https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/%VERSION%/apigeectl_windows_64.zip
  5. משנים את השם של ספריית apigeectl/ הנוכחית לשם של ספריית גיבוי. לדוגמה:

    Linux

    mv $APIGEECTL_HOME/ $APIGEECTL_HOME-v1.6/

    Mac OS

    mv $APIGEECTL_HOME/ $APIGEECTL_HOME-v1.6/ 

    Windows

    rename %APIGEECTL_HOME% %APIGEECTL_HOME%-v1.6 
  6. מחלצים את התוכן של קובץ ה-gzip שהורדתם לספריית הבסיס ההיברידית. הספרייה הבסיסית ההיברידית היא הספרייה שבה נמצאת הספרייה apigeectl-v1.6 ששמה שונה:

    Linux

    tar xvzf filename.tar.gz -C ./

    Mac OS

    tar xvzf filename.tar.gz -C ./

    Windows

    tar xvzf filename.zip -C ./
  7. כברירת מחדל, התוכן של קובץ ה-tar מורחב לספרייה עם הגרסה והפלטפורמה בשם שלה. לדוגמה: ./apigeectl_1.7.6-d591b23_linux_64. משנים את שם הספרייה ל-apigeectl באמצעות הפקודה הבאה:

    Linux

    mv directory-name-linux apigeectl

    Mac OS

    mv directory-name-mac apigeectl

    Windows

    rename directory-name-windows apigeectl
  8. עוברים לספרייה apigeectl:
    cd ./apigeectl

    קובץ ההפעלה apigeectl נמצא בספרייה הזו.

  9. בהוראות האלה נעשה שימוש במשתנה הסביבה $APIGEECTL_HOME עבור הספרייה במערכת הקבצים שבה מותקן כלי השירות apigeectl. אם צריך, עוברים אל הספרייה cd ומגדירים את המשתנה באמצעות הפקודה הבאה:
    apigeectl

    Linux

    export APIGEECTL_HOME=$PWD
    echo $APIGEECTL_HOME

    Mac OS

    export APIGEECTL_HOME=$PWD
    echo $APIGEECTL_HOME

    Windows

    set APIGEECTL_HOME=%CD%
    echo %APIGEECTL_HOME%
  10. כדי לוודא את הגרסה של apigeectl, מריצים את הפקודה version:
    ./apigeectl version
    Version: 1.7.6
  11. עוברים לספרייה hybrid-base-directory/hybrid-files. בספרייה hybrid-files נמצאים קובצי תצורה כמו קובץ ההחלפות, האישורים וחשבונות השירות. לדוגמה:
    cd $APIGEECTL_HOME/../hybrid-files
  12. מריצים את הפקודה הבאה כדי לוודא שההקשר הנכון מוגדר ל-kubectl. ההקשר הנוכחי צריך להיות מוגדר לאשכול שבו משדרגים את Apigee hybrid.
    kubectl config get-contexts | grep \*
  13. בספרייה hybrid-files:
    1. מעדכנים את הקישורים הסמליים הבאים לכתובת $APIGEECTL_HOME. הקישורים האלה מאפשרים להריץ את הפקודה apigeectl שהותקנה לאחרונה מתוך הספרייה hybrid-files:
      ln -nfs $APIGEECTL_HOME/tools tools
      ln -nfs $APIGEECTL_HOME/config config
      ln -nfs $APIGEECTL_HOME/templates templates
      ln -nfs $APIGEECTL_HOME/plugins plugins
    2. כדי לוודא שהקישורים הסמליים נוצרו בצורה נכונה, מריצים את הפקודה הבאה ומוודאים שנתיבי הקישורים מצביעים על המיקומים הנכונים:
      ls -l | grep ^l
    3. מבצעים הפעלה ללא שינוי כדי לבדוק אם יש שגיאות:
      ${APIGEECTL_HOME}/apigeectl init -f ./overrides/OVERRIDES.yaml --dry-run=client

      כאשר OVERRIDES הוא השם של קובץ ההגדרות החלופיות.

    4. אם אין שגיאות, מפעילים את הגרסה ההיברידית 1.7.6:
      ${APIGEECTL_HOME}/apigeectl init -f ./overrides/OVERRIDES.yaml
    5. בודקים את סטטוס ההפעלה:
      ${APIGEECTL_HOME}/apigeectl check-ready -f ./overrides/OVERRIDES.yaml
    6. בודקים אם יש שגיאות באמצעות הרצה יבשה של הפקודה apply:
      ${APIGEECTL_HOME}/apigeectl apply -f ./overrides/OVERRIDES.yaml --dry-run=client
    7. אם אין שגיאות, מחילים את שינויי ברירת המחדל. בוחרים את ההוראות לסביבות ייצור או לסביבות הדגמה/ניסוי, בהתאם להתקנה.

      ייצור

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

      1. חשוב לוודא שאתם נמצאים בספרייה hybrid-files.
      2. מחילים את ההחלפות כדי לשדרג את Cassandra:
        ${APIGEECTL_HOME}/apigeectl apply -f ./overrides/OVERRIDES.yaml --datastore
      3. השלמת הבדיקה:
        ${APIGEECTL_HOME}/apigeectl check-ready -f ./overrides/OVERRIDES.yaml

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

      4. מחילים את ההחלפות כדי לשדרג את רכיבי הטלמטריה ובודקים שהשדרוג הושלם:
        ${APIGEECTL_HOME}/apigeectl apply -f ./overrides/OVERRIDES.yaml --telemetry
        ${APIGEECTL_HOME}/apigeectl check-ready -f ./overrides/OVERRIDES.yaml
      5. מפעילים את רכיבי Redis:
        ${APIGEECTL_HOME}/apigeectl apply -f ./overrides/OVERRIDES.yaml --redis
      6. מחילים את השינויים כדי לשדרג את הרכיבים ברמת הארגון (MART, ‏ Watcher ו-Apigee Connect) ובודקים שהשדרוג הושלם:
        ${APIGEECTL_HOME}/apigeectl apply -f ./overrides/OVERRIDES.yaml --org
        ${APIGEECTL_HOME}/apigeectl check-ready -f ./overrides/OVERRIDES.yaml
      7. מחילים את השינויים כדי לשדרג את הסביבות. יש שתי אפשרויות:
        • סביבה אחרי סביבה: מחילים את השינויים על סביבה אחת בכל פעם ובודקים שהפעולה הושלמה. חוזרים על השלב הזה לכל סביבה:
          ${APIGEECTL_HOME}/apigeectl apply -f ./overrides/OVERRIDES.yaml --env ENV_NAME
          ${APIGEECTL_HOME}/apigeectl check-ready -f ./overrides/OVERRIDES.yaml

          כאשר ENV_NAME הוא שם הסביבה שמשדרגים.

        • כל הסביבות בבת אחת: אפשר להחיל את השינויים על כל הסביבות בבת אחת ולבדוק שהפעולה הושלמה:
          ${APIGEECTL_HOME}/apigeectl apply -f ./overrides/OVERRIDES.yaml --all-envs
          ${APIGEECTL_HOME}/apigeectl check-ready -f ./overrides/OVERRIDES.yaml

      הדגמה/ניסוי

      ברוב סביבות ההדגמה או הניסוי, אפשר להחיל את שינויי ברירת המחדל על כל הרכיבים בבת אחת. אם סביבת ההדגמה או הניסוי שלכם גדולה ומורכבת או דומה מאוד לסביבת ייצור, כדאי להשתמש בהוראות לשדרוג סביבות ייצור.

      1. חשוב לוודא שאתם נמצאים בספרייה hybrid-files.
      2. ${APIGEECTL_HOME}/apigeectl apply -f ./overrides/OVERRIDES.yaml
      3. בודקים את הסטטוס:
        ${APIGEECTL_HOME}/apigeectl check-ready -f ./overrides/OVERRIDES.yaml

שדרוג cert-manager לגרסה v1.7.2

אם אתם מריצים גרסה של cert-manager שקודמת לגרסה 1.7.2, אתם צריכים לשדרג לגרסה 1.7.2.

  1. כדי לבדוק את הגרסה הנוכחית של cert-manager, משתמשים בפקודה הבאה:

    kubectl -n cert-manager get deployment -o yaml | grep 'image:'
    

    מוחזרת תשובה שדומה לדוגמה הבאה:

    image: quay.io/jetstack/cert-manager-controller:v1.7.2
    image: quay.io/jetstack/cert-manager-cainjector:v1.7.2
    image: quay.io/jetstack/cert-manager-webhook:v1.7.2
  2. מסירים את הפריסות באמצעות הפקודה הבאה:
    $ kubectl delete -n cert-manager deployment cert-manager cert-manager-cainjector cert-manager-webhook
    
  3. משדרגים את cert-manager לגרסה v1.7.2 באמצעות הפקודה הבאה:
    $ kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.7.2/cert-manager.yaml
    

שדרוג ASM לגרסה 1.29

מבצעים את השדרוג באמצעות מסמכי התיעוד של ASM שמתאימים לפלטפורמה שלכם:

ההוראות להתקנה ולהגדרה של ASM משתנות בהתאם לפלטפורמה. הפלטפורמות מחולקות לקטגוריות הבאות:

  • GKE: אשכולות Google Kubernetes Engine שפועלים ב-Google Cloud.
  • מחוץ ל-Google Cloud: אשכולות Anthos שפועלים ב:
    • אשכולות Anthos ב-VMware‏ (GKE On-Prem)
    • Anthos בשרת פיזי
    • אשכולות Anthos ב-AWS
    • Amazon EKS
  • פלטפורמות אחרות של Kubernetes: אשכולות תואמים שנוצרו ופועלים ב:
    • AKS
    • EKS
    • OpenShift

GKE

הסדר לשדרוג ל-ASM בגרסה 1.29.5 במקרה של התקנה היברידית הוא כזה:

  1. מתכוננים לשדרוג.
  2. מתקינים את הגרסה החדשה של ASM.
  3. מוחקים את הפריסות, השירותים וה-webhook של הגרסה הקודמת של ASM מההתקנה הנוכחית.
  4. שדרגו את השערים והגדירו את ה-webhook החדשים.

כדי לשדרג ל-ASM גרסה 1.29.5 ל-hybrid ב-GKE:

  1. בודקים את הדרישות במאמר שדרוג Anthos Service Mesh, אבל לא מבצעים את השדרוג עדיין.
  2. לפני שמתקינים את הגרסה החדשה, צריך לקבוע את הגרסה הנוכחית. תצטרכו את המידע הזה כדי למחוק מההתקנה הנוכחית את הפריסות, השירותים וה-webhook של הגרסה הקודמת של ASM. כדי לאחסן את הגרסה הנוכחית של istiod במשתנה סביבתי, משתמשים בפקודה הבאה:
    export DELETE_REV=$(kubectl get deploy -n istio-system -l app=istiod -o jsonpath={.items[].metadata.labels.'istio\.io\/rev'}'{"\n"}')
    echo ${DELETE_REV}
  3. יוצרים קובץ overlay.yaml חדש או מוודאים שהקובץ overlay.yaml הקיים מכיל את התוכן הבא:
    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    spec:
      revision: asm-1295-12
      components:
        ingressGateways:
          - name: istio-ingressgateway
            enabled: true
            k8s:
              nodeSelector:
                # default node selector, if different or not using node selectors, change accordingly.
                cloud.google.com/gke-nodepool: apigee-runtime
              resources:
                requests:
                  cpu: 1000m
              service:
                type: LoadBalancer
                loadBalancerIP: STATIC_IP # If you do not have a reserved static IP, leave this out.
                ports:
                  - name: http-status-port
                    port: 15021
                  - name: http2
                    port: 80
                    targetPort: 8080
                  - name: https
                    port: 443
                    targetPort: 8443
      meshConfig:
        accessLogFormat:
          '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}'
  4. פועלים לפי ההוראות בקטעים הבאים בתיעוד של ASM:
    1. הורדה של asmcli
    2. הענקת הרשאות אדמין של אשכול
    3. אימות הפרויקט והאשכול
    4. שדרוג עם תכונות אופציונליות עוצרים לפני שמתחילים את הקטע 'שדרוג שערים'
  5. מחיקת ה-webhook לשינוי וה-webhook לאימות:
    1. cd לספרייה שבה התקנתם את asmcli.
    2. מאחסנים את הגרסה החדשה הנוכחית במשתנה סביבה כדי להשתמש בה בסקריפט למחיקת ה-webhook:
      UPGRADE_REV="asm-1295-12"
    3. יוצרים סקריפט מעטפת שמכיל את הפקודות הבאות:
      #!/bin/bash
      
      set -ex
      
      PROJECT_ID="YOUR_PROJECT_ID"
      CLUSTER_NAME="YOUR_CLUSTER_NAME"
      CLUSTER_LOCATION="YOUR_CLUSTER_LOCATION"
      
      kubectl label namespace istio-system istio.io/rev=${UPGRADE_REV} istio-injection- --overwrite
      kubectl rollout restart deployment -n istio-system
      kubectl apply -n istio-system -f PATH_TO_INGRESSGATEWAYistio-ingressgateway
      kubectl apply -n istio-system -f PATH_TO_INGRESSGATEWAY/istio-ingressgateway-connectors
      
      if [[ "${DELETE_REV}" != "${UPGRADE_REV}" ]]; then
        kubectl apply -f out/asm/istio/istiod-service.yaml
        kubectl delete deploy -l app=istio-ingressgateway,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete deploy -l app=istio-ingressgateway-connectors,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete ValidatingWebhookConfiguration -l app=istiod,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete MutatingWebhookConfiguration -l app=sidecar-injector,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete IstioOperator installed-state-${DELETE_REV} -n istio-system --ignore-not-found=true
      fi
      
    4. מריצים את הסקריפט כדי למחוק את ה-webhook הנוכחיים.
  6. פועלים לפי השלבים במאמר בנושא שדרוג שערים כדי ליצור את ה-webhook החדשים ולהעביר את התנועה לשערים החדשים.

מחוץ ל-Google Cloud

ההוראות האלה מתייחסות לשדרוג של ASM ב:

  • אשכולות Anthos ב-VMware‏ (GKE On-Prem)
  • Anthos בשרת פיזי
  • אשכולות Anthos ב-AWS
  • Amazon EKS
.

הסדר לשדרוג ל-ASM בגרסה 1.29.5 במקרה של התקנה היברידית הוא כזה:

  1. מתכוננים לשדרוג.
  2. מתקינים את הגרסה החדשה של ASM.
  3. מוחקים את הפריסות, השירותים וה-webhook של הגרסה הקודמת של ASM מההתקנה הנוכחית.
  4. שדרגו את השערים והגדירו את ה-webhook החדשים.
  1. בודקים את הדרישות במאמר שדרוג Anthos Service Mesh, אבל לא מבצעים את השדרוג עדיין.
  2. לפני שמתקינים את הגרסה החדשה, צריך לקבוע את הגרסה הנוכחית. תצטרכו את המידע הזה כדי למחוק את ה-webhook של האימות ואת ה-webhook של השינוי מההתקנה הנוכחית של ASM. משתמשים בפקודה הבאה כדי לאחסן את הגרסה הנוכחית של istiod במשתנה סביבתי:
    export DELETE_REV=$(kubectl get deploy -n istio-system -l app=istiod -o jsonpath={.items[].metadata.labels.'istio\.io\/rev'}'{"\n"}')
    echo ${DELETE_REV}
  3. יוצרים קובץ overlay.yaml חדש או מוודאים שהקובץ overlay.yaml הקיים מכיל את התוכן הבא:
    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    spec:
      revision: asm-1295-12
      components:
        ingressGateways:
          - name: istio-ingressgateway
            enabled: true
            k8s:
              nodeSelector:
                # default node selector, if different or not using node selectors, change accordingly.
                cloud.google.com/gke-nodepool: apigee-runtime
              resources:
                requests:
                  cpu: 1000m
              service:
                type: LoadBalancer
                loadBalancerIP: STATIC_IP # If you do not have a reserved static IP, leave this out.
                ports:
                  - name: http-status-port
                    port: 15021
                  - name: http2
                    port: 80
                    targetPort: 8080
                  - name: https
                    port: 443
                    targetPort: 8443
      values:
        gateways:
          istio-ingressgateway:
            runAsRoot: true
    
      meshConfig:
        accessLogFormat:
          '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}'
  4. פועלים לפי ההוראות בקטעים הבאים בתיעוד של ASM:
    1. הורדה של asmcli
    2. הענקת הרשאות אדמין של אשכול
    3. אימות הפרויקט והאשכול
    4. שדרוג עם תכונות אופציונליות עוצרים לפני שמתחילים את הקטע 'שדרוג שערים'
  5. מחיקת ה-webhook לשינוי וה-webhook לאימות:
    1. cd לספרייה שבה התקנתם את asmcli.
    2. מאחסנים את הגרסה החדשה הנוכחית במשתנה סביבה כדי להשתמש בה בסקריפט למחיקת ה-webhook:
      UPGRADE_REV="asm-1295-12"
    3. יוצרים סקריפט מעטפת שמכיל את הפקודות הבאות:
      #!/bin/bash
      
      set -ex
      
      PROJECT_ID="YOUR_PROJECT_ID"
      CLUSTER_NAME="YOUR_CLUSTER_NAME"
      CLUSTER_LOCATION="YOUR_CLUSTER_LOCATION"
      
      
      gcloud config configurations activate ${PROJECT_ID}
      gcloud container clusters get-credentials ${CLUSTER_NAME} --region ${CLUSTER_LOCATION} --project ${PROJECT_ID}
      
      
      kubectl label namespace istio-system istio.io/rev=${UPGRADE_REV} istio-injection- --overwrite
      kubectl rollout restart deployment -n istio-system
      kubectl apply -n istio-system -f PATH_TO_INGRESSGATEWAYistio-ingressgateway
      kubectl apply -n istio-system -f PATH_TO_INGRESSGATEWAY/istio-ingressgateway-connectors
      
      if [[ "${DELETE_REV}" != "${UPGRADE_REV}" ]]; then
        kubectl apply -f out/asm/istio/istiod-service.yaml
        kubectl delete deploy -l app=istio-ingressgateway,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete deploy -l app=istio-ingressgateway-connectors,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete ValidatingWebhookConfiguration -l app=istiod,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete MutatingWebhookConfiguration -l app=sidecar-injector,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete IstioOperator installed-state-${DELETE_REV} -n istio-system --ignore-not-found=true
      fi
      
    4. מריצים את הסקריפט כדי למחוק את ה-webhook הנוכחיים.
  6. פועלים לפי השלבים במאמר בנושא שדרוג שערים כדי ליצור את ה-webhook החדשים ולהעביר את התנועה לשערים החדשים.

AKS / EKS

בתהליך שמתואר בהוראות האלה לשדרוג Anthos Service Mesh‏ (ASM) מגרסה istio-1.29.5-asm.12 באשכולות Anthos המצורפים, הפעולות זהות לאלה שנדרשות להתקנה חדשה.

הכנות להתקנת Anthos Service Mesh

  1. מחיקת ה-webhook לשינוי וה-webhook לאימות:
    1. cd לספרייה שבה התקנתם את asmcli.
    2. מאחסנים את הגרסה החדשה הנוכחית במשתנה סביבה כדי להשתמש בה בסקריפט למחיקת ה-webhook:
      UPGRADE_REV="asm-1295-12"
    3. יוצרים סקריפט מעטפת שמכיל את הפקודות הבאות:
      #!/bin/bash
      
      set -ex
      
      kubectl label namespace istio-system istio.io/rev=${UPGRADE_REV} istio-injection- --overwrite
      kubectl rollout restart deployment -n istio-system
      kubectl apply -n istio-system -f PATH_TO_INGRESSGATEWAYistio-ingressgateway
      
      if [[ "${DELETE_REV}" != "${UPGRADE_REV}" ]]; then
        kubectl apply -f out/asm/istio/istiod-service.yaml
        kubectl delete deploy -l app=istio-ingressgateway,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete deploy -l app=istio-ingressgateway-connectors,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete ValidatingWebhookConfiguration -l app=istiod,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete MutatingWebhookConfiguration -l app=sidecar-injector,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete IstioOperator installed-state-${DELETE_REV} -n istio-system --ignore-not-found=true
      fi
      
    4. מריצים את הסקריפט כדי למחוק את ה-webhook הנוכחיים.
  2. Linux

  3. מורידים את קובץ ההתקנה של Anthos Service Mesh לספריית העבודה הנוכחית:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.29.5-asm.12-linux-amd64.tar.gz
  4. מורידים את קובץ החתימה ומשתמשים ב-openssl כדי לאמת את החתימה:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.29.5-asm.12-linux-amd64.tar.gz.1.sig
    openssl dgst -verify /dev/stdin -signature istio-1.29.5-asm.12-linux-amd64.tar.gz.1.sig istio-1.29.5-asm.12.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  5. מחלצים את התוכן של הקובץ למיקום כלשהו במערכת הקבצים שלכם. לדוגמה, כדי לחלץ את התוכן לספריית העבודה הנוכחית:
    tar xzf istio-1.29.5-asm.12-linux-amd64.tar.gz

    הפקודה יוצרת ספריית התקנה בספריית העבודה הנוכחית בשם istio-1.29.5-asm.12, שמכילה:

    • אפליקציות לדוגמה בספרייה samples.
    • כלי שורת הפקודה שמשמש להתקנת Anthos Service Mesh נמצא בספרייה bin.istioctl
    • פרופילי ההגדרות של Anthos Service Mesh נמצאים בספרייה manifests/profiles.
  6. מוודאים שאתם נמצאים בספריית השורש של ההתקנה של Anthos Service Mesh:
    cd istio-1.29.5-asm.12
  7. כדי שיהיה לכם נוח, כדאי להוסיף את הכלים בספרייה ‎ /bin לנתיב:
    export PATH=$PWD/bin:$PATH
  8. Mac OS

  9. מורידים את קובץ ההתקנה של Anthos Service Mesh לספריית העבודה הנוכחית:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.29.5-asm.12-osx.tar.gz
  10. מורידים את קובץ החתימה ומשתמשים ב-openssl כדי לאמת את החתימה:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.29.5-asm.12-osx.tar.gz.1.sig
    openssl dgst -sha256 -verify /dev/stdin -signature istio-1.29.5-asm.12-osx.tar.gz.1.sig istio-1.29.5-asm.12.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  11. מחלצים את התוכן של הקובץ למיקום כלשהו במערכת הקבצים שלכם. לדוגמה, כדי לחלץ את התוכן לספריית העבודה הנוכחית:
    tar xzf istio-1.29.5-asm.12-osx.tar.gz

    הפקודה יוצרת ספריית התקנה בספריית העבודה הנוכחית בשם istio-1.29.5-asm.12, שמכילה:

    • אפליקציות לדוגמה בספרייה samples.
    • כלי שורת הפקודה שמשמש להתקנת Anthos Service Mesh נמצא בספרייה bin.istioctl
    • פרופילי ההגדרות של Anthos Service Mesh נמצאים בספרייה manifests/profiles.
  12. מוודאים שאתם נמצאים בספריית השורש של ההתקנה של Anthos Service Mesh:
    cd istio-1.29.5-asm.12
  13. כדי שיהיה לכם נוח, כדאי להוסיף את הכלים בספרייה ‎ /bin לנתיב:
    export PATH=$PWD/bin:$PATH
  14. Windows

  15. מורידים את קובץ ההתקנה של Anthos Service Mesh לספריית העבודה הנוכחית:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.29.5-asm.12-win.zip
  16. מורידים את קובץ החתימה ומשתמשים ב-openssl כדי לאמת את החתימה:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.29.5-asm.12-win.zip.1.sig
    openssl dgst -verify - -signature istio-1.29.5-asm.12-win.zip.1.sig istio-1.29.5-asm.12.win.zip <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  17. מחלצים את התוכן של הקובץ למיקום כלשהו במערכת הקבצים שלכם. לדוגמה, כדי לחלץ את התוכן לספריית העבודה הנוכחית:
    tar xzf istio-1.29.5-asm.12-win.zip

    הפקודה יוצרת ספריית התקנה בספריית העבודה הנוכחית בשם istio-1.29.5-asm.12, שמכילה:

    • אפליקציות לדוגמה בספרייה samples.
    • כלי שורת הפקודה שמשמש להתקנת Anthos Service Mesh נמצא בספרייה bin.istioctl
    • פרופילי ההגדרות של Anthos Service Mesh נמצאים בספרייה manifests\profiles.
  18. מוודאים שאתם נמצאים בספריית השורש של ההתקנה של Anthos Service Mesh:
    cd istio-1.29.5-asm.12
  19. כדי שיהיה לכם נוח, כדאי להוסיף את הכלים בספרייה ‎\bin לנתיב:
    set PATH=%CD%\bin:%PATH%
  20. אחרי שמתקינים את ASM Istio, בודקים את הגרסה של istioctl:
    istioctl version
  21. יוצרים מרחב שמות בשם istio-system לרכיבי מישור הבקרה:
    kubectl create namespace istio-system

התקנה של Anthos Service Mesh

  1. עורכים את קובץ overlay.yaml או יוצרים קובץ חדש עם התוכן הבא:
    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    spec:
      meshConfig:
        accessLogFile: /dev/stdout
        enableTracing: true
        accessLogFormat:
          '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}'
      components:
      - enabled: true
        name: istio-ingressgateway
        k8s:
          service:
            type: LoadBalancer
            ports:
            - name: status-port
              port: 15021
              targetPort: 15021
            - name: http2
              port: 80
              targetPort: 8080
            - name: https
              port: 443
              targetPort: 8443
    
  2. מתקינים את Anthos Service Mesh עם istioctl באמצעות פרופיל asm-multicloud:
    istioctl install \
        --set profile=asm-multicloud \
        --set revision="asm-1295-12" \
        --filename overlayfile.yaml

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

    kubectl get pods -n istio-system
    NAME                                   READY   STATUS    RESTARTS   AGE
    istio-ingressgateway-88b6fd976-flgp2   1/1     Running   0          3m13s
    istio-ingressgateway-88b6fd976-p5dl9   1/1     Running   0          2m57s
    istiod-asm-1295-12-798ffb964-2ls88       1/1     Running   0          3m21s
    istiod-asm-1295-12-798ffb964-fnj8c       1/1     Running   1          3m21s

    הארגומנט --set revision מוסיף תווית של גרסה בפורמט istio.io/rev=asm-1295-12 ל-istiod. תווית התיקון משמשת את ה-webhook האוטומטי להזרקת sidecar כדי לשייך sidecar מוזרקים לגרסה מסוימת של istiod. כדי להפעיל הזרקה אוטומטית של sidecar למרחב שמות, צריך להוסיף לו תווית עם revision שזהה לתווית ב-istiod.

  3. מוודאים שההתקנה הושלמה:
    kubectl get svc -n istio-system

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

    NAME                   TYPE           CLUSTER-IP       EXTERNAL-IP     PORT(S)                                                                      AGE
    istio-ingressgateway   LoadBalancer   172.200.48.52    34.74.177.168   15021:30479/TCP,80:30030/TCP,443:32200/TCP,15012:32297/TCP,15443:30244/TCP   3m35s
    istiod                 ClusterIP      172.200.18.133   <none>          15010/TCP,15012/TCP,443/TCP,15014/TCP                                        4m46s
    istiod-asm-1295-12       ClusterIP      172.200.63.220   <none>          15010/TCP,15012/TCP,443/TCP,15014/TCP                                        3m43s

OpenShift

בתהליך שמתואר בהוראות האלה לשדרוג Anthos Service Mesh‏ (ASM) מגרסה istio-1.29.5-asm.12 באשכולות Anthos המצורפים, הפעולות זהות לאלה שנדרשות להתקנה חדשה.

הכנות להתקנת Anthos Service Mesh

  1. מחיקת ה-webhook לשינוי וה-webhook לאימות:
    1. cd לספרייה שבה התקנתם את asmcli.
    2. מאחסנים את הגרסה החדשה הנוכחית במשתנה סביבה כדי להשתמש בה בסקריפט למחיקת ה-webhook:
      UPGRADE_REV="asm-1295-12"
    3. יוצרים סקריפט מעטפת שמכיל את הפקודות הבאות:
      #!/bin/bash
      
      set -ex
      
      kubectl label namespace istio-system istio.io/rev=${UPGRADE_REV} istio-injection- --overwrite
      kubectl rollout restart deployment -n istio-system
      kubectl apply -n istio-system -f PATH_TO_INGRESSGATEWAYistio-ingressgateway
      kubectl apply -n istio-system -f PATH_TO_INGRESSGATEWAY/istio-ingressgateway-connectors
      
      if [[ "${DELETE_REV}" != "${UPGRADE_REV}" ]]; then
        kubectl apply -f out/asm/istio/istiod-service.yaml
        kubectl delete deploy -l app=istio-ingressgateway,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete deploy -l app=istio-ingressgateway-connectors,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete ValidatingWebhookConfiguration -l app=istiod,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete MutatingWebhookConfiguration -l app=sidecar-injector,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete IstioOperator installed-state-${DELETE_REV} -n istio-system --ignore-not-found=true
      fi
      
    4. מריצים את הסקריפט כדי למחוק את ה-webhook הנוכחיים.
  2. Linux

  3. נותנים את אילוץ ההקשר הביטחוני (SCC) ‏anyuid ל-istio-system באמצעות הפקודה הבאה של OpenShift CLI ‏ (oc):
    oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
  4. מורידים את קובץ ההתקנה של Anthos Service Mesh לספריית העבודה הנוכחית:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.29.5-asm.12-linux-amd64.tar.gz
  5. מורידים את קובץ החתימה ומשתמשים ב-openssl כדי לאמת את החתימה:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.29.5-asm.12-linux-amd64.tar.gz.1.sig
    openssl dgst -verify /dev/stdin -signature istio-1.29.5-asm.12-linux-amd64.tar.gz.1.sig istio-1.29.5-asm.12.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  6. מחלצים את התוכן של הקובץ למיקום כלשהו במערכת הקבצים שלכם. לדוגמה, כדי לחלץ את התוכן לספריית העבודה הנוכחית:
    tar xzf istio-1.29.5-asm.12-linux-amd64.tar.gz

    הפקודה יוצרת ספריית התקנה בספריית העבודה הנוכחית בשם istio-1.29.5-asm.12, שמכילה:

    • אפליקציות לדוגמה בספרייה samples.
    • כלי שורת הפקודה שמשמש להתקנת Anthos Service Mesh נמצא בספרייה bin.istioctl
    • פרופילי ההגדרות של Anthos Service Mesh נמצאים בספרייה manifests/profiles.
  7. מוודאים שאתם נמצאים בספריית השורש של ההתקנה של Anthos Service Mesh:
    cd istio-1.29.5-asm.12
  8. כדי שיהיה לכם נוח, כדאי להוסיף את הכלים בספרייה ‎ /bin לנתיב:
    export PATH=$PWD/bin:$PATH
  9. Mac OS

  10. נותנים את אילוץ ההקשר הביטחוני (SCC) ‏anyuid ל-istio-system באמצעות הפקודה הבאה של OpenShift CLI ‏ (oc):
    oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
  11. מורידים את קובץ ההתקנה של Anthos Service Mesh לספריית העבודה הנוכחית:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.29.5-asm.12-osx.tar.gz
  12. מורידים את קובץ החתימה ומשתמשים ב-openssl כדי לאמת את החתימה:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.29.5-asm.12-osx.tar.gz.1.sig
    openssl dgst -sha256 -verify /dev/stdin -signature istio-1.29.5-asm.12-osx.tar.gz.1.sig istio-1.29.5-asm.12.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  13. מחלצים את התוכן של הקובץ למיקום כלשהו במערכת הקבצים שלכם. לדוגמה, כדי לחלץ את התוכן לספריית העבודה הנוכחית:
    tar xzf istio-1.29.5-asm.12-osx.tar.gz

    הפקודה יוצרת ספריית התקנה בספריית העבודה הנוכחית בשם istio-1.29.5-asm.12, שמכילה:

    • אפליקציות לדוגמה בספרייה samples.
    • כלי שורת הפקודה שמשמש להתקנת Anthos Service Mesh נמצא בספרייה bin.istioctl
    • פרופילי ההגדרות של Anthos Service Mesh נמצאים בספרייה manifests/profiles.
  14. מוודאים שאתם נמצאים בספריית השורש של ההתקנה של Anthos Service Mesh:
    cd istio-1.29.5-asm.12
  15. כדי שיהיה לכם נוח, כדאי להוסיף את הכלים בספרייה ‎ /bin לנתיב:
    export PATH=$PWD/bin:$PATH
  16. Windows

  17. נותנים את אילוץ ההקשר הביטחוני (SCC) ‏anyuid ל-istio-system באמצעות הפקודה הבאה של OpenShift CLI ‏ (oc):
    oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
  18. מורידים את קובץ ההתקנה של Anthos Service Mesh לספריית העבודה הנוכחית:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.29.5-asm.12-win.zip
  19. מורידים את קובץ החתימה ומשתמשים ב-openssl כדי לאמת את החתימה:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.29.5-asm.12-win.zip.1.sig
    openssl dgst -verify - -signature istio-1.29.5-asm.12-win.zip.1.sig istio-1.29.5-asm.12.win.zip <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  20. מחלצים את התוכן של הקובץ למיקום כלשהו במערכת הקבצים שלכם. לדוגמה, כדי לחלץ את התוכן לספריית העבודה הנוכחית:
    tar xzf istio-1.29.5-asm.12-win.zip

    הפקודה יוצרת ספריית התקנה בספריית העבודה הנוכחית בשם istio-1.29.5-asm.12, שמכילה:

    • אפליקציות לדוגמה בספרייה samples.
    • כלי שורת הפקודה שמשמש להתקנת Anthos Service Mesh נמצא בספרייה bin.istioctl
    • פרופילי ההגדרות של Anthos Service Mesh נמצאים בספרייה manifests\profiles.
  21. מוודאים שאתם נמצאים בספריית השורש של ההתקנה של Anthos Service Mesh:
    cd istio-1.29.5-asm.12
  22. כדי שיהיה לכם נוח, כדאי להוסיף את הכלים בספרייה ‎\bin לנתיב:
    set PATH=%CD%\bin:%PATH%
  23. אחרי שמתקינים את ASM Istio, בודקים את הגרסה של istioctl:
    istioctl version
  24. יוצרים מרחב שמות בשם istio-system לרכיבי מישור הבקרה:
    kubectl create namespace istio-system

התקנה של Anthos Service Mesh

  1. עורכים את קובץ overlay.yaml או יוצרים קובץ חדש עם התוכן הבא:
    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    spec:
      meshConfig:
        accessLogFile: /dev/stdout
        enableTracing: true
        accessLogFormat:
          '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}'
      components:
      - enabled: true
        name: istio-ingressgateway
        k8s:
          service:
            type: LoadBalancer
            ports:
            - name: status-port
              port: 15021
              targetPort: 15021
            - name: http2
              port: 80
              targetPort: 8080
            - name: https
              port: 443
              targetPort: 8443
    
  2. מתקינים את Anthos Service Mesh עם istioctl באמצעות פרופיל asm-multicloud:
    istioctl install \
        --set profile=asm-multicloud \
        --set revision="asm-1295-12" \
        --filename overlayfile.yaml

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

    kubectl get pods -n istio-system
    NAME                                   READY   STATUS    RESTARTS   AGE
    istio-ingressgateway-88b6fd976-flgp2   1/1     Running   0          3m13s
    istio-ingressgateway-88b6fd976-p5dl9   1/1     Running   0          2m57s
    istiod-asm-1295-12-798ffb964-2ls88       1/1     Running   0          3m21s
    istiod-asm-1295-12-798ffb964-fnj8c       1/1     Running   1          3m21s

    הארגומנט --set revision מוסיף תווית של גרסה בפורמט istio.io/rev=1.6.11-asm.1 ל-istiod. תווית התיקון משמשת את ה-webhook האוטומטי להזרקת sidecar כדי לשייך sidecar מוזרקים לגרסה מסוימת של istiod. כדי להפעיל הזרקה אוטומטית של sidecar למרחב שמות, צריך להוסיף לו תווית עם revision שזהה לתווית ב-istiod.

  3. מוודאים שההתקנה הושלמה:
    kubectl get svc -n istio-system

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

    NAME                   TYPE           CLUSTER-IP       EXTERNAL-IP     PORT(S)                                                                      AGE
    istio-ingressgateway   LoadBalancer   172.200.48.52    34.74.177.168   15021:30479/TCP,80:30030/TCP,443:32200/TCP,15012:32297/TCP,15443:30244/TCP   3m35s
    istiod                 ClusterIP      172.200.18.133   <none>          15010/TCP,15012/TCP,443/TCP,15014/TCP                                        4m46s
    istiod-asm-1295-12       ClusterIP      172.200.63.220   <none>          15010/TCP,15012/TCP,443/TCP,15014/TCP                                        3m43s

החזרה למצב הקודם של שדרוג

כדי לחזור לשדרוג קודם:

  1. מנקים את המשימות שהושלמו במרחב השמות של זמן הריצה ההיברידי, כאשר NAMESPACE הוא מרחב השמות שצוין בקובץ ההחלפות, אם צוין מרחב שמות. אם לא, מרחב השמות שמוגדר כברירת מחדל הוא apigee:
    kubectl delete job -n NAMESPACE \
      $(kubectl get job -n NAMESPACE \
      -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
  2. ניקוי משימות שהושלמו במרחב השמות apigee-system:
    kubectl delete job -n apigee-system \
      $(kubectl get job -n apigee-system \
      -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
  3. משנים את המשתנה APIGEECTL_HOME כך שיצביע על הספרייה שמכילה את הגרסה הקודמת של apigeectl. לדוגמה:
    export APIGEECTL_HOME=PATH_TO_PREVIOUS_APIGEECTL_DIRECTORY
  4. בתיקיית הבסיס של ההתקנה שרוצים לחזור אליה, מריצים את הפקודה ${APIGEECTL_HOME}/apigeectl apply, בודקים את הסטטוס של ה-pods ואז מריצים את הפקודה ${APIGEECTL_HOME}/apigeectl init. חשוב להשתמש בקובץ ההחלפות המקורי של הגרסה שרוצים לחזור אליה:
    1. בספרייה hybrid-files, מריצים את הפקודה ${APIGEECTL_HOME}/apigeectl apply:
      ${APIGEECTL_HOME}/apigeectl apply -f ./overrides/ORIGINAL_OVERRIDES.yaml

      ORIGINAL_OVERRIDES הוא קובץ ההחלפות של הגרסה הקודמת של ההתקנה ההיברידית, לדוגמה, overrides1.6.yaml.

    2. בודקים את הסטטוס של ה-Pods:
      kubectl -n NAMESPACE get pods

      כאשר NAMESPACE הוא מרחב השמות של Apigee Hybrid.

    3. בודקים את הסטטוס של apigeeds:
      kubectl describe apigeeds -n apigee

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

      Status:
        Cassandra Data Replication:
        Cassandra Pod Ips:
          10.8.2.204
        Cassandra Ready Replicas:  1
        Components:
          Cassandra:
            Last Successfully Released Version:
              Revision:  v1-f8aa9a82b9f69613
              Version:   v1
            Replicas:
              Available:  1
              Ready:      1
              Total:      1
              Updated:    1
            State:        running
        Scaling:
          In Progress:         false
          Operation:
          Requested Replicas:  0
        State:                 running

      ממשיכים לשלב הבא רק אם ה-pod‏ apigeeds פועל.

    4. מריצים את apigeectl init:
      ${APIGEECTL_HOME}/apigeectl init -f ./overrides/ORIGINAL_OVERRIDES.yaml