helm rollback 只能恢复 Kubernetes 清单,无法自动撤销数据库写入、外部资源或不可逆 Job。可靠发布必须在执行升级前定义可回退边界。
发布前生成差异
helm lint ./chart
helm template api ./chart -f values-prod.yaml > rendered.yaml
helm upgrade api ./chart -n production -f values-prod.yaml --dry-run
helm history api -n production
在 CI 中校验渲染结果、策略和废弃 API。Secret 值不应出现在日志和普通 diff 中,可比较引用关系或加密后的配置。
受控执行升级
helm upgrade api ./chart -n production -f values-prod.yaml \
--atomic --wait --timeout 10m
--atomic 在失败时触发回滚,但超时、Hook 和资源删除行为仍要在预演环境验证。升级过程中持续观察 Deployment、Job、事件与业务 SLI。
回滚判断
- 镜像和配置是否兼容旧数据格式
- Hook 是否产生无法撤销的外部副作用
- 上一 revision 是否引用仍存在的镜像和 Secret
- 回滚后是否需要单独执行数据修复
收尾清单
helm rollback api 12 -n production --wait --timeout 10m
helm status api -n production
回滚后验证业务而非只看 release 状态。保留发布 revision、镜像 digest、变更单和验证结果,定期清理过旧历史。