將 Apigee Hybrid 升級至 1.11 版

本程序說明如何從 Apigee Hybrid 1.10.x 版升級至 Apigee Hybrid 1.11.2 版,以及如何從先前的 Hybrid 1.11.x 版升級至 1.11.2 版。

次要版本升級 (例如從 1.10 版升級至 1.11 版) 和修補程式版本升級 (例如從 1.11.0 版升級至 1.11.2 版) 採用相同程序。

如果您要從 Apigee Hybrid 1.9 版或更舊版本升級,請先升級至 Hybrid 1.10 版,再升級至 1.11.2 版。請參閱將 Apigee Hybrid 升級至 1.10 版的操作說明。

升級至 1.11.2 版總覽

Hybrid 1.11.2-Hotfix.3 中更嚴格的類別例項化檢查

從 Apigee Hybrid 1.11.2-Hotfix.3 開始,JavaCallout 政策現在會在 Java 類別例項化期間提供額外安全性。這項強化安全措施可防止部署直接或間接嘗試執行不允許動作的政策,

在大多數情況下,現有政策仍會正常運作,不受任何影響。不過,如果政策依賴第三方程式庫,或是自訂程式碼間接觸發需要提升權限的作業,就可能會受到影響。

升級 Apigee Hybrid 的程序分為下列幾節:

  1. 準備升級
  2. 安裝混合式執行階段 1.11.2 版

必要條件

這些升級說明假設您已安裝 Apigee Hybrid 1.10.x 版,並想升級至 1.11.2 版。如要從舊版更新,請參閱將 Apigee Hybrid 升級至 1.10 版的操作說明。

Helm 資訊套件和 apigeectl

在 1.11 版中,您可以選擇使用 Helm 資訊圖表或 apigeectl 安裝及管理 Apigee Hybrid。Apigee 建議使用 Helm 管理安裝作業。

使用 Helm 從 v1.10 遷移至 v1.11 (使用 apigeectl)

如要從以 apigeectl 管理的 Hybrid v1.10 安裝項目,升級至以 Helm 管理的 Apigee Hybrid v1.11,請按照下列步驟操作:

  1. 首先,請按照「apigeectl 將 Apigee Hybrid 遷移至 Helm 資訊套件」一文的說明,遷移 v1.10 安裝項目的 Helm。
  2. 請按照下方 Helm 圖表的指示升級安裝。

準備升級至 1.11 版

