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

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

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

  1. מגבים את ההתקנה ההיברידית.
  2. בדוק את גרסת Kubernetes שלך ושדרג לפי הצורך.
  3. שדרוג ASM.
  4. התקן את גרסה 1.5 של זמן ריצה היברידי.

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

שדרג לגרסה 1.5

  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. (מומלץ) צור עותק גיבוי של ספריית $APIGEECTL_HOME/ בגרסה 1.4 שלך. לדוגמה:
    tar -czvf $APIGEECTL_HOME/../apigeectl-v1.4-backup.tar.gz $APIGEECTL_HOME
  3. (מומלץ) מגבים את מסד הנתונים של Cassandra לפי ההוראות במאמר בנושא גיבוי ושחזור של Cassandra.
  4. צריך לשדרג את פלטפורמת Kubernetes לגרסאות שנתמכות על ידי hybrid 1.5. אם אתם צריכים עזרה, תוכלו לעיין במסמכי התיעוד של הפלטפורמה.
  5. אם אתם משתמשים בגרסה של cert-manager קודמת לגרסה 1.2.0, עליכם לשדרג אותה לגרסה 1.2.0.
    1. בדוק את הגרסה הנוכחית של cert-manager באמצעות הפקודה הבאה:

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

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

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

שדרגו את ASM לגרסה 1.31

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

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

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

GKE

רצף השדרוג לגרסה 1.8.x של ASM עבור ההתקנה ההיברידית שלך הוא כדלקמן:

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

כדי לשדרג לגרסה 1.8.x של ASM עבור מערכת היברידית ב-GKE:

  1. עוברים על הדרישות במאמר שדרוג Anthos Service Mesh, אבל לא מבצעים את השדרוג עדיין.
  2. לפני התקנת הגרסה החדשה, יש לוודא את הגרסה הנוכחית. תזדקק למידע זה כדי למחוק את הפריסות, השירותים וה-webhooks של גרסת 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-1305-8
      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-1305-8"
    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 מקומי)
  • Anthos בשרת פיזי
  • אשכולות Anthos ב-AWS
  • ‫Amazon EKS
  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-1305-8
      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-1305-8"
    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. הפעל את הסקריפט כדי למחוק את ה-webhooks הנוכחיים.
  6. בצעו את השלבים בסעיף שדרוג שערים כדי ליצור את ה-webhooks החדשים ולהעביר את התנועה לשערים החדשים.

AKS / EKS

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

מתכוננים להתקנת Anthos Service Mesh

    Linux

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

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

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

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

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

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

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

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

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

הגדרת ה-webhook המאמת

כשמתקינים את Anthos Service Mesh, מגדירים תווית של גרסה ב-istiod. צריך להגדיר את אותה גרסה ב-webhook של האימות.

  1. יוצרים קובץ בשם istiod-service.yaml עם התוכן הבא:
    apiVersion: v1
    kind: Service
    metadata:
      name: istiod
      namespace: istio-system
      labels:
        istio.io/rev: asm-1305-8
        app: istiod
        istio: pilot
        release: istio
    spec:
      ports:
        - port: 15010
          name: grpc-xds # plaintext
          protocol: TCP
        - port: 15012
          name: https-dns # mTLS with k8s-signed cert
          protocol: TCP
        - port: 443
          name: https-webhook # validation and injection
          targetPort: 15017
          protocol: TCP
        - port: 15014
          name: http-monitoring # prometheus stats
          protocol: TCP
      selector:
        app: istiod
        istio.io/rev: asm-1305-8
      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)%"}'
  2. משתמשים ב-kubectl כדי להחיל את ההגדרות האישיות לתגובה לפעולה מאתר אחר (Webhook) לצורך אימות:
    kubectl apply -f istiod-service.yaml
  3. כדי לוודא שההגדרה הוחלה:
    kubectl get svc -n istio-system

    התגובה אמורה להיראות כך:

    NAME     TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                                 AGE
    istiod   ClusterIP   172.200.18.133   <none>        15010/TCP,15012/TCP,443/TCP,15014/TCP   22s

התקנה של Anthos Service Mesh

  1. מתקינים את Anthos Service Mesh עם istioctl באמצעות פרופיל asm-multicloud:
    istioctl install \
        --set profile=asm-multicloud \
        --set revision="asm-1305-8"

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

    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-1305-8-798ffb964-2ls88       1/1     Running   0          3m21s
    istiod-asm-1305-8-798ffb964-fnj8c       1/1     Running   1          3m21s

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

  2. ודא שההתקנה הושלמה:
    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-1305-8       ClusterIP      172.200.63.220   <none>          15010/TCP,15012/TCP,443/TCP,15014/TCP                                        3m43s

OpenShift

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

מתכוננים להתקנת Anthos Service Mesh

    Linux

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

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

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

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

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

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

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

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

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

הגדרת ה-webhook המאמת

