將 Apigee Hybrid 升級至 1.7 版

<0x0

次要版本升級 (例如從 1.6 版升級至 1.7 版) 和修補程式版本升級 (例如從 1.7.0 版升級至 1.7.6 版) 的程序相同。

如果您是從 Apigee Hybrid 1.5 版或更舊版本升級,請先升級至 Hybrid 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 代理人」角色新增至 apigee-runtime 服務帳戶

選用步驟:如果您打算使用 Cloud Trace,請確認 apigee-runtime 服務帳戶具有 Cloud Trace 代理者 (roles/cloudtrace.agent) Google 角色。您可以在「Cloud 控制台」>「IAM 與管理」>「服務帳戶」使用者介面中執行這項操作,也可以使用下列指令:

  1. 使用下列指令取得 apigee-runtime 服務帳戶的電子郵件地址:
    gcloud iam service-accounts list --filter "apigee-runtime"

    如果符合 apigee-runtime@$ORG_NAME.iam.gserviceaccount.com 模式,您可以在下一個步驟中使用該模式。

  2. 將「Cloud Trace 代理人」角色指派給服務帳戶:
    gcloud projects add-iam-policy-binding $PROJECT_ID \
        --member="serviceAccount:apigee-runtime@$PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/cloudtrace.agent"

    其中:$PROJECT_ID 是安裝 Apigee Hybrid 的 Google Cloud 專案名稱。

取代覆寫中的 metrics:stackdriverExporter 屬性。

自 Hybrid 1.7 版起,metrics:stackdriverExporter 已替換為 metrics:appStackdriverExportermetrics:proxyStackdriverExporter。請改用對應的屬性。舉例來說,請取代:

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

with:

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

請參閱設定屬性參考資料:指標

安裝 Hybrid 1.7.6 執行階段

  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 位元:

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

    Mac OS

    Mac 64 位元:

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

    Windows

    Windows 64 位元:

    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. 使用 version 指令驗證 apigeectl 版本:
    ./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。這些連結可讓您從 hybrid-files 目錄內執行新安裝的 apigeectl 指令:
      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. 如果沒有任何錯誤,請初始化 Hybrid 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

        只有在 Pod 準備就緒時,才繼續執行下一個步驟。

      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 版本早於 v1.7.2,請務必升級至 v1.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 升級至 1.7.2 版:
    $ kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.7.2/cert-manager.yaml
    

將 ASM 升級至 1.26版

請按照適用於您平台的 ASM 說明文件進行升級:

安裝及設定 ASM 的操作說明會因平台而異。平台可分為下列類別:

  • GKE:在 Google Cloud 上執行的 Google Kubernetes Engine 叢集。
  • Google Cloud 以外:在下列項目上執行的 Anthos 叢集:
    • VMware 中的 Anthos 叢集 (GKE On-Prem)
    • Anthos on bare metal
    • AWS 中的 Anthos 叢集
    • Amazon EKS
  • 其他 Kubernetes 平台:在下列項目中建立及執行的相容叢集:
    • AKS
    • EKS
    • OpenShift

GKE

如要將混合式安裝的 ASM 升級至 1.26.4 版,請按照下列步驟操作:

  1. 為升級做好準備。
  2. 安裝新版 ASM。
  3. 從目前的安裝項目中,刪除舊版 ASM 的部署項目、服務和 Webhook。
  4. 升級閘道並設定新的 Webhook。

如要將 GKE Hybrid 升級至 ASM 版本 1.26.4 ,請按照下列步驟操作:

  1. 請參閱「升級 Anthos 服務網格」一文中的需求,但暫時不要執行升級。
  2. 安裝新版本前,請先判斷目前的修訂版本。您需要這項資訊,才能從目前的安裝項目中刪除舊版 ASM 的部署作業、服務和 Webhook。使用下列指令將目前的 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-1264-1
      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-1264-1"
    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 升級作業:

  • VMware 中的 Anthos 叢集 (GKE On-Prem)
  • Anthos on bare metal
  • AWS 中的 Anthos 叢集
  • Amazon EKS

