1.1 Helm 概述

Helm 是 Kubernetes 生态中事实上的包管理标准,类比操作系统中的 apt/yum 或编程语言中的 npm/pip。它通过“Chart”这一标准化打包格式,将 Kubernetes 资源(Deployment、Service、ConfigMap 等)组合、参数化并统一管理,让应用交付从“手动拼 YAML”升级为“一键安装/升级/回滚”。

Helm 的核心价值

  • 标准化打包:Chart 定义了一套目录结构和模板语法,团队之间可以复用、共享、版本化应用定义。
  • 参数化与环境隔离:通过 values.yaml 和模板引擎,同一套 Chart 可生成 dev/staging/prod 不同配置,无需复制 YAML。
  • 声明式生命周期:Helm 管理 Release(一次部署实例),支持 install、upgrade、rollback、uninstall 等原子操作。
  • 依赖与仓库管理:Chart 可以依赖其他 Chart,通过 Helm Repo 分发,类似 Docker Hub 之于容器镜像。
  • 降低运维心智负担:团队无需记忆每个微服务的 YAML 细节,只需维护 Chart 和 values 即可。

Helm 与 Kubernetes 的关系

维度 Kubernetes Helm
定位 容器编排平台 K8s 应用包管理器
操作对象 Pod、Service、Deployment 等原生资源 Chart(打包后的 K8s 资源模板)
部署方式 kubectl apply -f 逐个 YAML helm install / upgrade 一次操作
版本管理 依赖外部 Git 或 CI 记录 内置 Release 版本追踪与回滚
参数化 需手动 sed 或 Kustomize 模板引擎 + values.yaml 原生支持
一句话总结:Kubernetes 提供了基础设施抽象层,Helm 在此基础上提供了应用交付抽象层。两者配合,让“声明式基础设施”真正延伸到“声明式应用交付”。

Helm 版本演进:v2 vs v3

Helm v2 于 2016 年发布,引入了 Chart 和 Release 概念,但架构上依赖集群内的 Tiller 服务端组件。Tiller 拥有集群级权限,负责接收客户端请求并渲染安装资源。这一设计带来了安全与运维上的痛点。

Helm v3 于 2019 年发布,彻底移除了 Tiller,客户端直接通过 kubeconfig 与 Kubernetes API Server 交互。v3 还引入了 Release 存储在集群内(Secret)、Chart 库支持 OCI 镜像、JSON Schema 校验等关键改进。

对比项 Helm v2 Helm v3
服务端组件 Tiller(需部署在集群内) 无(纯客户端)
权限模型 Tiller 拥有集群级 RBAC 继承 kubeconfig 用户权限
Release 存储 ConfigMap(默认命名空间) Secret(可配置为 ConfigMap)
Chart 分发 仅 HTTP/HTTPS Repo Repo + OCI 镜像仓库
命名空间隔离 Release 名称全局唯一 Release 名称按命名空间隔离
JSON Schema 不支持 支持 values 校验
Library Chart 不支持 支持(仅模板,无资源)
迁移提醒:Helm v2 已于 2020 年 11 月停止安全更新,所有仍在生产环境使用 v2 的团队应尽快迁移至 v3。迁移工具 helm-2to3 可帮助将 v2 Release 转换为 v3 格式。
Helm v2 vs v3 架构对比 Helm v2 Helm Client Tiller K8s API ConfigMap Helm v3 Helm Client kubeconfig K8s API Secret Tiller 拥有集群级权限 安全风险高,运维复杂 无 Tiller,权限继承 kubeconfig Release 存储在 Secret,更安全
学习建议:本课程所有实战操作均基于 Helm v3。如果你所在团队仍在使用 v2,建议先使用 helm 2to3 工具完成迁移,再跟随课程进行后续学习。