在Helm中,Release与Revision的区别是什么?
Helm中Release与Revision的核心区别
什么是Release?
- Release是Helm对部署到Kubernetes集群的Chart实例的唯一命名标识。每次用
helm install部署Chart时,都会生成一个新的Release,它包含了该Chart对应的所有Kubernetes资源(比如Deployment、Service、ConfigMap等)以及你指定的自定义配置值。 - 举个例子:如果你用
helm install my-redis bitnami/redis部署Redis,my-redis就是一个独立的Release,集群里所有和这个Redis相关的资源都归属于它。
什么是Revision?
- Revision是某个Release的迭代版本号,用来记录该Release的每一次变更。当你对已有Release执行
helm upgrade(升级配置或Chart版本)、helm rollback(回滚到旧版本),甚至是修复Release的失败状态时,Helm都会为这个Release生成一个新的Revision,版本号从1开始递增。 - 比如上面的
my-redisRelease,第一次部署是Revision 1,第一次升级后变成Revision 2,回滚到Revision 1后,会生成新的Revision 3(而不是覆盖旧的Revision记录)。
二者的核心差异
- 本质定位不同:
- Release是一个完整的部署实例,代表一组关联的Kubernetes资源集合,是操作的核心对象;
- Revision是Release的版本历史快照,仅用来追踪该Release的变更过程,无法脱离Release独立存在。
- 生命周期关联:一个Release可以拥有多个Revision,每个Revision都绑定到特定的Release;反过来,一个Revision只属于一个Release。
- 触发动作不同:
helm install命令直接创建Release;helm upgrade/helm rollback/helm repair等命令会为已有Release生成新的Revision。
- 查询方式不同:
- 用
helm list可以查看集群中所有Release的当前状态; - 用
helm history <release-name>可以查看指定Release的所有Revision历史,包括每个版本的变更时间、操作类型等。
- 用
实际场景示例
- 首次部署:
helm install my-nginx bitnami/nginx→ 创建Releasemy-nginx,对应Revision 1。 - 升级配置:
helm upgrade my-nginx bitnami/nginx --set service.type=NodePort→ Releasemy-nginx的Revision更新为2,集群资源应用新的配置。 - 回滚操作:
helm rollback my-nginx 1→ Releasemy-nginx生成Revision 3,集群资源回到Revision 1的状态,同时保留之前的所有Revision记录。
内容的提问来源于stack exchange,提问作者David Wesby
相关产品推荐
相关产品推荐

