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 即可。
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 生命周期中的位置。
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 资源 | 调试模板问题 |
install → upgrade → rollback → list 循环,直到形成肌肉记忆。这是 Helm 治理中最基础也最重要的操作闭环。