2. Helm 安装与配置:Helm 客户端安装、添加/管理 Chart 仓库、Helm 环境变量与配置
本章是 Helm 实战的起点。在生产环境中,Helm 的安装方式、仓库管理策略以及环境变量配置直接影响后续的发布效率与安全性。以下内容覆盖从客户端安装到多仓库治理的完整链路。
2.1 Helm 客户端安装
Helm 采用客户端架构(CLI),服务端 Tiller 已在 Helm 3 中移除,安装过程大幅简化。推荐以下三种安装方式:
| 安装方式 | 适用场景 | 命令/步骤 |
|---|---|---|
| 官方脚本(推荐) | Linux / macOS 快速安装 | curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash |
| 包管理器 | macOS (Homebrew) / Windows (Chocolatey) | brew install helm 或 choco install kubernetes-helm |
| 二进制下载 | 离线环境 / 指定版本 | 从 https://get.helm.sh/helm-v3.x.x-linux-amd64.tar.gz 下载并解压至 /usr/local/bin |
版本验证:安装后执行
helm version,输出应包含 version.BuildInfo{Version:"v3.x.x"}。确保版本 ≥ 3.8.0 以支持 OCI 仓库。
2.2 添加与管理 Chart 仓库
Chart 仓库是 Helm 生态的核心。生产环境通常需要同时管理多个仓库:官方仓库、自建仓库、OCI 兼容仓库。以下为仓库管理的关键操作:
2.2.1 仓库操作命令速查
| 操作 | 命令示例 | 说明 |
|---|---|---|
| 添加仓库 | helm repo add bitnami https://charts.bitnami.com/bitnami |
添加 Bitnami 官方仓库 |
| 列出仓库 | helm repo list |
显示所有已添加仓库的名称与 URL |
| 更新仓库 | helm repo update |
拉取各仓库最新 Chart 索引 |
| 删除仓库 | helm repo remove bitnami |
移除不再使用的仓库 |
| 搜索 Chart | helm search repo nginx |
在已添加仓库中搜索 Chart |
2.2.2 自建仓库与 OCI 仓库
企业级场景下,自建 Chart 仓库是治理的基础。推荐使用 ChartMuseum 或 Harbor 作为私有仓库。OCI 仓库(如 Harbor、Docker Hub)允许将 Chart 作为 OCI 制品存储:
# 添加 OCI 仓库(无需 helm repo add,直接使用 registry 地址)
helm install my-release oci://harbor.example.com/library/nginx --version 1.0.0
# 推送 Chart 到 OCI 仓库
helm push mychart-0.1.0.tgz oci://harbor.example.com/library
安全提示:生产环境务必为仓库配置 HTTPS 与认证。使用
helm repo add --username --password 或集成 Kubernetes Secret 进行身份验证。
2.3 Helm 环境变量与配置
Helm 的行为可通过环境变量和配置文件进行定制。以下为最常用的环境变量及其作用:
| 环境变量 | 默认值 | 作用说明 |
|---|---|---|
HELM_CACHE_HOME |
$HOME/.cache/helm |
Chart 缓存目录,存放下载的 Chart 包 |
HELM_CONFIG_HOME |
$HOME/.config/helm |
配置文件目录,包含 repositories.yaml、plugins.yaml |
HELM_DATA_HOME |
$HOME/.local/share/helm |
数据目录,存放插件、启动信息 |
HELM_DRIVER |
secret |
Release 存储驱动:secret(默认)、configmap、sql |
HELM_NAMESPACE |
default |
默认目标命名空间,避免每次指定 -n |
HELM_KUBECONTEXT |
当前 kubeconfig 上下文 | 指定 Kubernetes 集群上下文 |
HELM_DEBUG |
false |
启用调试日志,用于排查安装/升级问题 |
2.3.1 配置文件结构
Helm 的配置集中在 $HELM_CONFIG_HOME 目录下,核心文件为 repositories.yaml:
# ~/.config/helm/repositories.yaml 示例
apiVersion: v1
kind: Repositories
repositories:
- name: bitnami
url: https://charts.bitnami.com/bitnami
oci: false
- name: stable
url: https://charts.helm.sh/stable
oci: false
- name: private-repo
url: https://harbor.example.com/chartrepo/team-a
username: "robot$helm-puller"
password: "encrypted-"
oci: false
最佳实践:将
HELM_CONFIG_HOME 指向团队共享的 NFS 或 Git 管理的配置目录,实现仓库配置的版本化与团队同步。
2.4 Helm 配置与仓库管理流程
以下 SVG 图展示了从客户端安装到多仓库管理的完整流程,以及环境变量在其中的作用位置:
2.5 多仓库治理策略
在大型组织中,Chart 仓库数量可能超过 10 个。以下策略可提升管理效率:
- 命名规范:仓库名称采用
<团队>-<环境>格式,如platform-prod、data-staging。 - 权限隔离:每个仓库绑定独立的 Service Account,通过 RBAC 限制推送与拉取权限。
- 自动同步:使用 CI/CD 流水线(如 Jenkins、GitLab CI)在 Chart 发布后自动执行
helm repo update。 - 仓库健康检查:定期执行
helm repo list -o json并验证各仓库的响应状态。
效率提升:为常用仓库设置别名,例如
alias hr='helm repo update',减少重复输入。
2.6 常见问题与排查
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
helm repo update 超时 |
仓库 URL 不可达或 DNS 解析失败 | 检查网络连通性,确认仓库 URL 是否支持 HTTPS |
helm install 提示 not found |
仓库索引未更新或 Chart 名称错误 | 执行 helm repo update 后重试,使用 helm search repo 确认名称 |
| Release 存储异常 | HELM_DRIVER 配置与集群不兼容 |
切换驱动为 configmap 或 sql,确保对应后端可用 |
| 认证失败 | 仓库用户名/密码错误或 过期 | 重新执行 helm repo add --username --password,或更新 Secret |
通过以上安装、仓库管理与配置步骤,你已经具备了 Helm 生产环境的基础操作能力。下一环节将深入 Chart 的目录结构与自定义模板编写。