Helm 升级与回滚依赖 release 的 revision 机制:helm upgrade 创建新 revision 实现无中断更新,helm rollback 基于历史 revision 快照回退并生成新 revision;helm history 查看版本记录,helm get all --revision 查看指定版本详情,Secret 存储 values 快照。

在 Linux 中使用 Helm 升级应用和回滚历史版本,核心是通过 helm upgrade 和 helm rollback 命令完成,依赖 Helm 的版本管理机制(即 release 的 revision 记录)。操作前需确保 Helm 已初始化(v3 不再需要 tiller),且目标 chart 可用、values 配置正确。
升级应用(helm upgrade)
升级会创建新 revision,保留旧版本配置与状态,不中断服务(取决于 chart 实现的滚动更新逻辑)。
- 基本语法:
helm upgrade [RELEASE_NAME] [CHART_PATH_OR_REPO] [OPTIONS] - 常用选项:
-
--reuse-values:复用上次安装/升级时的 values,仅覆盖本次传入的值 -
-f values.yaml:指定自定义 values 文件(可多次使用叠加) -
--set key=value:直接设置单个参数(如--set replicaCount=3) -
--version 1.2.0:指定 chart 版本(适用于 repo 中多版本场景) -
--wait --timeout 5m:等待所有资源就绪并设超时,避免误判升级成功
-
- 示例:
helm upgrade myapp ./mychart -f prod-values.yaml --set image.tag=v1.5 --reuse-values --wait --timeout 300s
查看升级历史与当前状态
每次 upgrade 或 install 都会生成一个 revision,用于追踪变更。
- 列出 release 所有历史版本:
helm history myapp
输出含 REVISION、UPDATED、STATUS、CHART、APP VERSION、DESCRIPTION 等字段 - 查看某次 revision 详情(如第3版):
helm get all myapp --revision 3 - 检查当前 release 状态:
helm status myapp
回滚到指定历史版本(helm rollback)
回滚本质是用旧 revision 的 chart + values 重新部署,生成新 revision(回滚后 revision 号递增)。
- 回滚到上一版本:
helm rollback myapp - 回滚到指定 revision(如 revision 2):
helm rollback myapp 2 - 常用选项:
-
--wait --timeout 300s:建议加上,确保回滚后资源稳定 -
--cleanup-on-fail:若回滚失败,自动清理部分已创建资源(谨慎使用)
-
- 注意:回滚不会自动还原 values 文件内容,它读取的是该 revision 当时保存的 values 快照(Helm v3 存于 Secret 中)
清理旧 revision(可选)
Helm 默认保留最多 10 次 revision,可通过 helm upgrade 的 --history-max 参数调整,或手动删除无用 revision:
- 删除某个旧 revision(如 revision 1):
kubectl delete secret -n default sh.helm.release.v1.myapp.v1
(v3 中每个 revision 对应一个名为sh.helm.release.v1.[release].[vX]的 Secret) - 批量清理(慎用):
kubectl get secret -n default | grep 'sh\.helm\.release\.v1\.myapp\.v' | awk '{print $1}' | xargs -I{} kubectl delete secret -n default {}


















