將 Apigee Hybrid 升級至 1.4 版

升級至 1.4.4 版總覽。

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

  1. 備份混合式安裝作業。
  2. 檢查 Kubernetes 版本,並視需要升級。
  3. 升級 ASM。
  4. 安裝 Hybrid 執行階段 1.4 版。

必修課

升級至 1.4 版

  1. (建議) 備份 1.3 版 $APIGEECTL_HOME/ 目錄。例如:
    tar -czvf $APIGEECTL_HOME/../apigeectl-v1.3-backup.tar.gz $APIGEECTL_HOME
  2. (建議) 按照「Cassandra 備份與復原」一文中的指示備份 Cassandra 資料庫
  3. 請按照下列步驟升級 Kubernetes 平台。如需協助,請按照平台的說明文件操作:
    平台 升級至版本
    GKE 1.18.x
    GKE On-Prem (Anthos) 1.5.x
    AKS 1.18.x 使用 Anthos 附加叢集
    EKS 1.18.x 使用 Anthos 附加叢集
  4. 將 ASM 升級至 1.6.x 版。
    1. 按照 ASM 說明文件進行升級:
    2. 請在 istio-operator.yaml 檔案中指定下列入口埠,並將 runAsRoot 屬性設為 true
          … … …
                  ports:
                  - port: 15021
                    name: status-port
                    targetPort: 15021
                  - port: 80
                    name: http2
                    targetPort: 80
                  - port: 443
                    name: https
                    targetPort: 443
      
          … … …
          values:
            gateways:
              istio-ingressgateway:
                runAsRoot: true 
    3. 建立 PeerAuthentication CR,以便在 istio-operator.yaml 檔案中停用 mTLS:
      ---
      apiVersion: security.istio.io/v1beta1
      kind: PeerAuthentication
      metadata:
        name: apigee-system
        namespace: apigee-system
      spec:
        mtls:
          mode: DISABLE
      ---
      apiVersion: security.istio.io/v1beta1
      kind: PeerAuthentication
      metadata:
        name: user-namespace
        namespace: user-namespace
      spec:
        mtls:
          mode: DISABLE
    4. 請按照 ASM 說明文件的說明,使用 istioctl 套用這些變更:

安裝 Hybrid 1.4.4 執行階段

  1. 將最新版本號碼儲存在變數中:
    export VERSION=$(curl -s \
        https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/current-version.txt?ignoreCache=1)
  2. 檢查變數是否已填入版本號碼。如果您想使用其他版本,可以改為將該版本儲存在環境變數中。例如:
    echo $VERSION
      1.4.4
  3. 下載適用於您作業系統的版本套件:

    Mac 64 位元:

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

    Linux 64 位元:

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

    Mac 32 位元:

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

    Linux 32 位元:

    curl -LO \
        https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/$VERSION/apigeectl_linux_32.tar.gz
  4. 將目前的 apigeectl/ 目錄重新命名為備份目錄名稱。例如:
    mv $APIGEECTL_HOME/ $APIGEECTL_HOME-v1.2/ 
  5. 將下載的 gzip 檔案內容解壓縮至混合式基礎目錄。例如:

    tar xvzf filename.tar.gz -C hybrid-base-directory
  6. cd 至基礎目錄。
  7. 根據預設,tar 內容會解壓縮為名稱中含有版本和平台的目錄。例如:./apigeectl_1.4.4-xxx_linux_64。將該目錄重新命名為 apigeectl

    mv apigeectl_1.4.5-xxx_linux_64 apigeectl
  8. apigeectl/ 目錄中,執行 apigeectl initapigeectl applyapigeectl check-ready
    1. 初始化 Hybrid 1.4.4:
      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. 檢查完成情況:
        kubectl -n namespace get pods
        apigeectl check-ready -f overrides.yaml

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

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

      3. 套用覆寫值來升級遙測元件,並檢查完成情況:
        apigeectl apply -f overrides.yaml --telemetry
        kubectl -n namespace get pods
        apigeectl check-ready -f overrides.yaml
      4. 套用覆寫值來升級機構層級元件 (MART、Watcher 和 Apigee Connect),並檢查完成情況:
        apigeectl apply -f overrides.yaml --org
        kubectl -n namespace get pods
        apigeectl check-ready -f overrides.yaml
      5. 套用覆寫值來升級環境。您有兩種選擇:
        • 逐一環境:一次將覆寫值套用至一個環境,並檢查是否完成。針對每個環境重複執行這個步驟:
          apigeectl apply -f overrides.yaml --env env_name
          kubectl -n namespace get pods
          apigeectl check-ready -f overrides.yaml

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

        • 一次套用至所有環境:一次將覆寫值套用至所有環境,並檢查完成情況:
          apigeectl apply -f overrides.yaml --all-envs
          kubectl -n namespace get pods
          apigeectl check-ready -f overrides.yaml

      示範/實驗

      在大多數的示範或實驗環境中,您可以一次將覆寫值套用至所有元件。如果您的示範/實驗環境龐大且複雜,或與實際執行環境相似,建議您參考升級實際執行環境的操作說明

      1. apigeectl apply -f overrides.yaml
      2. 查看狀態:
        apigeectl check-ready -f overrides.yaml

    恭喜!您已成功升級至 Apigee Hybrid 1.4.4 版。