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 图展示了从客户端安装到多仓库管理的完整流程,以及环境变量在其中的作用位置:

Helm 安装与仓库管理流程 1. 安装 Helm CLI 2. 验证版本 3. 添加 Chart 仓库 4. 更新仓库索引 5. 搜索/安装 Chart 6. 设置环境变量 7. 配置存储驱动 8. 指定命名空间 关键配置说明 • 环境变量优先级:命令行参数 > 环境变量 > 默认值 • 仓库认证信息建议存储在 Kubernetes Secret 中,避免明文 • 生产环境推荐使用 OCI 仓库 + 镜像签名验证 • 多集群场景下,通过 HELM_KUBECONTEXT 切换上下文

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 的目录结构与自定义模板编写。