4. Helm 核心概念:Chart、Release、Repository、Tiller(v2)/ Helm v3 无 Tiller 架构
Helm 是 Kubernetes 生态中最流行的包管理工具,其核心设计围绕四个关键概念展开:Chart、Release、Repository 以及历史版本中的 Tiller(v2)与 Helm v3 的无 Tiller 架构。理解这些概念是掌握 Helm 自动化部署与回滚机制的基础。
4.1 四大核心概念详解
| 概念 | 定义 | 类比(Linux 包管理) | 关键特征 |
|---|---|---|---|
| Chart | 一个预定义的 Kubernetes 资源模板集合,包含部署应用所需的所有 YAML 文件、依赖关系和默认值。 | 类似于 .deb 或 .rpm 包 |
版本化、可复用、可配置(通过 values.yaml) |
| Release | Chart 在 Kubernetes 集群中的一个运行实例。同一个 Chart 可以部署多次,每次生成一个独立的 Release。 | 类似于安装了一个软件包并运行其进程 | 每个 Release 有唯一名称、版本号、状态(deployed/failed/pending) |
| Repository | 用于存储和共享 Chart 包的 HTTP/HTTPS 服务器。用户可以从仓库中搜索、下载或发布 Chart。 | 类似于 apt 或 yum 软件源 |
支持索引文件(index.yaml)、版本管理、认证 |
| Tiller(v2)/ 无 Tiller(v3) | Helm v2 的服务端组件,负责接收客户端请求并在集群内执行安装/升级/回滚操作。Helm v3 移除了 Tiller,直接通过 kubeconfig 与 API Server 交互。 | v2 类似 C/S 架构;v3 类似直接调用 API | v3 安全性更高、权限模型更简洁、无集群内服务端 |
💡 核心记忆点:Chart 是模板,Release 是实例,Repository 是仓库,Tiller 是桥梁(v2)或已移除(v3)。
4.2 Helm v2 与 v3 架构对比
Helm v2 与 v3 最本质的区别在于 Tiller 组件的存废。这一变化深刻影响了安全性、权限模型和部署流程。
4.2.1 Helm v2:客户端 + 服务端(Tiller)架构
在 Helm v2 中,helm 客户端通过 gRPC 与集群内的 tiller-deploy Pod 通信。Tiller 拥有集群的 Cluster-admin 权限,负责渲染 Chart 并调用 Kubernetes API 创建资源。
⚠️ v2 架构痛点:Tiller 权限过大(通常绑定 cluster-admin),存在安全风险;多用户场景下难以隔离权限;Release 信息存储在 ConfigMap 中,管理不够直观。
4.2.2 Helm v3:无 Tiller 架构
Helm v3 彻底移除了 Tiller 组件。helm 客户端直接使用 kubeconfig 文件中的凭据与 Kubernetes API Server 通信。Release 信息以 Secret 形式存储在集群中,默认位于 helm.sh/release.v1 命名空间下。
4.3 核心概念工作流程
一个典型的 Helm 部署流程(以 v3 为例)如下:
- 搜索 Chart:从 Repository 中搜索需要的 Chart,例如
helm search repo bitnami/nginx。 - 拉取 Chart:下载 Chart 到本地,例如
helm pull bitnami/nginx --untar。 - 自定义配置:修改
values.yaml或通过--set参数覆盖默认值。 - 安装 Release:执行
helm install my-release ./nginx,客户端直接调用 Kubernetes API 创建资源。 - 管理 Release:通过
helm list查看所有 Release,helm upgrade升级,helm rollback回滚。 - 删除 Release:执行
helm uninstall my-release,清理所有关联资源。
📋 关键命令速查表:
# 添加仓库
helm repo add bitnami https://charts.bitnami.com/bitnami
# 搜索 Chart
helm search repo bitnami/nginx
# 安装 Release
helm install my-nginx bitnami/nginx --set replicaCount=3
# 查看 Release 历史
helm history my-nginx
# 回滚到版本 1
helm rollback my-nginx 1
# 卸载 Release
helm uninstall my-nginx
4.4 版本差异总结
| 维度 | Helm v2 | Helm v3 |
|---|---|---|
| 服务端组件 | Tiller(集群内 Pod) | 无(直接与 API Server 交互) |
| 权限模型 | Tiller 拥有集群管理员权限(通常绑定 cluster-admin) | 继承 kubeconfig 用户权限,支持 RBAC 细粒度控制 |
| Release 存储 | ConfigMap(默认命名空间) | Secret(默认命名空间,支持加密) |
| 安装方式 | 需先执行 helm init 安装 Tiller |
直接使用 helm install,无需初始化 |
| 安全性 | 较低(Tiller 权限过大) | 较高(无集群内服务端,权限可控) |
| 多租户支持 | 困难(Tiller 共享) | 原生支持(每个用户使用独立 kubeconfig) |
| 当前状态 | 已停止维护(2020 年 11 月终止) | 官方推荐版本(v3.0+) |
🎯 课程实践建议:本课程所有自动化部署与回滚机制均基于 Helm v3。如果你仍在使用 v2,请尽快迁移。v3 的
helm rollback 命令与 v2 完全兼容,但底层架构更安全、更简洁。