如要將混合式安裝的 ASM 升級至 1.26.4 版,請按照下列步驟操作:

  1. 為升級做好準備。
  2. 安裝新版 ASM。
  3. 從目前的安裝項目中,刪除舊版 ASM 的部署項目、服務和 Webhook。
  4. 升級閘道並設定新的 Webhook。
  1. 請參閱「升級 Anthos 服務網格」一文中的需求,但暫時不要執行升級。
  2. 安裝新版本前,請先判斷目前的修訂版本。您需要這項資訊,才能從目前的 ASM 安裝項目中刪除驗證 Webhook變動 Webhook。使用下列指令將目前的 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-1264-1
      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-1264-1"
    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 連結叢集上 Anthos 服務網格 (ASM) 版本 istio-1.26.4-asm.1 的程序,與全新安裝程序相同。

準備安裝 Anthos Service Mesh

  1. 刪除變動 Webhook 和驗證 Webhook:
    1. cd 到安裝 asmcli 的目錄。
    2. 將目前的新修訂版本儲存在環境變數中,以供指令碼使用,刪除 Webhook:
      UPGRADE_REV="asm-1264-1"
    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 服務網格安裝檔案下載至目前的工作目錄:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.26.4-asm.1-linux-amd64.tar.gz
  4. 下載簽名檔,並使用 openssl 驗證簽名:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.26.4-asm.1-linux-amd64.tar.gz.1.sig
    openssl dgst -verify /dev/stdin -signature istio-1.26.4-asm.1-linux-amd64.tar.gz.1.sig istio-1.26.4-asm.1.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  5. 將檔案的內容解壓縮到您檔案系統上的任何位置,舉例來說,如要將內容解壓縮至目前的工作目錄,請執行下列指令:
    tar xzf istio-1.26.4-asm.1-linux-amd64.tar.gz

    這個指令會在目前的工作目錄中建立名為 istio-1.26.4-asm.1 的安裝目錄,其中包含:

    • samples 目錄中的範例應用程式。
    • 您用來安裝 Anthos 服務網格的 istioctl 指令列工具位於 bin 目錄中。
    • Anthos 服務網格設定檔位於 manifests/profiles 目錄中。
  6. 確認您位於 Anthos Service Mesh 安裝的根目錄中:
    cd istio-1.26.4-asm.1
  7. 為方便起見,請將 /bin 目錄中的工具新增至 PATH:
    export PATH=$PWD/bin:$PATH
  8. Mac OS

  9. 將 Anthos 服務網格安裝檔案下載至目前的工作目錄:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.26.4-asm.1-osx.tar.gz
  10. 下載簽名檔,並使用 openssl 驗證簽名:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.26.4-asm.1-osx.tar.gz.1.sig
    openssl dgst -sha256 -verify /dev/stdin -signature istio-1.26.4-asm.1-osx.tar.gz.1.sig istio-1.26.4-asm.1.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  11. 將檔案的內容解壓縮到您檔案系統上的任何位置,舉例來說,如要將內容解壓縮至目前的工作目錄,請執行下列指令:
    tar xzf istio-1.26.4-asm.1-osx.tar.gz

    這個指令會在目前的工作目錄中建立名為 istio-1.26.4-asm.1 的安裝目錄,其中包含:

    • samples 目錄中的範例應用程式。
    • 您用來安裝 Anthos 服務網格的 istioctl 指令列工具位於 bin 目錄中。
    • Anthos 服務網格設定檔位於 manifests/profiles 目錄中。
  12. 確認您位於 Anthos Service Mesh 安裝的根目錄中:
    cd istio-1.26.4-asm.1
  13. 為方便起見,請將 /bin 目錄中的工具新增至 PATH:
    export PATH=$PWD/bin:$PATH
  14. Windows

  15. 將 Anthos 服務網格安裝檔案下載至目前的工作目錄:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.26.4-asm.1-win.zip
  16. 下載簽名檔,並使用 openssl 驗證簽名:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.26.4-asm.1-win.zip.1.sig
    openssl dgst -verify - -signature istio-1.26.4-asm.1-win.zip.1.sig istio-1.26.4-asm.1.win.zip <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  17. 將檔案的內容解壓縮到您檔案系統上的任何位置,舉例來說,如要將內容解壓縮至目前的工作目錄,請執行下列指令:
    tar xzf istio-1.26.4-asm.1-win.zip

    這個指令會在目前的工作目錄中建立名為 istio-1.26.4-asm.1 的安裝目錄,其中包含:

    • samples 目錄中的範例應用程式。
    • 您用來安裝 Anthos 服務網格的 istioctl 指令列工具位於 bin 目錄中。
    • Anthos 服務網格設定檔位於 manifests\profiles 目錄中。
  18. 確認您位於 Anthos Service Mesh 安裝的根目錄中:
    cd istio-1.26.4-asm.1
  19. 為方便起見,請將 \bin 目錄中的工具新增至 PATH:
    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. 使用 asm-multicloud 設定檔,透過 istioctl 安裝 Anthos 服務網格:
    istioctl install \
        --set profile=asm-multicloud \
        --set revision="asm-1264-1" \
        --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-1264-1-798ffb964-2ls88       1/1     Running   0          3m21s
    istiod-asm-1264-1-798ffb964-fnj8c       1/1     Running   1          3m21s

    --set revision 引數會將修訂版本標籤新增至 istiod,格式為 istio.io/rev=asm-1264-1。自動 Sidecar 注入器 Webhook 會使用修訂版本標籤,將注入的 Sidecar 與特定 istiod 修訂版本建立關聯。如要為命名空間啟用 Sidecar 自動插入功能,您必須使用與 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-1264-1       ClusterIP      172.200.63.220   <none>          15010/TCP,15012/TCP,443/TCP,15014/TCP                                        3m43s

