2. Helm 安装与配置:客户端安装、仓库管理与基础操作
Helm 是 Kubernetes 生态中事实上的包管理标准。在生产环境中,Helm 客户端安装的正确性、仓库源的稳定性以及基础命令的熟练度,直接决定了后续 Chart 发布与治理的效率。本章将围绕 Helm 客户端的安装方式、仓库的增删改查、以及最常用的 repo update、search、list 操作展开,确保你能够快速搭建一个可用的 Helm 工作环境。
2.1 Helm 客户端安装
Helm 客户端是一个二进制工具,支持多种安装方式。生产环境推荐使用官方脚本或包管理器进行安装,以确保版本一致性和可追溯性。
2.1.1 安装方式对比
| 安装方式 | 适用场景 | 命令示例 | 注意事项 |
|---|---|---|---|
| 官方脚本 | 快速安装、CI/CD 环境 | curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash |
需确保网络可达 GitHub |
| 包管理器(Linux) | 本地开发、服务器管理 | apt install helm / yum install helm |
版本可能滞后,需确认仓库源 |
| Homebrew(macOS) | macOS 开发者 | brew install helm |
自动处理依赖 |
| 二进制下载 | 离线环境、版本锁定 | 从 https://get.helm.sh 下载 tar.gz | 需手动配置 PATH |
2.1.2 验证安装
安装完成后,执行以下命令验证版本和集群连通性:
# 查看 Helm 版本
helm version
# 查看 Helm 环境变量
helm env
# 测试与 Kubernetes 集群的连通性(需已配置 kubeconfig)
helm list -n kube-system
如果 helm version 正常输出,且 helm list 不报错,则说明客户端安装成功且已正确连接到集群。
2.2 添加与移除仓库
Helm 仓库(Repository)是存储 Chart 包的 HTTP 服务器。添加仓库后,你可以从仓库中搜索和安装 Chart。生产环境中,通常需要添加官方稳定仓库、内部私有仓库以及第三方可信仓库。
2.2.1 常用仓库添加
# 添加官方稳定仓库(Bitnami 是社区最活跃的 Chart 源之一)
helm repo add bitnami https://charts.bitnami.com/bitnami
# 添加官方 Helm 稳定仓库(已归档,但部分旧 Chart 仍可用)
helm repo add stable https://charts.helm.sh/stable
# 添加内部私有仓库(示例地址,请替换为实际仓库 URL)
helm repo add internal-repo https://harbor.company.com/chartrepo/library
# 添加 Prometheus 社区仓库
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
2.2.2 查看与移除仓库
# 列出所有已添加的仓库
helm repo list
# 移除指定仓库
helm repo remove bitnami
# 移除所有仓库(谨慎使用)
helm repo remove $(helm repo list -q)
helm search 和 helm upgrade 将无法从该仓库获取更新。建议在移除前确认没有正在使用的 Chart 依赖该仓库。
2.3 helm repo update:同步仓库索引
添加仓库后,本地并不会立即拥有该仓库的 Chart 列表。必须执行 helm repo update 命令,从远程仓库下载最新的 index.yaml 索引文件,才能进行搜索和安装。
# 更新所有已添加的仓库
helm repo update
# 更新指定仓库
helm repo update bitnami
# 查看更新后的仓库状态
helm repo list
helm repo update 会将远程仓库的索引缓存到本地 ~/.cache/helm/repository/ 目录下。缓存文件默认保留 24 小时,但建议在每次执行 helm search 或 helm install 前手动更新,以确保获取到最新版本。
helm repo update,避免因缓存过期导致安装到旧版本 Chart。
2.4 helm search:搜索 Chart
helm search 命令支持两种搜索模式:hub(搜索 Helm Hub 上的所有仓库)和 repo(搜索本地已添加的仓库)。生产环境中,helm search repo 是更常用的方式。
2.4.1 搜索语法
# 搜索本地仓库中的 Chart(模糊匹配)
helm search repo nginx
# 搜索指定仓库中的 Chart
helm search repo bitnami/nginx
# 使用正则表达式搜索
helm search repo 'nginx.*ingress'
# 搜索 Helm Hub(需联网)
helm search hub nginx
2.4.2 搜索结果解读
| 字段 | 说明 | 示例 |
|---|---|---|
| NAME | Chart 全名(仓库名/Chart名) | bitnami/nginx |
| CHART VERSION | Chart 的版本号 | 18.0.3 |
| APP VERSION | Chart 内包含的应用版本号 | 1.25.3 |
| DESCRIPTION | Chart 的简要描述 | NGINX web server |
CHART VERSION 和 APP VERSION。Chart 版本由 Chart 维护者控制,App 版本由上游应用控制。在治理过程中,应优先锁定 Chart 版本,而非 App 版本。
2.5 helm list:查看已安装的 Release
helm list 用于查看当前集群中已部署的 Helm Release。这是日常运维中最频繁使用的命令之一。
2.5.1 基本用法
# 列出当前命名空间下的所有 Release
helm list
# 列出所有命名空间下的 Release
helm list --all-namespaces
# 列出已卸载但未清理的 Release
helm list --uninstalled
# 列出所有状态(包括已卸载、已失败等)
helm list --all
# 按名称过滤
helm list --filter 'nginx*'
2.5.2 输出字段说明
| 字段 | 说明 | 示例 |
|---|---|---|
| NAME | Release 名称 | my-nginx |
| NAMESPACE | Release 所在的命名空间 | default |
| REVISION | 当前 Release 的修订版本号 | 3 |
| UPDATED | 最近一次更新的时间 | 2024-01-15 10:30:00 |
| STATUS | Release 的当前状态 | deployed |
| CHART | 使用的 Chart 名称和版本 | nginx-18.0.3 |
| APP VERSION | Chart 内应用的实际版本 | 1.25.3 |
2.5.3 Release 状态说明
- deployed:Release 已成功部署并正在运行。
- failed:Release 部署失败,需要排查原因。
- pending-install:正在安装中,尚未完成。
- pending-upgrade:正在升级中,尚未完成。
- uninstalled:Release 已被卸载,但历史记录保留。
- superseded:Release 已被新版本替代,历史版本保留。
helm list 输出为空,请确认当前 kubeconfig 的上下文是否正确,以及是否指定了正确的命名空间。使用 kubectl config current-context 检查当前集群。
2.6 基础操作流程 SVG 图
下图展示了 Helm 客户端安装完成后,从仓库管理到 Release 查看的完整基础操作流程:
2.7 仓库管理与 Release 状态 SVG 图
下图展示了 Helm 仓库的生命周期管理以及 Release 在不同状态之间的转换关系:
2.8 常见问题与避坑指南
helm repo update 报错 failed to fetch 或 timeout。原因: 网络不通或仓库 URL 已变更。
解决: 检查网络代理设置,使用
curl -I <仓库URL> 测试连通性;确认仓库 URL 是否仍有效,必要时联系仓库维护者。
helm search repo 找不到刚添加的 Chart。原因: 忘记执行
helm repo update 或仓库索引尚未同步。解决: 先执行
helm repo update,再重新搜索。
helm list 输出为空,但集群中确实有 Release。原因: 当前 kubeconfig 的命名空间或集群上下文不正确。
解决: 使用
kubectl config current-context 确认上下文;使用 helm list --all-namespaces 跨命名空间搜索。
2.9 本章小结
通过本章的学习,你应掌握以下核心技能:
- 能够通过多种方式安装 Helm 客户端,并验证安装结果。
- 熟练使用
helm repo add、helm repo remove、helm repo list管理仓库。 - 理解
helm repo update的作用,并养成在操作前更新索引的习惯。 - 能够使用
helm search repo快速定位目标 Chart。 - 通过
helm list查看 Release 状态,并理解不同状态的含义。
这些基础操作是后续进行 Chart 安装、升级、回滚以及治理策略的前提。请务必在真实环境中反复练习,直到形成肌肉记忆。