2. Helm 安装与初始化:Helm 客户端安装、添加 Chart 仓库、Helm 版本选择与兼容性说明
在生产环境中使用 Helm 管理 Kubernetes 应用,首要任务是完成 Helm 客户端的正确安装与初始化。本章将详细讲解 Helm 的版本选择策略、客户端安装步骤、Chart 仓库的添加与管理,以及 Helm 与 Kubernetes 集群的版本兼容性矩阵,确保后续的升级、回滚与配置管理操作建立在稳固的基础之上。
2.1 Helm 版本选择与兼容性说明
Helm 目前主要维护两个大版本:Helm v2(已停止维护)和 Helm v3(当前活跃版本)。v3 版本移除了 Tiller 服务端组件,采用纯客户端架构,安全性更高,部署更简单。建议所有新项目直接使用 Helm v3。
Helm 客户端版本与 Kubernetes 集群版本之间存在兼容性约束。下表列出了 Helm v3 各小版本与 Kubernetes API 版本的对应关系:
| Helm 版本 | 支持的 Kubernetes API 版本 | 推荐 Kubernetes 集群版本 | 备注 |
|---|---|---|---|
| v3.0.x – v3.5.x | 1.16 – 1.22 | 1.18 – 1.21 | 早期 v3 版本,部分 CRD 支持不完善 |
| v3.6.x – v3.10.x | 1.16 – 1.24 | 1.20 – 1.23 | 稳定版本,支持 OCI 注册表 |
| v3.11.x – v3.14.x | 1.16 – 1.28 | 1.24 – 1.27 | 当前主流版本,推荐生产使用 |
| v3.15.x+ | 1.16 – 1.30+ | 1.27 – 1.29+ | 最新特性版本,支持 Kubernetes Gateway API |
2.2 Helm 客户端安装
Helm 客户端支持多种安装方式,包括包管理器安装、二进制下载安装以及脚本自动安装。以下为三种主流安装方法:
2.2.1 使用包管理器安装(推荐 Linux/macOS)
包管理器安装最为便捷,且自动处理 PATH 环境变量:
# macOS 使用 Homebrew
brew install helm
# Ubuntu/Debian 使用 apt
curl https://baltocdn.com/helm/signing.asc | sudo apt-key add -
sudo apt-get install apt-transport-https --yes
echo "deb https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
sudo apt-get update
sudo apt-get install helm
# CentOS/RHEL 使用 yum
sudo yum install -y https://mirrors.aliyun.com/helm/helm-v3.14.4-linux-amd64.tar.gz
# 或使用 rpm 仓库
sudo yum install helm
2.2.2 二进制下载安装(通用方法)
适用于所有操作系统,包括离线环境:
# 下载指定版本(以 v3.14.4 为例)
wget https://get.helm.sh/helm-v3.14.4-linux-amd64.tar.gz
# 解压
tar -zxvf helm-v3.14.4-linux-amd64.tar.gz
# 移动二进制文件到 PATH 目录
sudo mv linux-amd64/helm /usr/local/bin/helm
# 验证安装
helm version --short
2.2.3 使用官方脚本自动安装
# 一键安装最新稳定版
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
# 安装指定版本
./get_helm.sh --version v3.14.4
helm version 应输出类似 version.BuildInfo{Version:"v3.14.4", …} 的信息。若输出 Client: &version.Version{SemVer:"v3.14.4"} 则表示客户端安装成功。
2.3 添加 Chart 仓库
Chart 仓库是存储和分发 Helm Chart 的 HTTP 服务器。安装 Helm 后,需要添加官方或第三方仓库才能搜索和安装 Chart。
2.3.1 添加官方稳定仓库
# 添加 Helm 官方稳定仓库(已弃用,但部分旧 Chart 仍可用)
helm repo add stable https://charts.helm.sh/stable
# 添加 Helm 官方 incubator 仓库(实验性 Chart)
helm repo add incubator https://charts.helm.sh/incubator
# 添加 Bitnami 仓库(当前最活跃的第三方仓库)
helm repo add bitnami https://charts.bitnami.com/bitnami
# 添加 Prometheus 社区仓库
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
# 添加 Grafana 仓库
helm repo add grafana https://grafana.github.io/helm-charts
2.3.2 仓库管理常用命令
| 命令 | 功能说明 | 示例 |
|---|---|---|
helm repo list |
列出所有已添加的仓库 | helm repo list |
helm repo update |
更新本地仓库缓存(获取最新 Chart 列表) | helm repo update |
helm repo remove |
移除指定仓库 | helm repo remove stable |
helm search repo |
在已添加的仓库中搜索 Chart | helm search repo nginx |
helm repo index |
基于本地目录生成仓库索引文件 | helm repo index ./my-charts |
2.3.3 添加私有仓库(带认证)
企业环境中常使用私有 Chart 仓库,需要提供认证信息:
# 使用用户名密码添加私有仓库
helm repo add my-private-repo https://harbor.example.com/chartrepo/myproject \
--username admin \
--password mypassword
# 使用 CA 证书(自签名证书场景)
helm repo add my-private-repo https://harbor.example.com/chartrepo/myproject \
--ca-file /etc/ssl/certs/ca.crt \
--username admin \
--password mypassword
HELM_REPO_PASSWORD 或使用 helm repo add 的交互式密码输入模式(不指定 --password 参数时,系统会提示输入密码)。
2.4 Helm 初始化与配置验证
Helm v3 不需要像 v2 那样执行 helm init 安装 Tiller。安装客户端后,只需完成以下初始化步骤即可使用:
- 验证集群访问权限:确保
kubectl已正确配置,且当前上下文指向目标集群。 - 添加必要仓库:至少添加一个可用的 Chart 仓库(如 Bitnami)。
- 更新仓库缓存:执行
helm repo update获取最新 Chart 列表。 - 测试安装:使用
helm install安装一个简单的 Chart 验证端到端流程。
# 步骤 1:检查 kubectl 配置
kubectl cluster-info
# 步骤 2:添加 Bitnami 仓库
helm repo add bitnami https://charts.bitnami.com/bitnami
# 步骤 3:更新仓库
helm repo update
# 步骤 4:测试安装(安装 nginx 到 default 命名空间)
helm install my-nginx bitnami/nginx --namespace default --create-namespace
# 验证部署
helm list -n default
kubectl get pods -n default
helm list 能正常输出已安装的 Release 列表,且 helm search repo 能返回 Chart 搜索结果,即表示 Helm 客户端初始化成功,可以开始后续的 Chart 管理与应用部署。
2.5 Helm 架构与工作流程(内联 SVG)
下图展示了 Helm v3 的纯客户端架构以及从 Chart 仓库到 Kubernetes 集群的完整工作流程:
2.6 常见问题与排查
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
helm repo update 超时 |
网络代理未配置或仓库地址不可达 | 设置 HTTP_PROXY 环境变量;更换为国内镜像仓库 |
helm install 报错 no available release name |
Helm v3 未正确初始化,或集群 RBAC 权限不足 | 检查 kubectl auth can-i 权限;确保 ServiceAccount 存在 |
helm list 返回空 |
当前命名空间下没有部署任何 Release | 使用 --all-namespaces 参数查看所有命名空间 |
| Chart 安装后 Pod 无法启动 | Chart 版本与集群 API 版本不兼容 | 检查 Chart 的 apiVersion 字段;升级 Helm 或集群版本 |
helm search repo 结果为空 |
未执行 helm repo update 或仓库索引损坏 |
执行 helm repo update;删除 ~/.cache/helm 后重试 |
helm install --debug --dry-run 可以在不实际部署的情况下预览渲染后的 YAML 内容,是排查 Chart 模板问题的首选方法。
2.7 多环境配置管理(内联 SVG)
在实际项目中,通常需要管理开发、测试、生产等多套环境的 Helm 配置。下图展示了基于 values 文件覆盖的多环境配置策略:
多环境配置的核心原则是:基础配置与环境特定配置分离。通过 -f 参数叠加多个 values 文件,后加载的文件会覆盖前一个文件的同名配置项,实现环境差异化。
# 开发环境部署
helm install myapp ./myapp -f values.yaml -f values-dev.yaml --namespace dev
# 生产环境部署
helm install myapp ./myapp -f values.yaml -f values-prod.yaml --namespace prod \
--set image.tag=v1.2.3 --set replicaCount=5
myapp-chart/
├── Chart.yaml
├── values.yaml # 基础配置(所有环境共享)
├── values-dev.yaml # 开发环境覆盖
├── values-staging.yaml # 预发布环境覆盖
├── values-prod.yaml # 生产环境覆盖
├── templates/
│ ├── deployment.yaml
│ ├── service.yaml
│ └── _helpers.tpl
└── charts/