在升级过程中,您需要确保 Kf 安装使用最新版本的 Kf operator:
- 确认当前的 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 configmaps
通过运行以下命令来备份
config-defaults
configmap:kubectl get configmap config-defaults -o yaml -n kf > config-defaults-backup.yaml
通过运行以下命令来备份
config-secrets
configmap:kubectl get configmap config-secrets -o yaml -n kf > config-secrets-backup.yaml
升级 Kf operator
Kf operator 在版本 2.4.0 中首次发布:
如果您已经在安装 2.4.0 时安装了 Kf operator,则只需在升级到 2.4.1 的过程中升级它即可。
请参阅升级 Kf operator。
如果您是从 2.3.2 升级,则必须安装 2.4.1 版本的 Kf operator 才能升级到 operator 管理的 Kf。
请参阅安装 Kf operator。
升级当前的 Kf operator
Kf operator 会为您执行升级。
应用 operator yaml:
kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.4.1/operator.yaml"
首次安装 Kf operator
执行以下步骤以升级到 operator 管理的 Kf。
应用 operator 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
configmap:kubectl get configmap config-defaults -o yaml -n kf > config-defaults-backup.yaml
通过运行以下命令来备份
config-secrets
configmap:kubectl get configmap config-secrets -o yaml -n kf > config-secrets-backup.yaml
检查当前的 config-defaults 和 config-secrets configmaps,并在
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 配置 operator:
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 Operator。
将以下 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/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
;您可能需要为其他 Shell 修改说明。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 operator,请确认 operator 已安装:
kubectl get deployment -n appdevexperience appdevexperience-operator
如果您未看到以下示例输出中的 operator,请查看首次安装 Kf operator 步骤。
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
如果验证步骤通过,那么您的集群已成功升级!如果您有任何问题,请查看支持页面获取指导。