补充说明
helmfile 是一个声明式工具,用 helmfile.yaml 文件描述环境中要部署哪些 Helm Chart、使用哪个版本、values 从哪来,然后一键执行 helmfile apply 完成同步。它解决多环境、多 Chart 部署时重复执行 helm install/upgrade 的问题,是目前 Kubernetes 社区常用的”Helm 之上的一层”。
helmfile 支持模板化(Go template + sprig)、多环境选择(通过 environments 和 values 文件)、依赖顺序(dependsOn),并可对接外部 values 来源(如 vault)。它基于 Helm 3,不改变 Helm 本身的行为,只是把多个 Chart 的部署编排成一条命令。
典型场景:团队统一管理几十个 Chart、多环境(dev/staging/prod)使用不同 values、CI/CD 中幂等部署。注意:helmfile apply 是幂等的,但会直接修改集群状态;删除 Chart 需用 helmfile destroy(会删除所有被管理的 release)。命令执行失败时可用 helmfile diff 先查看将要发生的变化。
语法
helmfile [命令] [选项]
选项
apply # 应用 helmfile.yaml 中的全部 release(幂等)
sync # 强制同步 release(会升级已存在 release)
diff # 显示与集群当前状态的差异
destroy # 删除所有被管理的 release
status # 查看 release 状态
list # 列出被管理的 release
template # 渲染出最终的 YAML(不部署)
实例
# 渲染并预览将要应用的清单
helmfile template
# 查看与集群状态的差异
helmfile diff
# 应用所有 release(幂等)
helmfile apply
# 指定环境并应用(读取 environments.prod 的 values)
helmfile -e prod apply
# 只操作某个 release
helmfile apply --selector name=prometheus
# 列出被管理的 release
helmfile list
# 删除所有被管理的 release
helmfile destroy