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 中,管理不够直观。
Helm v2 客户端-服务端架构 Helm v2 架构:客户端 + Tiller(服务端) helm 客户端 CLI 工具 解析 Chart / values 发送 gRPC 请求 Tiller(服务端) 运行在集群内 Pod 渲染 Chart 模板 调用 Kubernetes API 管理 Release 状态 Kubernetes API Server gRPC 通信 创建/更新/删除资源 📌 v2 特点:Tiller 拥有集群管理员权限,Release 信息存储在 ConfigMap 中,多租户隔离困难。

4.2.2 Helm v3:无 Tiller 架构

Helm v3 彻底移除了 Tiller 组件。helm 客户端直接使用 kubeconfig 文件中的凭据与 Kubernetes API Server 通信。Release 信息以 Secret 形式存储在集群中,默认位于 helm.sh/release.v1 命名空间下。

Helm v3 无 Tiller 架构 Helm v3 架构:无 Tiller,直接与 API Server 交互 helm 客户端 CLI 工具 读取 kubeconfig 直接调用 Kubernetes API Kubernetes API Server 认证 / 授权 资源创建 / 更新 / 删除 Release 信息存储为 Secret HTTPS / REST API ✅ v3 优势:无集群内服务端,安全性更高;权限继承自 kubeconfig 用户;Release 信息以 Secret 存储,支持加密。 🔑 关键变化:不再需要 helm init 安装 Tiller,helm install 直接可用。

4.3 核心概念工作流程

一个典型的 Helm 部署流程(以 v3 为例)如下:

  1. 搜索 Chart:从 Repository 中搜索需要的 Chart,例如 helm search repo bitnami/nginx。
  2. 拉取 Chart:下载 Chart 到本地,例如 helm pull bitnami/nginx --untar。
  3. 自定义配置:修改 values.yaml 或通过 --set 参数覆盖默认值。
  4. 安装 Release:执行 helm install my-release ./nginx,客户端直接调用 Kubernetes API 创建资源。
  5. 管理 Release:通过 helm list 查看所有 Release,helm upgrade 升级,helm rollback 回滚。
  6. 删除 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 完全兼容,但底层架构更安全、更简洁。