כשמתקינים את Anthos Service Mesh, מגדירים תווית של גרסה ב-istiod. צריך להגדיר את אותה גרסה ב-webhook של האימות.

  1. יוצרים קובץ בשם istiod-service.yaml עם התוכן הבא:
    apiVersion: v1
    kind: Service
    metadata:
      name: istiod
      namespace: istio-system
      labels:
        istio.io/rev: asm-1305-8
        app: istiod
        istio: pilot
        release: istio
    spec:
      ports:
        - port: 15010
          name: grpc-xds # plaintext
          protocol: TCP
        - port: 15012
          name: https-dns # mTLS with k8s-signed cert
          protocol: TCP
        - port: 443
          name: https-webhook # validation and injection
          targetPort: 15017
          protocol: TCP
        - port: 15014
          name: http-monitoring # prometheus stats
          protocol: TCP
      selector:
        app: istiod
        istio.io/rev: asm-1305-8
      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)%"}'
  2. משתמשים ב-kubectl כדי להחיל את ההגדרות האישיות לתגובה לפעולה מאתר אחר (Webhook) לצורך אימות:
    kubectl apply -f istiod-service.yaml
  3. כדי לוודא שההגדרה הוחלה:
    kubectl get svc -n istio-system

    התגובה אמורה להיראות כך:

    NAME     TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                                 AGE
    istiod   ClusterIP   172.200.18.133   <none>        15010/TCP,15012/TCP,443/TCP,15014/TCP   22s

התקנה של Anthos Service Mesh

  1. מתקינים את Anthos Service Mesh עם istioctl באמצעות פרופיל asm-multicloud:
    istioctl install \
        --set profile=asm-multicloud \
        --set revision=istio-1.31.1-asm.16

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

    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-1305-8-798ffb964-2ls88       1/1     Running   0          3m21s
    istiod-asm-1305-8-798ffb964-fnj8c       1/1     Running   1          3m21s

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

  2. ודא שההתקנה הושלמה:
    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-1305-8       ClusterIP      172.200.63.220   <none>          15010/TCP,15012/TCP,443/TCP,15014/TCP                                        3m43s

התקנה של זמן הריצה של hybrid 1.5.10

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

    ‫Mac 64 bit:

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

    ‫Linux 64 bit:

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

    Mac 32 bit:

    curl -LO \
        https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.5.10/apigeectl_mac_32.tar.gz

    ‫Linux‏ 32 ביט:

    curl -LO \
        https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.5.10/apigeectl_linux_32.tar.gz
  2. משנים את השם של ספריית apigeectl/ הנוכחית לשם של ספריית גיבוי. לדוגמה:
    mv $APIGEECTL_HOME/ $APIGEECTL_HOME-v1.2/ 
  3. מחלצים את התוכן של קובץ ה-gzip שהורדתם לספריית הבסיס ההיברידית. לדוגמה:

    tar xvzf FILENAME.tar.gz -C HYBRID_BASE_DIRECTORY
  4. ‫cd לספריית הבסיס.
  5. כברירת מחדל, התוכן של קובץ ה-tar מורחב לספרייה עם הגרסה והפלטפורמה בשם שלה. לדוגמה: ./apigeectl_1.5.0-d591b23_linux_64. משנים את השם של הספרייה ל-apigeectl:

    mv apigeectl_1.5.0-d591b23_linux_64 apigeectl
  6. בספרייה new apigeectl/, מריצים את הפקודות apigeectl init,‏ apigeectl apply ו-apigeectl check-ready:
    1. אתחול של גרסה 1.5.10 של Hybrid:
      apigeectl init -f OVERRIDES.yaml

      כאשר OVERRIDES.yaml הוא קובץ overrides.yaml שעבר עריכה.

    2. בודקים שהאתחול בוצע בצורה תקינה באמצעות הפקודות הבאות:
      apigeectl check-ready -f OVERRIDES.yaml
      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
      
    3. התחביר של דגל apigeectl --dry-run תלוי בגרסת kubectl שאתה מפעיל. בודקים את הגרסה של kubectl:
      gcloud version
    4. בדוק שגיאות באמצעות הרצת בדיקה עם הפקודה המתאימה לגרסת kubectl שלך:

      ‫kubectl גרסה 1.17 וגרסאות ישנות יותר:

      apigeectl apply -f OVERRIDES.yaml --dry-run=true

      ‫kubectl גרסה 1.18 ואילך:

      apigeectl apply -f OVERRIDES.yaml --dry-run=client
    5. מחילים את השינויים. בוחרים את ההוראות לסביבות ייצור או לסביבות הדגמה/ניסוי, בהתאם להתקנה.

      ייצור

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

      1. מחילים את השינויים כדי לשדרג את Cassandra:
        apigeectl apply -f OVERRIDES.yaml --datastore
      2. השלמת הבדיקה:
        apigeectl check-ready -f OVERRIDES.yaml

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

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

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

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

      הדגמה/ניסוי

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

      1. apigeectl apply -f OVERRIDES.yaml
      2. בודקים את הסטטוס:
        apigeectl check-ready -f OVERRIDES.yaml

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

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

  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 apply, בדוק את מצב הפודים שלך, מחק את רכיב Redis (חדש בגרסה 1.5.0 של היברידי) ולאחר מכן הפעל את apigeectl init. חשוב להשתמש בקובץ המקורי של שינויי ברירת המחדל עבור הגרסה שאליה רוצים לחזור:
    • מריצים את apigeectl apply:
      $APIGEECTL_HOME/apigeectl apply -f overrides/ORIGINAL_OVERRIDES.yaml
    • בודקים את הסטטוס של התרמילים:
      kubectl -n NAMESPACE get pods

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

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

    • מכיוון ש-Redis הוא רכיב חדש ב-hybrid v1.5, מריצים את הפקודה הבאה כדי למחוק אותו:

      apigeectl_1.5.0 delete --redis -f ORIGINAL_OVERRIDES.yaml
    • מריצים את apigeectl init:
      $APIGEECTL_HOME/apigeectl init -f overrides/ORIGINAL_OVERRIDES.yaml