在升級程序中,請確認 Kf 安裝作業使用的是最新版本的 Kf 運算子:
- 確認目前的 Kf 版本可以升級至 Kf 2.4.1 版。
- 升級至 Kf 2.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 設定地圖 (如果您已自訂)
執行以下命令,備份
config-defaults
設定檔:kubectl get configmap config-defaults -o yaml -n kf > config-defaults-backup.yaml
執行以下命令,備份
config-secrets
設定檔: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-defaults
設定檔:kubectl get configmap config-defaults -o yaml -n kf > config-defaults-backup.yaml
執行以下命令,備份
config-secrets
設定檔:kubectl get configmap config-secrets -o yaml -n kf > config-secrets-backup.yaml
檢查目前的 config-defaults 和 config-secrets 設定檔,並在
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
會變成${CLUSTER_NAME}-sa
。kfsystem.yaml
設定複製完成後,請將
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 Operator。
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 2.4.1 版 CLI
安裝 CLI:
Linux
這項指令會為系統上的所有使用者安裝 Kf CLI。請按照 Cloud Shell 分頁中的操作說明,為自己安裝這個擴充功能。
gcloud storage cp gs://kf-releases/v2.4.1/kf-linux /tmp/kf
chmod a+x /tmp/kf
sudo mv /tmp/kf /usr/local/bin/kf
Mac
這項指令會為系統上的所有使用者安裝
kf
。gcloud storage cp gs://kf-releases/v2.4.1/kf-darwin /tmp/kf
chmod a+x /tmp/kf
sudo mv /tmp/kf /usr/local/bin/kf
Cloud Shell
如果您使用
bash
,這個指令會在 Cloud Shell 執行個體上安裝kf
。如果您使用其他殼層,可能需要修改指令。mkdir -p ~/bin
gcloud storage cp gs://kf-releases/v2.4.1/kf-linux ~/bin/kf
chmod a+x ~/bin/kf
echo "export PATH=$HOME/bin:$PATH" >> ~/.bashrc
source ~/.bashrc
Windows
這會將
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 版本隨附的新 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
如果驗證步驟通過,表示叢集已成功升級!如有任何問題,請參閱支援頁面瞭解如何處理。