Helm

  1. 這些操作說明會使用環境變數 APIGEE_HELM_CHARTS_HOME,代表您在檔案系統中安裝 Helm 圖表的目錄。視需要切換至這個目錄,然後使用下列指令定義變數:

    Linux

    export APIGEE_HELM_CHARTS_HOME=$PWD
    echo $APIGEE_HELM_CHARTS_HOME

    Mac OS

    export APIGEE_HELM_CHARTS_HOME=$PWD
    echo $APIGEE_HELM_CHARTS_HOME

    Windows

    set APIGEE_HELM_CHARTS_HOME=%CD%
    echo %APIGEE_HELM_CHARTS_HOME%
  2. 建立 1.10 版 $APIGEE_HELM_CHARTS_HOME/ 目錄的備份副本。你可以使用任何備份程序。舉例來說,您可以使用下列指令,建立整個目錄的 tar 檔案:
    tar -czvf $APIGEE_HELM_CHARTS_HOME/../apigee-helm-charts-v1.10-backup.tar.gz $APIGEE_HELM_CHARTS_HOME
  3. 按照「Cassandra 備份與復原」一文中的說明,備份 Cassandra 資料庫。
  4. 如果您在覆寫中使用服務憑證檔案 (.json) 驗證服務帳戶,請確認服務帳戶憑證檔案位於正確的 Helm 圖表目錄中。Helm 圖表無法讀取各圖表目錄以外的檔案。

    如果您使用 Kubernetes 密鑰或 Workload Identity 驗證服務帳戶,則不需要執行這個步驟。

    下表列出各項服務帳戶檔案的目標位置,視安裝類型而定:

    正式環境

    服務帳戶 預設檔案名稱 Helm 資訊套件目錄
    apigee-cassandra PROJECT_ID-apigee-cassandra.json $APIGEE_HELM_CHARTS_HOME/apigee-datastore/
    apigee-logger PROJECT_ID-apigee-logger.json $APIGEE_HELM_CHARTS_HOME/apigee-telemetry/
    apigee-mart PROJECT_ID-apigee-mart.json $APIGEE_HELM_CHARTS_HOME/apigee-org/
    apigee-metrics PROJECT_ID-apigee-metrics.json $APIGEE_HELM_CHARTS_HOME/apigee-telemetry/
    apigee-runtime PROJECT_ID-apigee-runtime.json $APIGEE_HELM_CHARTS_HOME/apigee-env
    apigee-synchronizer PROJECT_ID-apigee-synchronizer.json $APIGEE_HELM_CHARTS_HOME/apigee-env/
    apigee-udca PROJECT_ID-apigee-udca.json $APIGEE_HELM_CHARTS_HOME/apigee-org/
    apigee-watcher PROJECT_ID-apigee-watcher.json $APIGEE_HELM_CHARTS_HOME/apigee-org/

    非正式環境

    在下列每個目錄中,複製 apigee-non-prod 服務帳戶檔案:

    服務帳戶 預設檔案名稱 Helm 資訊套件目錄
    apigee-non-prod PROJECT_ID-apigee-non-prod.json $APIGEE_HELM_CHARTS_HOME/apigee-datastore/
    $APIGEE_HELM_CHARTS_HOME/apigee-telemetry/
    $APIGEE_HELM_CHARTS_HOME/apigee-org/
    $APIGEE_HELM_CHARTS_HOME/apigee-env/
  5. 請確認 TLS 憑證和金鑰檔案 (.crt.key 和/或 .pem) 位於 $APIGEE_HELM_CHARTS_HOME/apigee-virtualhost/ 目錄中。

apigeectl

這些操作說明中的範例使用下列目錄結構。您的安裝方式可能不同。請根據安裝結構調整指示。

hybrid-v1.11-root-directory/
└── apigeectl/
    └── config/
    └── plugins/
    └── templates/
    └── tools/
└── hybrid-files/
    └── overrides/
    └── service-accounts/
    └── certs/
hybrid-v1.10-root-directory/
  1. 這些操作說明會使用環境變數 APIGEECTL_HOME,代表您在檔案系統中安裝 apigeectl 的目錄。如有需要,請將目錄變更為 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.10 版的 $APIGEECTL_HOME/ 目錄。例如:
    tar -czvf $APIGEECTL_HOME/../apigeectl-v1.10-backup.tar.gz $APIGEECTL_HOME
  3. 按照「Cassandra 備份與復原」一文中的說明,備份 Cassandra 資料庫。

升級 Kubernetes 版本

檢查 Kubernetes 平台版本,並視需要將 Kubernetes 平台升級至混合式 1.10 和混合式 1.11 支援的版本。如需協助,請參閱相關平台的說明文件。

安裝 Hybrid 1.11.2 執行階段

Helm

