2. Helm 环境搭建:安装 Helm 客户端、配置 Helm 仓库、Helm 命令基础

在将 Helm 集成到 CI/CD 流水线之前,必须完成本地或构建环境中的 Helm 基础环境搭建。本章将指导你完成 Helm 客户端的安装、官方与第三方仓库的配置,以及最常用的三个核心命令:helm repo、helm search 和 helm install。

2.1 安装 Helm 客户端

Helm 采用客户端-服务端架构(v3 版本已移除 Tiller 服务端,仅保留客户端)。安装方式支持包管理器、二进制脚本和手动下载。推荐使用官方脚本或包管理器,确保版本与 Kubernetes 集群兼容。

安装方式 适用平台 命令/步骤
官方脚本(推荐) Linux / macOS curl -fsSL https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
Homebrew macOS brew install helm
Chocolatey Windows choco install kubernetes-helm
二进制手动安装 所有平台 从 GitHub Releases 下载 tar.gz,解压后放入 /usr/local/bin
版本验证:安装完成后执行 helm version,输出应类似 version.BuildInfo{Version:"v3.16.0", ...}。确保版本号 ≥ 3.8.0 以支持 OCI 仓库和最新安全特性。

2.2 配置 Helm 仓库

Helm 仓库(Repository)是存储 Chart 包的 HTTP 服务器。配置仓库后,可以通过 helm repo 命令进行增删查改。以下为常用仓库配置清单:

仓库名称 URL 用途
Bitnami https://charts.bitnami.com/bitnami 官方维护的常用应用 Chart(nginx、redis、postgresql 等)
Stable(已归档) https://charts.helm.sh/stable 旧版官方仓库,部分 Chart 已迁移至 Bitnami
Prometheus Community https://prometheus-community.github.io/helm-charts 监控与告警相关 Chart
Jetstack(cert-manager) https://charts.jetstack.io 证书管理 Chart

配置步骤:

  1. 添加仓库:helm repo add bitnami https://charts.bitnami.com/bitnami
  2. 更新仓库索引:helm repo update
  3. 查看已配置仓库:helm repo list
  4. 删除仓库:helm repo remove bitnami
CI/CD 环境注意:在流水线中,建议每次执行 helm install 或 helm upgrade 前先执行 helm repo update,确保获取最新 Chart 版本,避免因本地索引过期导致部署失败。

2.3 Helm 命令基础:repo、search、install

以下三个命令是 Helm 日常操作的核心,也是 CI/CD 流水线中最常用的指令。掌握它们即可完成从查找 Chart 到部署应用的完整链路。

2.3.1 helm repo — 仓库管理

helm repo 是仓库操作的入口命令,子命令包括:

  • helm repo add [name] [url] — 添加新仓库
  • helm repo list — 列出所有已配置仓库
  • helm repo update — 更新本地仓库索引缓存
  • helm repo remove [name] — 移除指定仓库
  • helm repo index [dir] — 基于本地目录生成仓库索引文件(用于自建仓库)

2.3.2 helm search — 搜索 Chart

支持两种搜索模式:

命令 说明 示例
helm search hub 搜索 Helm Hub(Artifact Hub)中的公共 Chart helm search hub nginx
helm search repo 搜索已添加的本地仓库中的 Chart helm search repo bitnami/nginx
常用技巧:使用 helm search repo bitnami/nginx --versions 可列出所有可用版本;使用 --max-col-width 0 可避免表格换行,便于流水线日志解析。

2.3.3 helm install — 部署 Chart

基本语法:helm install [release-name] [chart] [flags]

常用参数:

  • --namespace — 指定目标命名空间(默认 default)
  • --create-namespace — 如果命名空间不存在则自动创建
  • --values / -f — 指定自定义 values 文件
  • --set — 直接设置键值对覆盖默认值
  • --version — 指定 Chart 版本
  • --wait — 等待所有 Pod 就绪后再返回
  • --timeout — 设置等待超时时间(默认 5m)

完整示例:

# 添加并更新仓库
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update

# 搜索 nginx Chart
helm search repo bitnami/nginx --versions

# 使用自定义 values 文件部署 release
helm install my-nginx bitnami/nginx \
  --namespace production \
  --create-namespace \
  --values ./custom-values.yaml \
  --set replicaCount=3 \
  --version 18.0.0 \
  --wait \
  --timeout 10m

2.4 Helm 环境搭建与命令流程总览

下图展示了从零开始搭建 Helm 环境、配置仓库、搜索 Chart 到完成首次部署的完整流程:

Helm 环境搭建与命令流程总览 1. 安装 Helm 客户端 2. 配置 Helm 仓库 3. 搜索 Chart 安装方式 • 官方脚本 • Homebrew / Chocolatey • 二进制手动安装 • 验证: helm version 仓库操作 • helm repo add • helm repo update • helm repo list • helm repo remove 搜索方式 • helm search hub • helm search repo • 按名称/关键字 • 查看版本列表 4. helm install 部署 helm install 常用参数 • --namespace / --create-namespace:指定命名空间 • --values / -f:自定义 values 文件 • --set:命令行覆盖键值对 • --version:指定 Chart 版本 • --wait / --timeout:等待就绪与超时控制

2.5 常见问题与避坑指南

问题 原因 解决方案
helm repo update 超时 网络代理或仓库地址不可达 检查 HTTP_PROXY 环境变量;使用 helm repo add --insecure-skip-tls-verify 跳过证书验证(仅测试环境)
helm install 报错 already exists Release 名称在命名空间中已存在 使用 helm list -n [namespace] 查看已有 release;改用 helm upgrade --install 实现幂等部署
Chart 版本找不到 本地索引未更新或仓库未添加 执行 helm repo update;确认仓库 URL 正确且 Chart 名称拼写无误
Pod 一直处于 Pending 状态 集群资源不足或 PVC 无法绑定 检查 kubectl describe pod;增加 --timeout 值或调整资源请求
CI/CD 集成建议:在流水线脚本中,将 helm repo update 和 helm install 分开为两个独立步骤,便于定位网络或仓库索引问题。同时建议在 helm install 后立即执行 helm status [release-name] 验证部署状态。