技术
Helm
Kubernetes 的包管理器
Helm 是 Kubernetes 的包管理器。它将一组 Kubernetes 清单(通常带有可配置的参数化 values)打包成一个带版本的包,称为 chart,这样安装、升级或回滚一个复杂应用只需一条命令,而不是一堆单独的 kubectl apply。
工作原理
chart 是一个目录(或打包的归档文件),包含模板化的 YAML 清单以及一个存放默认值的 values.yaml 文件。运行 helm install 会用提供的 values 渲染这些模板,并将结果作为被跟踪的 “release” 应用到集群。Helm 为每个 release 保留一份修订历史,这正是 helm rollback 得以实现的原因。
核心概念
- Chart —— 一个打包的、带版本的 Kubernetes 清单及其默认配置的集合。
- Release —— chart 在集群中的一次具体部署实例,由名称标识。
- Values —— 传入 chart 模板的配置,覆盖其默认值。
- Repository(仓库) —— 一个对 chart 建立索引以供发现和安装的 HTTP(S) 位置,类似包注册表。
为什么团队选择 Helm
- 可复用的打包。 拥有几十个资源的复杂应用,只需一条命令和一组参数即可安装。
- 内置升级与回滚。 每个 release 都有版本,所以前进或后退都只是一条命令。
- 庞大的现有生态。 大多数流行的开源基础设施 —— ingress 控制器、数据库、可观测性栈 —— 都提供官方的 Helm chart。
- 无需新语言的模板化。 chart 使用 Go 模板,所以除了 YAML 和 Go 模板语法之外,没有专有的 DSL 需要学习。
快速开始
安装 helm CLI,添加一个 chart 仓库,然后用 release 名称和你的环境所需的 value 覆盖运行 helm install。下面的指南涵盖安装 chart、编写你自己的 chart,以及管理升级。