準備升級 Helm 資訊圖表

  1. overrides.yaml 檔案中進行下列變更,讓 apigee-operatorapigee-env 圖表使用正確的標記 1.11.2-hotfix.3
    ao:
      image:
        url: "gcr.io/apigee-release/hybrid/apigee-operators"
        tag: "1.11.2-hotfix.3"
    runtime:
      image:
        url: "gcr.io/apigee-release/hybrid/apigee-runtime"
        tag: "1.11.2-hotfix.3"
    

    請參閱 Apigee 1.11.2-hotfix.3 版本資訊

  2. 提取 Apigee Helm 資訊套件。

    Apigee Hybrid 圖表託管於 Google Artifact Registry

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

    使用 pull 指令,將所有 Apigee Hybrid Helm 圖表複製到本機儲存空間,指令如下:

    export CHART_REPO=oci://us-docker.pkg.dev/apigee-release/apigee-hybrid-helm-charts
    export CHART_VERSION=1.11.2
    helm pull $CHART_REPO/apigee-operator --version $CHART_VERSION --untar
    helm pull $CHART_REPO/apigee-datastore --version $CHART_VERSION --untar
    helm pull $CHART_REPO/apigee-env --version $CHART_VERSION --untar
    helm pull $CHART_REPO/apigee-ingress-manager --version $CHART_VERSION --untar
    helm pull $CHART_REPO/apigee-org --version $CHART_VERSION --untar
    helm pull $CHART_REPO/apigee-redis --version $CHART_VERSION --untar
    helm pull $CHART_REPO/apigee-telemetry --version $CHART_VERSION --untar
    helm pull $CHART_REPO/apigee-virtualhost --version $CHART_VERSION --untar
    
  3. 視需要安裝 cert-manager。

    如要升級 cert-manager 版本,請使用下列指令安裝新版本:

    kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.11.1/cert-manager.yaml
    
  4. 安裝更新的 Apigee CRD:
    1. 執行下列指令,使用 kubectl 模擬測試功能:

      kubectl apply -k  apigee-operator/etc/crds/default/ --server-side --force-conflicts --validate=false --dry-run
      
    2. 使用模擬測試指令驗證後,請執行下列指令:

      kubectl apply -k  apigee-operator/etc/crds/default/ --server-side --force-conflicts --validate=false
      
    3. 使用 kubectl get crds 指令驗證安裝:
      kubectl get crds | grep apigee

      輸出內容應如下所示:

      apigeedatastores.apigee.cloud.google.com                    2023-10-09T14:48:30Z
      apigeedeployments.apigee.cloud.google.com                   2023-10-09T14:48:30Z
      apigeeenvironments.apigee.cloud.google.com                  2023-10-09T14:48:31Z
      apigeeissues.apigee.cloud.google.com                        2023-10-09T14:48:31Z
      apigeeorganizations.apigee.cloud.google.com                 2023-10-09T14:48:32Z
      apigeeredis.apigee.cloud.google.com                         2023-10-09T14:48:33Z
      apigeerouteconfigs.apigee.cloud.google.com                  2023-10-09T14:48:33Z
      apigeeroutes.apigee.cloud.google.com                        2023-10-09T14:48:33Z
      apigeetelemetries.apigee.cloud.google.com                   2023-10-09T14:48:34Z
      cassandradatareplications.apigee.cloud.google.com           2023-10-09T14:48:35Z
      
  5. 檢查叢集節點上的標籤。 根據預設,Apigee 會在標籤為 cloud.google.com/gke-nodepool=apigee-data 的節點上排定資料 Pod,並在標籤為 cloud.google.com/gke-nodepool=apigee-runtime 的節點上排定執行階段 Pod。您可以在 overrides.yaml 檔案中自訂節點集區標籤。

    詳情請參閱「 設定專屬節點集區」。