OpenShift

在這些操作說明中,升級 Anthos 連結叢集上 Anthos 服務網格 (ASM) 版本 istio-1.26.4-asm.1 的程序,與全新安裝程序相同。

準備安裝 Anthos Service Mesh

  1. 刪除變動 Webhook 和驗證 Webhook:
    1. cd 到安裝 asmcli 的目錄。
    2. 將目前的新修訂版本儲存在環境變數中,以供指令碼使用,刪除 Webhook:
      UPGRADE_REV="asm-1264-1"
    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. 使用下列 OpenShift CLI (oc) 指令,將 anyuid 安全性環境限制 (SCC) 授予 istio-system:
    oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
  4. 將 Anthos 服務網格安裝檔案下載至目前的工作目錄:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.26.4-asm.1-linux-amd64.tar.gz
  5. 下載簽名檔,並使用 openssl 驗證簽名:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.26.4-asm.1-linux-amd64.tar.gz.1.sig
    openssl dgst -verify /dev/stdin -signature istio-1.26.4-asm.1-linux-amd64.tar.gz.1.sig istio-1.26.4-asm.1.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  6. 將檔案的內容解壓縮到您檔案系統上的任何位置,舉例來說,如要將內容解壓縮至目前的工作目錄,請執行下列指令:
    tar xzf istio-1.26.4-asm.1-linux-amd64.tar.gz

    這個指令會在目前的工作目錄中建立名為 istio-1.26.4-asm.1 的安裝目錄,其中包含:

    • samples 目錄中的範例應用程式。
    • 您用來安裝 Anthos 服務網格的 istioctl 指令列工具位於 bin 目錄中。
    • Anthos 服務網格設定檔位於 manifests/profiles 目錄中。
  7. 確認您位於 Anthos Service Mesh 安裝的根目錄中:
    cd istio-1.26.4-asm.1
  8. 為方便起見,請將 /bin 目錄中的工具新增至 PATH:
    export PATH=$PWD/bin:$PATH
  9. Mac OS

  10. 使用下列 OpenShift CLI (oc) 指令,將 anyuid 安全性環境限制 (SCC) 授予 istio-system:
    oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
  11. 將 Anthos 服務網格安裝檔案下載至目前的工作目錄:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.26.4-asm.1-osx.tar.gz
  12. 下載簽名檔,並使用 openssl 驗證簽名:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.26.4-asm.1-osx.tar.gz.1.sig
    openssl dgst -sha256 -verify /dev/stdin -signature istio-1.26.4-asm.1-osx.tar.gz.1.sig istio-1.26.4-asm.1.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  13. 將檔案的內容解壓縮到您檔案系統上的任何位置,舉例來說,如要將內容解壓縮至目前的工作目錄,請執行下列指令:
    tar xzf istio-1.26.4-asm.1-osx.tar.gz

    這個指令會在目前的工作目錄中建立名為 istio-1.26.4-asm.1 的安裝目錄,其中包含:

    • samples 目錄中的範例應用程式。
    • 您用來安裝 Anthos 服務網格的 istioctl 指令列工具位於 bin 目錄中。
    • Anthos 服務網格設定檔位於 manifests/profiles 目錄中。
  14. 確認您位於 Anthos Service Mesh 安裝的根目錄中:
    cd istio-1.26.4-asm.1
  15. 為方便起見,請將 /bin 目錄中的工具新增至 PATH:
    export PATH=$PWD/bin:$PATH
  16. Windows

  17. 使用下列 OpenShift CLI (oc) 指令,將 anyuid 安全性環境限制 (SCC) 授予 istio-system:
    oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
  18. 將 Anthos 服務網格安裝檔案下載至目前的工作目錄:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.26.4-asm.1-win.zip
  19. 下載簽名檔,並使用 openssl 驗證簽名:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.26.4-asm.1-win.zip.1.sig
    openssl dgst -verify - -signature istio-1.26.4-asm.1-win.zip.1.sig istio-1.26.4-asm.1.win.zip <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  20. 將檔案的內容解壓縮到您檔案系統上的任何位置,舉例來說,如要將內容解壓縮至目前的工作目錄,請執行下列指令:
    tar xzf istio-1.26.4-asm.1-win.zip

    這個指令會在目前的工作目錄中建立名為 istio-1.26.4-asm.1 的安裝目錄,其中包含:

    • samples 目錄中的範例應用程式。
    • 您用來安裝 Anthos 服務網格的 istioctl 指令列工具位於 bin 目錄中。
    • Anthos 服務網格設定檔位於 manifests\profiles 目錄中。
  21. 確認您位於 Anthos Service Mesh 安裝的根目錄中:
    cd istio-1.26.4-asm.1
  22. 為方便起見,請將 \bin 目錄中的工具新增至 PATH:
    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. 使用 asm-multicloud 設定檔,透過 istioctl 安裝 Anthos 服務網格:
    istioctl install \
        --set profile=asm-multicloud \
        --set revision="asm-1264-1" \
        --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-1264-1-798ffb964-2ls88       1/1     Running   0          3m21s
    istiod-asm-1264-1-798ffb964-fnj8c       1/1     Running   1          3m21s

    --set revision 引數會將修訂版本標籤新增至 istiod,格式為 istio.io/rev=1.6.11-asm.1。自動 Sidecar 注入器 Webhook 會使用修訂版本標籤,將注入的 Sidecar 與特定 istiod 修訂版本建立關聯。如要為命名空間啟用 Sidecar 自動插入功能,您必須使用與 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-1264-1       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,檢查 Pod 的狀態,然後執行 ${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. 檢查 pod 的狀態:
      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

      只有在 apigeeds Pod 執行中時,才能繼續下一個步驟。

    4. 執行 apigeectl init
      ${APIGEECTL_HOME}/apigeectl init -f ./overrides/ORIGINAL_OVERRIDES.yaml