將 Apigee Hybrid 升級至 1.10 版

本程序涵蓋從 Apigee Hybrid 1.9.x 升級至 Apigee Hybrid 1.10.5,以及從 Hybrid 1.10.x 先前版本升級至 1.10.5 的程序。

升級次要版本 (例如從 1.9 升級至 1.10) 和升級修補程式版本 (例如從 1.10.0 升級至 1.10.5) 時,請使用相同的程序。

升級至 1.10.5 版總覽

升級 Apigee Hybrid 的程序分為以下幾個部分:

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

先決條件

這些升級操作說明假設您已安裝 Apigee Hybrid 1.9.x 版本,並希望將其升級至 1.10.5 版。如果您要從舊版更新,請參閱將 Apigee hybrid 升級至 1.9 版的操作說明。

準備升級至 1.10 版

  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.9 版 $APIGEECTL_HOME/ 目錄。例如:
    tar -czvf $APIGEECTL_HOME/../apigeectl-v1.9-backup.tar.gz $APIGEECTL_HOME
  3. 按照「Cassandra 備份和復原」一文中的操作說明,備份 Cassandra 資料庫。

升級 Kubernetes 版本

請檢查您的 Kubernetes 平台版本,並視需要將 Kubernetes 平台升級至 hybrid 1.9 和 hybrid 1.10 都支援的版本。如需協助,請參閱平台的說明文件。

安裝 Hybrid 1.10.5 執行階段

  1. 請確認您位於混合式基礎目錄 (apigeectl 可執行檔所在目錄的父目錄):
    cd $APIGEECTL_HOME/..
  2. 使用下列指令,下載適用於您作業系統的版本套件。請務必在下表中選取您的平台:

    Linux

    Linux 64 位元:

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

    Mac OS

    Mac 64 位元:

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

    Windows

    Windows 64 位元:

    curl -LO ^
      https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.10.5/apigeectl_windows_64.zip
  3. 將目前的 apigeectl/ 目錄重新命名為備份目錄名稱。例如:

    Linux

    mv $APIGEECTL_HOME/ $APIGEECTL_HOME-v1.9/

    Mac OS

    mv $APIGEECTL_HOME/ $APIGEECTL_HOME-v1.9/ 

    Windows

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

    Linux

    tar xvzf filename.tar.gz -C ./

    Mac OS

    tar xvzf filename.tar.gz -C ./

    Windows

    tar xvzf filename.zip -C ./
  5. 根據預設,tar 內容會解壓縮為名稱中含有版本和平台的目錄。例如:./apigeectl_1.10.5-xxxxxxx_linux_64。使用下列指令將該目錄重新命名為 apigeectl

    Linux

    mv apigeectl_1.10.5-xxxxxxx_linux_64 apigeectl

    Mac OS

    mv apigeectl_1.10.5-xxxxxxx_mac_64 apigeectl

    Windows

    rename apigeectl_1.10.5-xxxxxxx_windows_64 apigeectl
  6. 切換至 apigeectl 目錄:
    cd ./apigeectl

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

  7. 這些操作說明會使用環境變數 $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%
  8. 使用 version 指令驗證 apigeectl 的版本:
    ./apigeectl version
    Version: 1.10.5
  9. 建立 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
  10. 使用下列指令,確認 kubectl 已設為正確的內容。應將目前的內容設定為您要升級 Apigee Hybrid 的叢集。
    kubectl config get-contexts | grep \*
  11. 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
  12. 請對 overrides.yaml 檔案進行下列變更,啟用 apigee-operator 圖表或使用正確的標記 1.10.5-hotfix.1
      ao:
        image:
          url: "gcr.io/apigee-release/hybrid/apigee-operators"
          tag: "1.10.5-hotfix.1"
      
  13. 進行初始化模擬測試,檢查是否有錯誤:
    ${APIGEECTL_HOME}/apigeectl init -f OVERRIDES_FILE --dry-run=client

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

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

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

    kubectl describe apigeeds -n apigee

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

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

    生產

    在實際執行環境中,請個別升級每個混合型元件,並在繼續升級下一個元件前,檢查已升級元件的狀態。

    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. 清理混合式執行階段命名空間的已完成工作,其中 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,檢查 Pod 狀態,然後執行 apigeectl init。請務必使用原始覆寫檔案,以便還原至所需版本:
    1. 在 hybrid-files 目錄中執行 apigeectl apply
      $APIGEECTL_HOME/apigeectl apply -f ORIGINAL_OVERRIDES_FILE

      其中 ORIGINAL_OVERRIDES_FILE 是舊版混合安裝的覆寫檔案的相對路徑和檔案名稱,例如 ./overrides/overrides1.9.yaml

    2. 請檢查這些 pod 的狀態:
      kubectl -n NAMESPACE get pods

      其中 NAMESPACE 是 Apigee 混合式命名空間。

    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