安裝 Apigee Hybrid Helm 資訊套件

  1. 如果沒有,請前往 APIGEE_HELM_CHARTS_HOME 目錄。從該目錄執行下列指令。
  2. 升級 Apigee Operator/Controller:

    模擬測試:

    helm upgrade operator apigee-operator/ \
      --install \
      --create-namespace \
      --namespace apigee-system \
      -f OVERRIDES_FILE \
      --dry-run
    

    升級圖表:

    helm upgrade operator apigee-operator/ \
      --install \
      --create-namespace \
      --namespace apigee-system \
      -f OVERRIDES_FILE
    

    驗證 Apigee Operator 安裝狀態:

    helm ls -n apigee-system
    
    NAME           NAMESPACE       REVISION        UPDATED                                 STATUS          CHART                   APP VERSION
    operator    apigee-system   3               2023-06-26 00:42:44.492009 -0800 PST    deployed        apigee-operator-1.11.2   1.11.2

    檢查可用性,確認該服務已啟動並正常運作:

    kubectl -n apigee-system get deploy apigee-controller-manager
    
    NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
    apigee-controller-manager   1/1     1            1           7d20h
  3. 升級 Apigee 資料儲存庫:

    模擬測試:

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

    升級圖表:

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

    檢查 apigeedatastore 的狀態,確認是否已啟動並正常運作:

    kubectl -n apigee get apigeedatastore default
    
    NAME      STATE       AGE
    default   running    2d
  4. 升級 Apigee 遙測功能:

    模擬測試:

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

    升級圖表:

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

    檢查狀態,確認服務已啟動並正常運作:

    kubectl -n apigee get apigeetelemetry apigee-telemetry
    
    NAME               STATE     AGE
    apigee-telemetry   running   2d
  5. 升級 Apigee Redis:

    模擬測試:

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

    升級圖表:

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

    檢查狀態,確認服務已啟動並正常運作:

    kubectl -n apigee get apigeeredis default
    
    NAME      STATE     AGE
    default   running   2d
  6. 升級 Apigee Ingress 管理工具:

    模擬測試:

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

    升級圖表:

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

    檢查可用性,確認該服務已啟動並正常運作:

    kubectl -n apigee get deployment apigee-ingressgateway-manager
    
    NAME                            READY   UP-TO-DATE   AVAILABLE   AGE
    apigee-ingressgateway-manager   2/2     2            2           2d
  7. 升級 Apigee 機構:

    模擬測試:

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

    升級圖表:

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

    檢查相應機構的狀態,確認是否已啟動並正常運作:

    kubectl -n apigee get apigeeorg
    
    NAME                      STATE     AGE
    apigee-org1-xxxxx          running   2d
  8. 升級環境。

    一次只能安裝一個環境。使用 --set env=ENV_NAME 指定環境:

    模擬測試:

    helm upgrade ENV_RELEASE_NAME apigee-env/ \
      --install \
      --namespace apigee \
      --set env=ENV_NAME \
      -f OVERRIDES_FILE \
      --dry-run
    
    • ENV_RELEASE_NAME 是您先前安裝 apigee-env 圖表時使用的名稱。在 Hybrid 1.10 中,這通常是 apigee-env-ENV_NAME。在 Hybrid 1.11 以上版本中,通常是 ENV_NAME
    • ENV_NAME 是您要升級的環境名稱。
    • OVERRIDES_FILE 是 v.1.11.2 的新覆寫檔案

    升級圖表:

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

    請檢查相應環境的狀態,確認該環境已啟動並執行:

    kubectl -n apigee get apigeeenv
    
    NAME                          STATE       AGE   GATEWAYTYPE
    apigee-org1-dev-xxx            running     2d
  9. 升級環境群組 (virtualhosts)。
    1. 您一次只能升級一個環境群組 (虛擬主機)。使用 --set envgroup=ENV_GROUP_NAME 指定環境群組。針對 overrides.yaml 檔案中提及的每個環境群組,重複執行下列指令:

      模擬測試:

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

      ENV_GROUP_RELEASE_NAME 是您先前安裝 apigee-virtualhost 圖表時使用的名稱。在 Hybrid 1.10 中,這通常是 apigee-virtualhost-ENV_GROUP_NAME。在 Hybrid 1.11 以上版本中,通常是 ENV_GROUP_NAME

      升級圖表:

      helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \
        --install \
        --namespace apigee \
        --set envgroup=ENV_GROUP_NAME \
        -f OVERRIDES_FILE
      
    2. 檢查 ApigeeRoute (AR) 的狀態。

      安裝 virtualhosts 會建立 ApigeeRouteConfig (ARC),一旦 Apigee 監控程式從控制層提取環境群組相關詳細資料,ARC 就會在內部建立 ApigeeRoute (AR)。因此,請檢查對應 AR 的狀態是否為執行中:

      kubectl -n apigee get arc
      
      NAME                                STATE   AGE
      apigee-org1-dev-egroup                       2d
      kubectl -n apigee get ar
      
      NAME                                        STATE     AGE
      apigee-org1-dev-egroup-xxxxxx                running   2d

安裝 1.11.2-hotfix.3

  1. 請對 overrides.yaml 檔案進行下列變更,讓 runtime 使用正確的代碼 1.11.2-hotfix.3
    runtime:
      image:
        url: "gcr.io/apigee-release/hybrid/apigee-runtime"
        tag: "1.11.2-hotfix.3"
    

    請參閱 Apigee 1.11.2-hotfix.3 版本資訊

  2. 使用 helm upgrade 指令和目前的覆寫檔案更新 apigee-env 圖表。

    針對每個環境重複執行這項操作。

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

