在升級程序中,請確保 Kf 安裝作業使用最新版本的 Kf 運算子:
- 確認目前的 Kf 版本可以升級至 Kf v2.4.1。
- 升級至 Kf v2.4.1。
- 升級依附元件 (如有需要)。
事前準備
你需要:
- 已安裝 Kf 的現有叢集。
- 可存取已安裝
gcloud、kf和kubectl的機器。
準備升級
連線至目標叢集
gcloud container clusters get-credentials CLUSTER_NAME \
--zone CLUSTER_ZONE \
--project CLUSTER_PROJECT_ID確認目前的 Kf CLI 和伺服器版本相符
執行 kf debug,並確認 Kf CLI 和 Kf 伺服器版本相符。
- CLI 版本會列在
Kf Client下方。 - Kf 伺服器版本會列在
kf["app.kubernetes.io/version"]下方。
$ kf debug
...
Version:
Kf Client: v2.3.2
Server version: v1.20.6-gke.1000
kf["app.kubernetes.io/version"]: v2.3.2
...
如果 Kf 用戶端和 Kf 伺服器值「不」相符,但伺服器版本為 v2.3.x,請先安裝 Kf v2.4.1 CLI,再繼續操作。
如果 Kf 伺服器值舊於 v2.3.x,您必須先逐步升級至 Kf v2.3.x,才能繼續操作。
確認 Kf 正常運作再升級
執行 kf doctor 檢查叢集狀態。請先確保所有測試都通過,再繼續操作。
$ kf doctor
...
=== RUN doctor/user
=== RUN doctor/user/ContainerRegistry
--- PASS: doctor/user
--- PASS: doctor/user/ContainerRegistry
...
如果看到任何 FAIL 或 Error: environment failed checks 訊息,請按照 kf doctor 輸出內容中的指引操作,或參閱疑難排解指南解決問題,然後重試指令,直到成功為止。
如果您已自訂 Kf,可以選擇備份 Kf configmap
執行下列指令,備份
config-defaultsconfigmap:kubectl get configmap config-defaults -o yaml -n kf > config-defaults-backup.yaml執行下列指令,備份
config-secretsconfigmap:kubectl get configmap config-secrets -o yaml -n kf > config-secrets-backup.yaml
升級 Kf 運算子
Kf 運算子最初是 2.4.0 版的一部分:
如果您已在安裝 2.4.0 時安裝 Kf 運算子,則只需在升級至 2.4.1 時升級即可。
請參閱「升級 Kf 運算子」。
如果您是從 2.3.2 版升級,請務必安裝 2.4.1 版的 Kf 運算子,才能升級至運算子管理的 Kf。
請參閱「安裝 Kf 運算子」。
升級目前的 Kf 運算子
Kf 運算子會為您執行升級作業。
套用運算子 YAML:
kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.4.1/operator.yaml"
首次安裝 Kf 運算子
請按照下列步驟升級至由運算子管理的 Kf。
套用運算子 YAML:
kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.4.1/operator.yaml"
選擇使用預設值或保留自訂項目:
kfsystem.yaml準備升級 (使用預設值):下載
kfsystem.yaml檔案,填入下列變數,然後在與檔案相同的目錄中執行指令,自動準備升級kfsystem.yaml。export CLUSTER_PROJECT_ID=YOUR_PROJECT_ID export CLUSTER_NAME=YOUR_CLUSTER_NAME export CONTAINER_REGISTRY=YOUR_CLUSTER_COMPUTE_REGION-docker.pkg.dev/${CLUSTER_PROJECT_ID}/${CLUSTER_NAME} kubectl apply -f kfsystem.yaml kubectl patch \ kfsystem kfsystem \ --type='json' \ -p="[{'op': 'replace', 'path': '/spec/kf', 'value': {'enabled': true, 'config': {'spaceContainerRegistry': '${CONTAINER_REGISTRY}', 'secrets':{'workloadidentity':{'googleserviceaccount':'${CLUSTER_NAME}-sa', 'googleprojectid':'${CLUSTER_PROJECT_ID}'}}}}}]"準備
kfsystem.yaml升級,同時保留自訂項目:下載
kfsystem.yaml檔案。執行下列指令,備份
config-defaultsconfigmap:kubectl get configmap config-defaults -o yaml -n kf > config-defaults-backup.yaml執行下列指令,備份
config-secretsconfigmap:kubectl get configmap config-secrets -o yaml -n kf > config-secrets-backup.yaml檢查目前的 config-defaults 和 config-secrets configmap,並在
kfsystem.yaml中找出對應的設定。從
config-secrets和config-defaults複製現有設定。config-secrets和config-defaults中的所有設定都可以在kfsystem.yaml中找到。googleProjectId欄位現在為必填欄位。wi.googleServiceAccount欄位是config-secrets中的完整服務帳戶,但如果是kfsystem,則必須移除後置字元。舉例來說,${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com在kfsystem.yaml中會變成${CLUSTER_NAME}-sa。複製設定後,請將
kfsystem中的enabled欄位變更為true。儲存對
kfsystem.yaml所做的變更。設定 Kf 的運算子:
kubectl apply -f kfsystem.yaml
升級 Kf 依附元件
升級 Tekton:
kubectl apply -f "https://storage.googleapis.com/tekton-releases/pipeline/previous/v0.23.0/release.yaml"
升級 Cloud Service Mesh:
- 請按照 Cloud Service Mesh 1.9 升級指南中的步驟操作。
升級 Config Connector。
下載所需的 Config Connector Operator tar 檔案。
解壓縮 tar 檔案。
tar zxvf release-bundle.tar.gz在叢集上安裝 Config Connector 運算子。
kubectl apply -f operator-system/configconnector-operator.yaml如果是首次安裝 Config Connector,請設定 Config Connector 運算子。
將下列 YAML 複製到名為
完整解析的服務帳戶。configconnector.yaml的檔案:# configconnector.yaml apiVersion: core.cnrm.cloud.google.com/v1beta1 kind: ConfigConnector metadata: # the name is restricted to ensure that there is only one # ConfigConnector resource installed in your cluster name: configconnector.core.cnrm.cloud.google.com spec: mode: cluster googleServiceAccount: "KF_SERVICE_ACCOUNT_NAME" # Replace with the full service account resolved from ${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com
將設定套用到叢集。
kubectl apply -f configconnector.yaml
請先確認 Config Connector 已完整安裝,再繼續操作。
Config Connector 會在名為
cnrm-system的命名空間中執行所有元件。執行下列指令,確認 Pod 已準備就緒:kubectl wait -n cnrm-system --for=condition=Ready pod --all
如果 Config Connector 安裝正確,輸出內容會類似以下內容:
pod/cnrm-controller-manager-0 condition met
如果是首次安裝 Config Connector,請設定 Workload Identity。
kubectl annotate serviceaccount \ --namespace cnrm-system \ --overwrite \ cnrm-controller-manager \ iam.gke.io/gcp-service-account=${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com
升級至 Kf v2.4.1 CLI
安裝 CLI:
Linux
這項指令會為系統上的所有使用者安裝 Kf CLI。按照「Cloud Shell」分頁中的操作說明,為自己安裝。
gcloud storage cp gs://kf-releases/v2.4.1/kf-linux /tmp/kfchmod a+x /tmp/kfsudo mv /tmp/kf /usr/local/bin/kfMac
這項指令會為系統上的所有使用者安裝
kf。gcloud storage cp gs://kf-releases/v2.4.1/kf-darwin /tmp/kfchmod a+x /tmp/kfsudo mv /tmp/kf /usr/local/bin/kfCloud Shell
如果您使用
bash,這個指令會在 Cloud Shell 執行個體上安裝kf。如果是其他殼層,可能需要修改指令。mkdir -p ~/bingcloud storage cp gs://kf-releases/v2.4.1/kf-linux ~/bin/kfchmod a+x ~/bin/kfecho "export PATH=$HOME/bin:$PATH" >> ~/.bashrcsource ~/.bashrcWindows
這會將
kf下載到目前的目錄。如要從目前目錄以外的任何位置呼叫,請將其新增至路徑。gcloud storage cp gs://kf-releases/v2.4.1/kf-windows.exe kf.exe確認 Kf CLI 和 Kf 伺服器版本相符:
- CLI 版本會列在
Kf Client下方。 - Kf 伺服器版本會列在
kf["app.kubernetes.io/version"]下方。
$ kf debug ... Version: Kf Client: v2.4.1 Server version: v1.20.6-gke.1000 kf["app.kubernetes.io/version"]: v2.4.1 ...- CLI 版本會列在
確認 Kf 升級成功
如果是首次安裝 Kf 運算子,請確認運算子已安裝:
kubectl get deployment -n appdevexperience appdevexperience-operator如果沒有看到如下方範例輸出內容的運算子,請查看「首次安裝 Kf 運算子」步驟。
NAME READY UP-TO-DATE AVAILABLE AGE appdevexperience-operator 1/1 1 1 1h執行
doctor,確保新安裝的版本運作正常:kf doctor --retries=20這項指令會多次執行叢集檢查。新的控制器啟動時,有幾次嘗試失敗是正常現象。
如果指令失敗並顯示「
Error: environment failed checks」訊息,請按照doctor輸出內容中的指引解決問題,然後重試指令,直到成功為止。如果您已自訂
config-defaults或config-secrets,請確認這些項目已轉移:比較
config-defaults-backup.yaml檔案與kubectl diff -f config-defaults-backup.yaml,確保叢集設定正確無誤。舉例來說,如果您保留舊版 Kf 的所有變更,並核准使用與下一個 Kf 版本一併發布的新建構套件:
$ 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
如果驗證步驟通過,叢集就已成功升級! 如有任何問題,請參閱支援頁面瞭解相關指引。