helm 是 kubernetes 标准化应用交付工具,通过结构化 chart(含 chart.yaml、values.yaml、templates/ 等)实现参数化部署、多环境分层配置(-f values-dev.yaml/values-prod.yaml)、release 版本追踪与回滚、ci/cd 中不可变制品管理。

Helm 是 Kubernetes 生态中事实标准的应用打包与部署工具,它把零散的 YAML 资源(Deployment、Service、Ingress、ConfigMap 等)封装成可复用、可版本化、可参数化的 Chart,让容器化应用的交付从“手写配置 → 逐条 apply”升级为“一次定义 → 多环境部署 → 自动回滚”。这不是简单替换命令行,而是构建标准化交付单元的核心能力。
Chart 是 Helm 的交付单元,不是 ZIP 压缩包
一个 Chart 是有严格结构的目录,不是随便打包的 tar.gz。典型结构包括:
- Chart.yaml:定义名称、版本(遵循 SemVer)、描述、依赖等元信息
- values.yaml:提供默认配置项,如 replicaCount、image.tag、service.port
-
templates/:存放 Go 模板文件(deployment.yaml、service.yaml 等),支持
{{ .Values.replicaCount }}这类动态渲染 - _helpers.tpl:集中定义命名规则、条件判断等复用逻辑,避免模板重复
- charts/(可选):嵌入子 Chart,实现模块化依赖,比如主 Chart 依赖 mysql 子 Chart
执行 helm create myapp 可生成骨架;真正可用的 Chart 需要验证:helm lint ./myapp 检查语法与最佳实践,helm template ./myapp 查看渲染出的实际 YAML 是否符合预期。
多环境部署靠 values 分层,不是改模板
开发、测试、生产环境差异不应靠复制粘贴模板来解决,而应通过独立 values 文件控制:
- 保留
values.yaml作为基准配置 - 新建
values-dev.yaml(启用调试日志、低资源限制)、values-prod.yaml(开启 TLS、配置 HPA、关闭 debug) - 部署时指定:
helm install myapp ./myapp -f values-prod.yaml - Helm 支持多 values 文件叠加:
-f common.yaml -f prod.yaml,后者覆盖前者同名字段
所有环境共用同一套 templates,配置差异全部外置,杜绝“改了生产配置却忘了同步开发”的人为风险。
针对 Kubernetes 仪表板和 Web UI 的浏览器自动化。适用于与 Kubernetes Dashboard、Grafana、ArgoCD UI 或其他 Web 界面交互。需要设置 MCP_BROWSER_ENABLED=true。
发布即 Release,版本与状态由 Helm 全权跟踪
每次 helm install 或 helm upgrade 都会生成一个唯一的 Release 实例,它自带版本号(revision)、部署时间、所用 values 快照和 Chart 版本:
-
helm list -n myns查看当前命名空间所有 Release -
helm history myapp -n myns查看该 Release 的每次变更记录 -
helm rollback myapp 1 -n myns一键回退到任意历史 revision -
helm get values myapp -n myns查看本次部署实际生效的完整配置
这比手动保存 YAML 历史、靠 kubectl diff 对比更可靠——Release 是 Kubernetes 集群内被 Helm 认可的“权威状态”。
集成 CI/CD 时,Chart 即制品,不建议在流水线里动态生成 YAML
自动化流程应围绕 Chart 展开,而非临时拼接 YAML:
- 代码提交后,CI 触发
helm package ./myapp --version $CI_COMMIT_TAG打包为myapp-1.2.0.tgz - 将 Chart 包推送到私有仓库(如 Harbor OCI Registry 或 Helm Repo HTTP 服务)
- CD 阶段执行
helm upgrade --install myapp oci://myharbor/myapp --version 1.2.0 -f values-prod.yaml - 禁止在 pipeline 中运行
kubectl apply -f —— 这绕过了 Release 管理,丢失版本追踪与回滚能力
Chart 包是不可变制品,和 Docker 镜像一样,应具备唯一哈希、签名验证与生命周期管理。