apigeectl

  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

    您應該會看到最新 Apigee Hybrid 版本:

      1.11.2
  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.10/

    Mac OS

    mv $APIGEECTL_HOME/ $APIGEECTL_HOME-v1.10/ 

    Windows

    rename %APIGEECTL_HOME% %APIGEECTL_HOME%-v1.10 
  6. 將下載的 gzip 檔案內容解壓縮至混合式基本目錄。 混合式基礎目錄是重新命名的 apigeectl-v1.10 目錄所在位置:

    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.11.2-xxxxxxx_linux_64。使用下列指令將該目錄重新命名為 apigeectl

    Linux

    mv apigeectl_1.11.2-xxxxxxx_linux_64 apigeectl

    Mac OS

    mv apigeectl_1.11.2-xxxxxxx_mac_64 apigeectl

    Windows

    rename apigeectl_1.11.2-xxxxxxx_windows_64 apigeectl
  8. 切換至 apigeectl 目錄:
    cd ./apigeectl

    這個目錄是 apigeectl 主目錄。這是 apigeectl 可執行指令所在的位置。

  9. 這些操作說明會使用環境變數 $APIGEECTL_HOME,代表檔案系統中安裝 apigeectl 公用程式的目錄。如有需要,請將目錄變更為 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.11.2
  11. 建立 hybrid-base-directory/hybrid-files 目錄,然後移至該目錄。hybrid-files 目錄包含覆寫檔案、憑證和服務帳戶等設定檔。例如:

    Linux

    mkdir $APIGEECTL_HOME/../hybrid-files
    cd $APIGEECTL_HOME/../hybrid-files

    Mac OS

    mkdir $APIGEECTL_HOME/../hybrid-files
    cd $APIGEECTL_HOME/../hybrid-files

    Windows

    mkdir %APIGEECTL_HOME%/../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
  14. 執行模擬初始化作業,檢查是否有錯誤:
    ${APIGEECTL_HOME}/apigeectl init -f OVERRIDES_FILE --dry-run=client

    其中 OVERRIDES_FILE 是覆寫檔案的名稱,例如 ./overrides/overrides.yaml

  15. 如果沒有任何錯誤,請初始化 Hybrid 1.11.2:
    $APIGEECTL_HOME/apigeectl init -f OVERRIDES_FILE
  16. 檢查初始化狀態:
    $APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE

    成功之後,輸出內容會顯示:All containers ready.

    kubectl describe apigeeds -n apigee

    在輸出內容中,尋找 State: running

  17. 使用 --dry-run 旗標執行 apply 指令的模擬測試,檢查是否有錯誤:
    $APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --dry-run=client
  18. 如果沒有錯誤,請套用覆寫。請根據安裝環境,選取並按照正式環境或非正式環境的操作說明進行。

    正式環境

    在正式環境中,請個別升級每個混合式元件,並在升級下一個元件前,檢查升級元件的狀態。

    1. 請確認您位於 hybrid-files 目錄。
    2. 套用覆寫項目來升級 Cassandra:
      $APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --datastore
    3. 檢查完成:
      $APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE

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

    4. 套用覆寫項目來升級遙測元件,並檢查是否完成:
      $APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --telemetry
      $APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE
    5. 啟動 Redis 元件:
      $APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --redis
    6. 套用覆寫項目,升級機構層級元件 (MART、Watcher 和 Apigee Connect),並檢查是否完成:
      $APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --org
      $APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE
    7. 套用覆寫內容來升級環境。你有兩種選擇:
      • 逐一環境:一次對一個環境套用覆寫,並檢查完成情況。針對每個環境重複這個步驟:
        $APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --env ENV_NAME
        $APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE

        其中 ENV_NAME 是要升級的環境名稱。

      • 一次套用至所有環境:一次將覆寫值套用至所有環境,並檢查完成情況:
        $APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --all-envs
        $APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE
    8. 套用覆寫項目來升級 virtualhosts 元件,並檢查是否完成:
      $APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --settings virtualhosts
      $APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE

    非正式環境

    在大多數非正式環境、示範環境或實驗環境中,您可以一次將覆寫套用至所有元件。如果非正式環境規模龐大且複雜,或與正式環境非常相似,建議您按照升級正式環境的指示操作。

    1. 請確認您位於 hybrid-files 目錄。
    2. $APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE
    3. 查看狀態:
      $APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE

