2. Helm 安装与配置:在 Linux/MacOS 上安装 Helm 客户端、配置 Helm 仓库源、Helm 命令自动补全
Helm 是 Kubernetes 生态中最流行的包管理工具,被形象地称为“K8s 的 apt-get/yum”。在生产环境中,无论是部署微服务、中间件还是监控体系,几乎都离不开 Helm Chart。本章将带你完成 Helm 客户端的安装、仓库源配置以及命令自动补全设置,为后续的 Chart 仓库搭建与网络拓扑集成打下坚实基础。
2.1 Helm 客户端安装(Linux / macOS)
Helm 客户端是一个单一二进制文件,安装方式非常灵活。以下列出三种主流安装方法,推荐使用 官方脚本 或 包管理器 进行安装。
| 安装方式 | 适用场景 | 命令示例 |
|---|---|---|
| 官方安装脚本 | 快速安装,自动检测 OS 架构 | curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash |
| Homebrew(macOS / Linux) | macOS 用户首选,便于版本管理 | brew install helm |
| 二进制包手动安装 | 离线环境或指定版本 | 下载 helm-v3.x.x-linux-amd64.tar.gz 并解压至 /usr/local/bin |
helm version,输出应类似 version.BuildInfo{Version:"v3.15.0", ...}。Helm v3 已移除 Tiller,客户端直接与 API Server 通信,安全性更高。
2.2 配置 Helm 仓库源
Helm 仓库(Repository)是存储和分发 Chart 的 HTTP 服务器。配置仓库源后,即可通过 helm repo add 添加、helm repo update 更新索引,并使用 helm install 从仓库部署应用。
2.2.1 添加常用公共仓库
# 添加 Bitnami 仓库(最流行的应用仓库)
helm repo add bitnami https://charts.bitnami.com/bitnami
# 添加 Prometheus 社区仓库
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
# 添加 Jetstack(cert-manager)仓库
helm repo add jetstack https://charts.jetstack.io
# 更新本地仓库索引缓存
helm repo update
2.2.2 仓库管理常用命令
| 命令 | 功能说明 |
|---|---|
helm repo list |
列出所有已配置的仓库名称与 URL |
helm repo remove <name> |
移除指定仓库 |
helm search repo <keyword> |
在已添加的仓库中搜索 Chart |
helm repo update |
拉取所有仓库的最新 Chart 索引 |
2.3 Helm 命令自动补全
Helm 支持 Bash、Zsh、Fish 和 PowerShell 的自动补全。配置后,输入 helm i 再按 Tab 键即可自动补全为 helm install,大幅提升操作效率。
2.3.1 Bash 自动补全
# 生成补全脚本并 source 到当前 shell
source <(helm completion bash)
# 永久生效:追加到 .bashrc
echo 'source <(helm completion bash)' >> ~/.bashrc
2.3.2 Zsh 自动补全
# 生成补全脚本
source <(helm completion zsh)
# 永久生效:追加到 .zshrc
echo 'source <(helm completion zsh)' >> ~/.zshrc
2.3.3 验证自动补全
重新打开终端或执行 exec $SHELL 后,输入 helm ver 并按下 Tab 键,应自动补全为 helm version。如果未生效,检查是否已安装 bash-completion(Linux)或确认 Zsh 补全框架已加载。
helm upgrade --install 命令时。
2.4 Helm 客户端与仓库交互流程
下图展示了 Helm 客户端从仓库获取 Chart 索引、搜索 Chart、下载并安装到 Kubernetes 集群的完整流程。
2.5 多仓库管理与优先级策略
在实际项目中,通常会同时使用多个仓库(公共仓库 + 私有仓库)。Helm 的搜索顺序遵循 仓库名称的字母序,但可以通过显式指定仓库名来控制优先级。
# 从指定仓库搜索(推荐)
helm search repo bitnami/nginx
# 查看 Chart 的可用版本
helm search repo bitnami/nginx --versions
# 安装时指定仓库
helm install my-nginx bitnami/nginx --version 18.0.0
--version 参数锁定 Chart 版本,避免因仓库更新导致意外升级。同时,建议将私有仓库名称设置为 private 或 internal,使其在字母序中排在公共仓库之前。
2.6 离线环境安装与配置
在离线或内网环境中,无法直接访问 GitHub 或公共 Chart 仓库。此时需要提前下载 Helm 二进制和 Chart 包,并通过本地文件系统或内部 HTTP 服务器提供服务。
| 资源类型 | 离线准备方法 |
|---|---|
| Helm 二进制 | 在有网环境下载 helm-v3.x.x-linux-amd64.tar.gz,拷贝到内网节点 |
| Chart 包 | 使用 helm pull bitnami/nginx --untar 下载并解压,然后上传到内部仓库 |
| 仓库索引 | 使用 helm repo index . 在本地目录生成 index.yaml |
# 离线环境添加本地目录作为仓库
helm repo add local-repo file:///path/to/charts
# 或通过内部 HTTP 服务器
helm repo add internal-repo http://internal-charts.example.com/charts
helm repo update 同步索引,确保客户端与仓库状态一致。
2.7 本章小结
完成本章操作后,你的环境应具备以下能力:
- Helm 客户端已安装并可执行
helm version - 已添加至少一个公共仓库(如 bitnami)并更新索引
- Shell 自动补全已生效,Tab 键可补全 Helm 子命令
- 理解 Helm 客户端与仓库、Kubernetes API 的交互流程