2. Helm 安装与配置:Helm 客户端安装、添加官方仓库、Helm 常用命令

Helm 是 Kubernetes 生态中最流行的包管理工具,其核心组件是命令行客户端 helm。本章将带你完成从客户端安装、仓库配置到核心命令使用的完整闭环,为后续的 Chart 发布治理打下坚实基础。

2.1 Helm 客户端安装

Helm 客户端是一个单一二进制文件,支持主流操作系统。安装方式分为 脚本自动安装 和 手动下载 两种,推荐使用官方脚本以确保版本一致性。

2.1.1 使用官方脚本安装(Linux / macOS)

curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh

脚本会自动检测系统架构,下载对应二进制并放入 /usr/local/bin/。安装完成后验证版本:

helm version --short

2.1.2 手动下载安装(Windows / 离线环境)

访问 Helm GitHub Releases 页面,选择对应操作系统和架构的压缩包,解压后将 helm 二进制文件加入系统 PATH 即可。

版本选择建议: 生产环境建议使用 Helm v3.12+ 版本,该版本修复了多项安全漏洞并增强了 OCI 仓库支持。避免使用 v3.0.x 早期版本。

2.2 添加官方仓库

Helm 使用 仓库(Repository) 来存储和分发 Chart。安装完成后,需要添加官方维护的稳定仓库作为 Chart 来源。

2.2.1 添加 Helm 官方稳定仓库

helm repo add stable https://charts.helm.sh/stable
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update

stable 仓库由 Helm 社区维护,bitnami 仓库由 VMware 维护,两者均包含大量生产级 Chart。

2.2.2 查看已添加的仓库

helm repo list

输出示例:

NAME URL
stable https://charts.helm.sh/stable
bitnami https://charts.bitnami.com/bitnami

2.2.3 搜索 Chart

helm search repo stable/nginx-ingress
helm search repo bitnami/nginx

helm search repo 命令会从本地缓存的仓库索引中查找,速度极快。首次搜索前需确保已执行 helm repo update。

注意: 不要直接使用 helm search hub 搜索公共 Hub,该命令会查询远程 Artifact Hub API,速度较慢且可能受网络限制。生产环境应优先使用本地仓库索引。

2.3 Helm 常用命令

Helm 的核心工作流围绕 安装(install)、升级(upgrade)、回滚(rollback) 和 查看(list) 四个操作展开。下面通过一个完整的 Nginx 部署示例来演示。

2.3.1 安装 Chart:helm install

helm install my-nginx bitnami/nginx --namespace default --create-namespace

参数说明:

  • my-nginx:Release 名称,同一命名空间下必须唯一。
  • bitnami/nginx:Chart 引用,格式为 仓库名/Chart名。
  • --namespace:指定部署的 Kubernetes 命名空间。
  • --create-namespace:如果命名空间不存在则自动创建。

安装成功后,Helm 会输出 Release 状态、命名空间和关键资源信息。

2.3.2 升级 Release:helm upgrade

当需要修改 Chart 配置或更新版本时,使用 upgrade 命令:

helm upgrade my-nginx bitnami/nginx --set replicaCount=3 --namespace default

常用参数:

参数 说明 示例
--set 直接设置 values 中的键值对 --set image.tag=1.25
-f / --values 指定 YAML 文件覆盖 values -f custom-values.yaml
--reuse-values 复用上一次的 values,避免覆盖 用于增量更新
--atomic 升级失败时自动回滚 生产环境推荐

2.3.3 回滚 Release:helm rollback

当升级导致服务异常时,可以快速回滚到历史版本:

helm rollback my-nginx 1 --namespace default

其中 1 是目标 Revision 编号。查看所有历史版本:

helm history my-nginx --namespace default

输出示例:

REVISION UPDATED STATUS CHART APP VERSION
1 2025-01-10 10:00:00 deployed nginx-15.0.0 1.25
2 2025-01-10 11:00:00 failed nginx-15.1.0 1.26
3 2025-01-10 11:05:00 deployed nginx-15.0.0 1.25
最佳实践: 每次升级前使用 --dry-run 参数预览变更:helm upgrade my-nginx bitnami/nginx --dry-run --debug。这可以避免因 values 错误导致的意外回滚。

2.3.4 查看 Release:helm list

列出当前命名空间下所有已部署的 Release:

helm list --namespace default

常用参数:

  • --all-namespaces:查看所有命名空间。
  • --failed:仅显示失败的 Release。
  • --pending:仅显示待处理的 Release。
  • -q:只输出 Release 名称,便于脚本处理。

2.4 Helm 核心工作流示意图

下图展示了 Helm 客户端与 Kubernetes 集群、Chart 仓库之间的交互流程,以及 install / upgrade / rollback 三个核心命令在 Release 生命周期中的位置。

Helm 核心工作流 Helm 核心工作流:install / upgrade / rollback Helm 客户端 helm CLI Chart 仓库 stable / bitnami Kubernetes 集群 kube-apiserver Release 历史 Revision 1,2,3... install upgrade rollback helm repo update helm history 工作流说明: 1. install:Helm 从仓库拉取 Chart,渲染模板后通过 kube-apiserver 创建资源,生成 Revision 1。 2. upgrade:Helm 对比新旧 values,生成增量变更并应用,创建 Revision 2。 3. rollback:Helm 读取指定 Revision 的渲染结果,重新应用到集群,创建 Revision 3。 4. list:查询当前命名空间下所有 Release 及其最新状态。

2.5 命令速查表

以下表格汇总了 Helm 日常管理中最常用的命令及其适用场景:

命令 功能 典型场景
helm install 首次部署 Chart 新服务上线
helm upgrade 更新已部署的 Release 配置变更、版本升级
helm rollback 回滚到历史版本 升级失败、紧急恢复
helm list 列出 Release 查看部署状态
helm history 查看 Release 版本历史 回滚前确认目标版本
helm uninstall 删除 Release 服务下线、清理环境
helm get values 查看当前 Release 的 values 排查配置差异
helm get manifest 查看渲染后的 Kubernetes 资源 调试模板问题
学习建议: 在本地 Minikube 或 Kind 集群中反复练习 install → upgrade → rollback → list 循环,直到形成肌肉记忆。这是 Helm 治理中最基础也最重要的操作闭环。