安裝 1.11.2-hotfix.3

  1. 請對 overrides.yaml 檔案進行下列變更,讓 runtime 使用正確的代碼 1.11.2-hotfix.3
    runtime:
      image:
        url: "gcr.io/apigee-release/hybrid/apigee-runtime"
        tag: "1.11.2-hotfix.3"
    

    請參閱 Apigee 1.11.2-hotfix.3 版本資訊

  2. 使用更新後的覆寫檔案,透過 apigeectl init 安裝 Hotfix。

    模擬測試:

    ${APIGEECTL_HOME}/apigeectl init -f OVERRIDES_FILE --dry-run=client
    

    初始化:

    ${APIGEECTL_HOME}/apigeectl init -f OVERRIDES_FILE
    
  3. 使用 apigeectl apply 套用 Hotfix。

    模擬測試:

    ${APIGEECTL_HOME}/apigeectl apply -f OVERRIDES_FILE --all-envs --dry-run=client
    

    適用於:

    ${APIGEECTL_HOME}/apigeectl apply -f OVERRIDES_FILE --all-envs
    

升級至 Hybrid 1.11.2-hotfix.3 後,請使用這個程序驗證 JavaCallout 政策的行為。

  1. 檢查 Java JAR 檔案是否要求不必要的權限

    部署政策後,請檢查執行階段記錄,確認是否出現下列記錄訊息: "Failed to load and initialize class ...". 如果看到這則訊息,表示已部署的 JAR 要求了不必要的權限。如要解決這個問題,請調查 Java 程式碼並更新 JAR 檔案。

  2. 調查並更新 Java 程式碼

    請檢查所有 Java 程式碼 (包括依附元件),找出可能導致不允許作業的原因。找到後,請視需要修改原始碼。

  3. 測試政策時啟用安全檢查功能

    非正式版環境中,啟用安全性檢查標記,並使用更新的 JAR 重新部署政策。如要設定標記,請按照下列步驟操作:

    • apigee-env/values.yaml 檔案中,將 runtime:cwcAppend: 下方的 conf_security-secure.constructor.only 設為 true。例如:
      # Apigee Runtime
      runtime:
        cwcAppend:
          conf_security-secure.constructor.only: true
    • 更新環境的 apigee-env 圖表,套用變更。例如:
      helm upgrade ENV_RELEASE_NAME apigee-env/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --set env=ENV_NAME \
        -f OVERRIDES_FILE

        ENV_RELEASE_NAME 是用於追蹤 apigee-env 圖表安裝和升級作業的名稱。這個名稱不得與安裝中的其他 Helm 版本名稱重複。 通常與 ENV_NAME 相同。不過,如果環境與環境群組的名稱相同,您必須為環境和環境群組使用不同的發布名稱,例如 dev-env-releasedev-envgroup-release。如要進一步瞭解 Helm 中的發布版本,請參閱 Helm 說明文件中的「Three big concepts class="external"」。

    如果記錄訊息 "Failed to load and initialize class ..." 仍存在,請繼續修改及測試 JAR,直到記錄訊息不再顯示為止。

  4. 在正式環境中啟用安全檢查

    在非正式環境中徹底測試及驗證 JAR 檔案後,請將 conf_security-secure.constructor.only 旗標設為 true,並更新正式環境的 apigee-env 圖表,以套用變更,在正式環境中啟用安全性檢查。

復原升級作業

如要復原先前的升級,請按照下列步驟操作:

Helm

