ONES Helm 升级说明(内置组件)
本文介绍如何升级通过 Helm 安装、使用 ONES 内置 MySQL、Kafka、Redis、TiKV 和 ClickHouse 的 ONES 集群。
本文适用于 Helm 配置文件 values.yaml 使用以下资源管理配置的场景:
enableNamespaceAutoCreate: false
enableCRDAutoCreate: true
enableRBACAutoCreate: true
enablePVCAutoReconcile: true
enableLocalStorageAutoCreate: false
本升级方式适用于 v7.25.0 或更高版本。升级前,必须确认当前版本到目标版本的升级路径受
ONES 支持。非 Helm 部署的环境不要使用本文操作。
内置组件部署方式由 Helm 自动管理 CRD、Namespace Scope RBAC 和 PVC。升级时无需手动更新 CRD、RBAC,也无需生成数据库升级包;升级前只需生成新增 PVC 清单进行容量评审。
准备升级参数
先确认当前环境 的 ONES 版本和本次升级的目标版本,再在终端设置以下参数。本文后续命令会 直接使用这些参数,请在同一终端会话中执行。
执行前必须修改版本号:
CURRENT_ONES_VERSION填写当前环境实际运行的版本,TARGET_ONES_VERSION填写本次计划升级到的版本。以下v7.25.0和v7.26.0仅为示例, 不要直接复制示例版本执行升级。
# 必须改为当前环境实际运行的 ONES 版本
CURRENT_ONES_VERSION="v7.25.0"
# 必须改为本次计划升级到的 ONES 版本
TARGET_ONES_VERSION="v7.26.0"
OS_ARCH="amd64"
NAMESPACE="ones"
RELEASE_NAME="ones"
REGISTRY="registry.example.com"
REGISTRY_USER="<私有镜像仓用户名>"
REGISTRY_PASSWORD="<私有镜像仓密码或 Token>"
REGISTRY_BASE_PATH="/ones/"
mkdir -p ~/ones
cd ~/ones
设置完成后,核对集群记录的当前版本与升级参数:
kubectl -n "${NAMESPACE}" get configmap ones-current-version \
-o jsonpath='{.data.onesVersion}{"\n"}'
printf 'CURRENT_ONES_VERSION=%s\nTARGET_ONES_VERSION=%s\n' \
"${CURRENT_ONES_VERSION}" "${TARGET_ONES_VERSION}"
集群记录的当前版本必须与 CURRENT_ONES_VERSION 完全一致;确认无误后再继续。
OS_ARCH支持amd64和arm64。REGISTRY_BASE_PATH必须与当前环境ones-secret-config中的dockerRegistryBasepathForOnesImage保持一致。- 私有镜像仓不需要认证时,将
REGISTRY_USER和REGISTRY_PASSWORD设置为空字符串。 - 私有镜像仓未启用 TLS 时,再执行
export REGISTRY_INSECURE=true。 - 当前环境使用的
values.yaml应保存在~/ones/values.yaml。部分操作会进入生成的制品目录, 完成后应返回~/ones再继续。
升级流程
- 检查目标版本是否新增 PVC。
- 将目标版本的 ONES 差量镜像导入私有镜像仓。
- 检查是否满足升级放行标准。
- 准备目标 ONES 版本。
- 执行 Helm 升级。
- 观察 Bootstrap 和数据库迁移。
- 验证升级结果。
第一步:检查目标版本是否新增 PVC
生成当前版本到目标版本的新增 PVC 清单:
cd ~/ones
curl -sfL \
"https://packages.ones.cn/release/${TARGET_ONES_VERSION}/kubernetes/generate-new-pvcs.sh" | \
SRC_ONES_VERSION="${CURRENT_ONES_VERSION}" \
bash -
查看生成的清单:
cat "${CURRENT_ONES_VERSION}-to-${TARGET_ONES_VERSION}-new-pvcs.yaml"
重点查看 NEW_PVC_COUNT。值为 0 表示目标版本没有新增 PVC;如果存在新增 PVC,请确认对应
StorageClass 的 CSI 存储供应方有充足的后端存储余量,并提前完成 PVC 容量预算和配额调整,
避免升级后部分 PVC 因存储不足而无法成功制备和绑定。
注意: 本步骤只生成和评审清单,不要执行
kubectl apply。保持enablePVCAutoReconcile: true,Helm 升级时会自动创建和管理新增 PVC。
第二步:导入目标版本 ONES 差量镜像
默认使用 ONES 提供的工具包导入镜像。如需改用 Docker 等方式,请参见附录中的 其他 ONES 镜像导入方式。本流程不导入目标版本的内置 MySQL 镜像。
2.1 制作 ONES 差量离线包
在联网主机执行以下命令,制作当前版本到目标版本的差量离线包:
curl -fL \
"https://packages.ones.cn/release/${TARGET_ONES_VERSION}/kubernetes/images/upgrade-ones-images-${OS_ARCH}.sh" | \
SRC_ONES_VERSION="${CURRENT_ONES_VERSION}" \
MODE="offline-package" \
bash -
脚本会在当前目录生成:
${CURRENT_ONES_VERSION}-to-${TARGET_ONES_VERSION}-new-images-linux-${OS_ARCH}.tar
2.2 导入 ONES 差量离线包
将离线包复制到目标环境,解压并进入目录:
tar -xf "${CURRENT_ONES_VERSION}-to-${TARGET_ONES_VERSION}-new-images-linux-${OS_ARCH}.tar"
cd "${CURRENT_ONES_VERSION}-to-${TARGET_ONES_VERSION}-new-images-linux-${OS_ARCH}"
运行包内的导入脚本:
REGISTRY="${REGISTRY}" \
REGISTRY_BASE_PATH="${REGISTRY_BASE_PATH}" \
REGISTRY_USER="${REGISTRY_USER}" \
REGISTRY_PASSWORD="${REGISTRY_PASSWORD}" \
bash import-images.sh
镜像导入完成后,返回 ONES 操作目录:
cd ~/ones
镜像导入完成
执行到这里,升级所需的 ONES 差量镜像已经导入私有镜像仓。现在可以继续第三步。