3. Helm 基础回顾:核心概念与应用部署作用
在深入平台门户集成与故障域演练编排之前,有必要快速回顾 Helm 的核心概念。Helm 是 Kubernetes 生态中最流行的包管理工具,它将复杂的应用资源定义抽象为可配置、可版本化、可复用的 Chart,极大简化了云原生应用的部署与生命周期管理。
3.1 四大核心概念
| 概念 | 定义 | 类比(类比操作系统) | 关键特征 |
|---|---|---|---|
| Chart | 一个打包了 Kubernetes 资源清单(YAML)的模板集合,包含应用定义、依赖和默认配置。 | 软件安装包(.deb / .rpm) | 可版本化、可依赖、可签名;通过 helm package 生成 .tgz 归档。 |
| Release | Chart 在目标 Kubernetes 集群上的一次具体部署实例。同一个 Chart 可以部署多次,每次生成一个独立的 Release。 | 进程实例(运行中的程序) | 每个 Release 有唯一名称、版本号、部署状态(deployed/failed/pending)。 |
| Repository | Chart 的远程存储仓库,类似容器镜像仓库。用户可以从 Repository 中搜索、下载、安装 Chart。 | 软件源(APT / YUM 源) | 支持 HTTP/HTTPS 协议;通过 helm repo add 添加;官方仓库为 https://charts.helm.sh/stable。 |
| Values | Chart 的可配置参数集合,用于覆盖 Chart 内部的默认值。Values 可以在安装或升级时通过文件或命令行注入。 | 配置文件(.conf / .ini) | 支持 YAML 格式;通过 --values 或 --set 传递;支持全局值与局部值覆盖。 |
实践要点: 在平台门户集成场景中,Values 是连接门户配置界面与 Helm 部署引擎的关键桥梁。门户前端收集的用户配置(如副本数、镜像标签、故障域策略)最终都会映射为 Values 注入到 Chart 中。
3.2 Helm 在应用部署中的作用
Helm 不仅仅是一个“安装工具”,它在云原生应用部署全生命周期中承担了以下核心职责:
- 标准化打包: 将 Deployment、Service、ConfigMap、Ingress 等数十个 Kubernetes 资源统一封装为一个 Chart,消除手动编写 YAML 的碎片化问题。
- 参数化配置: 通过 Values 和模板引擎(Go Template),实现“一次编写 Chart,多环境差异化部署”(开发/测试/生产)。
- 版本化管理: 每次
helm upgrade都会生成新的 Release 版本,支持一键回滚(helm rollback)到任意历史版本。 - 依赖管理: Chart 可以声明依赖其他子 Chart(如依赖 MySQL、Redis),Helm 会自动解析并安装所有依赖。
- 生命周期钩子: 支持 pre-install、post-install、pre-delete、post-delete 等钩子,方便在部署前后执行自定义任务(如数据库迁移、健康检查注册)。
故障域关联: 在后续的故障域隔离演练中,Helm 的 Values 注入 和 生命周期钩子 将被用于动态调整 Pod 的拓扑分布约束(topologySpreadConstraints)以及演练开始/结束时的资源清理逻辑。
3.3 Helm 核心工作流(内联 SVG)
下图展示了从 Chart 打包到 Release 部署的完整流程,以及 Repository、Values 在其中扮演的角色:
3.4 常用 Helm 命令速查
| 命令 | 用途 | 典型参数示例 |
|---|---|---|
helm repo add |
添加 Chart 仓库 | helm repo add myrepo https://charts.example.com |
helm search repo |
搜索仓库中的 Chart | helm search repo myrepo/nginx |
helm install |
安装 Chart 生成 Release | helm install my-release myrepo/my-chart --values prod-values.yaml |
helm upgrade |
升级 Release 到新版本 | helm upgrade my-release myrepo/my-chart --set replicaCount=5 |
helm rollback |
回滚 Release 到历史版本 | helm rollback my-release 2 |
helm list |
列出所有 Release | helm list -n my-namespace |
helm get values |
查看 Release 当前使用的 Values | helm get values my-release |
注意: 在平台门户集成场景中,
helm get values 命令可用于故障域演练后的审计——快速确认演练期间注入的故障域参数(如 topologyKey、maxSkew)是否已被正确清理或恢复。
3.5 本章小结
Helm 的四大核心概念——Chart、Release、Repository、Values——构成了云原生应用部署的标准化底座。在后续的故障域隔离演练编排中,我们将利用 Helm 的 Values 动态注入能力来调整 Pod 拓扑约束,利用 Release 版本管理来记录演练前后的配置变更,并借助生命周期钩子来触发演练开始/结束的自动化动作。理解这些基础概念,是掌握平台门户集成 Helm 故障域演练的前提。