如要回復到舊版,請使用先前安裝的圖表和覆寫檔案。

  1. 建立下列環境變數:
    • PREVIOUS_HELM_CHARTS_HOME:先前安裝 Apigee Hybrid Helm 資訊套件的目錄。這是要復原的版本。
  2. 復原虛擬主機。針對覆寫檔案中提及的每個環境群組,重複執行下列指令。
    helm upgrade ENV_GROUP_RELEASE_NAME $PREVIOUS_HELM_CHARTS_HOME/apigee-virtualhost/ \
      --namespace apigee \
      --atomic \
      --set envgroup=ENV_GROUP_NAME \
      -f PREVIOUS_OVERRIDES_FILE
    

    ENV_GROUP_RELEASE_NAME 是您先前安裝 apigee-virtualhost 圖表時使用的名稱。在 Hybrid 1.10 中,這通常是 apigee-virtualhost-ENV_GROUP_NAME。在 Hybrid 1.11 以上版本中,通常是 ENV_GROUP_NAME

  3. 復原環境。針對覆寫檔案中提及的每個環境,重複執行下列指令。
    helm upgrade apigee-env-ENV_NAME $PREVIOUS_HELM_CHARTS_HOME/apigee-env/ \
      --install \
      --namespace apigee \
      --atomic \
      --set env=ENV_NAME \
      -f PREVIOUS_OVERRIDES_FILE
    

    ENV_RELEASE_NAME 是您先前安裝 apigee-env 圖表時使用的名稱。在 Hybrid 1.10 中,這通常是 apigee-env-ENV_NAME。在 Hybrid 1.11 以上版本中,通常是 ENV_NAME

  4. 復原機構:
    helm upgrade ORG_NAME $PREVIOUS_HELM_CHARTS_HOME/apigee-org/ \
      --install \
      --namespace apigee \
      --atomic \
      -f PREVIOUS_OVERRIDES_FILE
    
  5. 復原 Ingress 管理工具:
    helm upgrade ingress-manager $PREVIOUS_HELM_CHARTS_HOME/apigee-ingress-manager/ \
      --install \
      --namespace apigee \
      --atomic \
      -f PREVIOUS_OVERRIDES_FILE
    
  6. 還原 Redis:
    helm upgrade redis $PREVIOUS_HELM_CHARTS_HOME/apigee-redis/ \
      --install \
      --namespace apigee \
      --atomic \
      -f PREVIOUS_OVERRIDES_FILE
    
  7. 復原 Apigee Telemetry:
    helm upgrade telemetry $PREVIOUS_HELM_CHARTS_HOME/apigee-telemetry/ \
      --install \
      --namespace apigee \
      --atomic \
      -f PREVIOUS_OVERRIDES_FILE
    
  8. 回溯 Apigee Datastore (Cassandra 資料庫元件):
    helm upgrade datastore $PREVIOUS_HELM_CHARTS_HOME/apigee-datastore/ \
      --install \
      --namespace apigee \
      --atomic \
      -f PREVIOUS_OVERRIDES_FILE
    
  9. 還原 Apigee 控制器:
    helm upgrade operator $PREVIOUS_HELM_CHARTS_HOME/apigee-operator/ \
      --install \
      --namespace apigee-system \
      --atomic \
      -f PREVIOUS_OVERRIDES_FILE
    
  10. 回溯 Apigee Hybrid CRD:
      kubectl apply -k  $PREVIOUS_HELM_CHARTS_HOME/apigee-operator/etc/crds/default/ --server-side --force-conflicts --validate=false
    

apigeectl

  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. 在要還原的安裝版本根目錄中執行下列指令。 請務必使用要復原版本的原始覆寫檔案:
    1. 在 hybrid-files 目錄中,執行 apigeectl apply
      $APIGEECTL_HOME/apigeectl apply -f ORIGINAL_OVERRIDES_FILE

      其中 ORIGINAL_OVERRIDES_FILE 是舊版混合式安裝的覆寫檔案相對路徑和檔案名稱,例如 ./overrides/overrides1.10.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 apply -f ORIGINAL_OVERRIDES_FILE --dry-run=client --print-yaml --env ENV_NAME 2>/dev/null |grep "runtime:" -A 25 -B 1| grep "autoScaler" -A 2

      輸出內容應如下所示:

            autoScaler:
              minReplicas: 2
              maxReplicas: 10
    5. 執行 apigeectl init
      $APIGEECTL_HOME/apigeectl init -f ORIGINAL_OVERRIDES_FILE