包含子Chart的Helm Release执行rollback时能否仅回滚指定子Chart
Helm 子Chart单独回滚问题解答
核心结论
原生 Helm 不支持 限制 helm rollback 操作仅作用于单个子Chart。
底层逻辑说明
Helm 的 Release 是将父Chart、所有子Chart、以及所有自定义配置合并后的全量资源作为一个整体进行版本管理:
- 每次执行
helm install或helm upgrade,都会生成一份对应全量资源状态的 Release 修订版本 helm rollback的本质是将整个 Release 的所有资源恢复到指定修订版本的快照状态,不存在子Chart维度的独立版本记录,因此无法单独挑出子Chart执行回滚。
可落地的替代方案
如果要实现仅回滚子Chart B的改动、同时保留Chart A的新改动,可按以下步骤操作:
- 第一步:导出当前Release的生效配置:
helm get values test -o yaml > current_values.yaml - 第二步:手动调整配置:
- 如果是配置参数改动导致的子Chart B升级,直接修改
current_values.yaml中子Chart B对应的配置项,恢复到改动前的取值即可 - 如果是子Chart B本身的版本升级导致的变动,修改父Chart A的
Chart.yaml文件中依赖的子Chart B的版本号,回退到升级前的版本
- 如果是配置参数改动导致的子Chart B升级,直接修改
- 第三步:执行升级命令应用修改:
helm upgrade test /path/to/A -f current_values.yaml
该操作仅会变更子Chart B对应的资源,父Chart A的所有新改动都会保留,等效实现了子Chart的单独回滚效果。
内容的提问来源于stack exchange,提问作者Nish
相关产品推荐
相关产品推荐

