升級 Kf

本文說明如何升級現有的 Kf 安裝作業及其依附元件。

事前準備

你需要:

  • 已安裝 Kf 的現有叢集。
  • 存取已安裝 gcloudkfkubectl 的電腦。

驗證現有的 Kf 安裝

  1. 取得驗證憑證以與叢集互動:

    gcloud container clusters get-credentials CLUSTER_NAME \
      --zone CLUSTER_ZONE \
      --project CLUSTER_PROJECT_ID
  2. 執行 kf debug,並驗證 Kf CLI 和 Kf 伺服器版本是否相符。

    • CLI 版本會列在 Kf Client 下方。
    • Kf 伺服器版本會列在 kf["app.kubernetes.io/version"] 下方。
    $ kf debug
    ...
    Version:
      Kf Client:                        v2.0.0
      Server version:                   v1.17.13-gke.1401
      kf["app.kubernetes.io/version"]:  v2.0.0
    ...
    

    如果 Kf 用戶端和 Kf 伺服器的值「不相符」,請下載安裝與伺服器版本相符的 Kf CLI 版本,然後使用新的 CLI 重複檢查。請先確認 CLI 版本與伺服器版本相符,再繼續操作。

  3. 執行 kf doctor 以查看叢集狀態。請先確認所有測試均通過,再繼續操作。

    $ kf doctor
    ...
    === RUN doctor/user
    === RUN doctor/user/ContainerRegistry
    --- PASS: doctor/user
       --- PASS: doctor/user/ContainerRegistry
    ...
    

    如果您看到「Error: environment failed checks」訊息,請按照 doctor 輸出內容中的指示解決問題,並重試指令,直到成功為止。

升級

如要升級 Kf,請執行下列步驟:

  • 準備本機環境和升級作業。
  • 升級 Kf 的依附元件。
  • 升級 Kf,並確認升級是否成功。

準備升級

  1. 執行 kf version 即可取得目前的 Kf 版本。

    $ kf version
    kf version v2.0.0 linux
    
  2. 您可以前往下載頁面,查看下一個最新版本的 Kf。

    1. 下載 Kf 發布版 YAML 檔案,並儲存為 kf-release.yaml

    2. 下載適用於 OS 的 Kf 版本,並將其命名為 kf-next

    3. 執行 chmod 即可讓 kf-next 可執行:

      chmod +x kf-next
    4. 執行 kf-next version,確認下載的版本與您要安裝的 Kf 版本相符:

      $ kf-next version
      kf version v2.1.0 linux
      
  3. 執行以下命令,備份 config-defaults 設定檔:

    kubectl get configmap config-defaults -o yaml -n kf > config-defaults-backup.yaml
  4. 執行 kubectl diff -f kf-release.yaml,並檢查升級作業對叢集所做的變更。

  5. 編輯 kf-release.yaml,保留您想保留的變更。

    舉例來說,如果您在 Kf 的 v2.0.0 中將 config-defaults 設定為 false,spaceDefaultToV3Stack 的預設值就會是 truev2.1.0

  6. 再次執行 kubectl diff -f kf-release.yaml,確認您所做的任何變更都能產生預期的輸出內容。

升級 Kf 依附元件

  1. 開啟下載頁面,然後找出要升級至的 Kf 版本的依附元件矩陣。

  2. 升級 Tekton:

    1. 開啟 Tekton 發布頁面

    2. 在 Kf 依附元件矩陣中找出 Tekton 的版本。

    3. 執行「Installation one-liner」(安裝一行指令) 標題下方的指令,即可升級 Tekton。

  3. 升級 Cloud Service Mesh:

    1. 開啟 Cloud Service Mesh 升級指南

    2. 在版本下拉式選單中,選取 Kf 依附元件矩陣中列出的 Cloud Service Mesh 版本。

    3. 請按照指南升級 ASM。

升級及驗證 Kf

  1. 使用修改過的版本設定安裝升級版 Kf 元件:

    kubectl apply -f kf-release.yaml
  2. 執行 doctor,確保新安裝的版本運作正常:

    kf-next doctor --retries=12 --delay=5s

    這個指令會執行多次叢集檢查。在新的控制器啟動時,部分嘗試可能會失敗,這是正常現象。

    如果指令失敗並顯示訊息 Error: environment failed checks,請按照 doctor 輸出內容中的指示解決問題,並重試指令,直到成功為止。

  3. 將系統上現有的 kf CLI 替換為 kf-next CLI。

    chmod +x kf-next
    mv kf-next $(which kf)
  4. 請比較 config-defaults-backup.yaml 檔案與 kubectl diff -f config-defaults-backup.yaml,確認叢集仍設定正確。

    舉例來說,如果您保留舊版 Kf 的所有變更,並核准使用與下一個 Kf 版本隨附的新 Buildpack:

    $ kubectl diff -f config-defaults-backup.yaml
    diff -u -N /tmp/LIVE/v1.ConfigMap.kf.config-defaults /tmp/MERGED/v1.ConfigMap.kf.config-defaults
    --- /tmp/LIVE/v1.ConfigMap.kf.config-defaults
    +++ /tmp/MERGED/v1.ConfigMap.kf.config-defaults
    @@ -131,6 +131,8 @@
         enable_route_services: false
       spaceBuildpacksV2: |
    -    - name: new_buildpack
    -      url: https://github.com/cloudfoundry/new-buildpack
         - name: staticfile_buildpack
           url: https://github.com/cloudfoundry/staticfile-buildpack
         - name: java_buildpack
    exit status 1