4. 安装 Helm:Helm 的作用、安装步骤与常用命令

在 Kubernetes 生态中,Helm 是事实上的包管理标准。对于 Gatekeeper 这类由多个 CRD、Webhook、Service 和 Deployment 组成的复杂组件,直接使用 kubectl apply 管理 YAML 清单极易出错且难以版本化。Helm 通过 Chart(打包格式)、Release(运行实例)和 Values(配置注入)三层抽象,将 Gatekeeper 的部署参数化、可重复化。本节将系统讲解 Helm 的核心作用、安装步骤以及日常运维中最常用的命令。

4.1 Helm 的核心作用

Helm 解决了 Kubernetes 应用部署中的三个关键痛点:

  • 模板化与参数化:通过 Go 模板引擎将 YAML 中的环境差异(如镜像版本、副本数、资源限制)抽取为 values.yaml,避免为每个环境维护一套完整 YAML。
  • 依赖管理:一个 Chart 可以声明依赖其他 Chart(如 Gatekeeper 依赖 cert-manager),Helm 自动解析并安装依赖。
  • 版本控制与回滚:每次 helm install 或 helm upgrade 都会生成一个 Release 版本号,支持一键回滚到任意历史版本。
💡 为什么 Gatekeeper 必须用 Helm? Gatekeeper 包含 6 个 CRD、3 个 Webhook 配置、1 个 Deployment 和 1 个 Service,手动管理 10+ 个 YAML 文件极易遗漏或冲突。Helm 将这一切封装为 gatekeeper-3.18.x.tgz,一条命令即可完成安装、升级和卸载。
Helm 三层抽象架构 Helm 三层抽象架构 Chart(包定义) 模板 + values.yaml + 依赖 Release(运行实例) v1, v2, v3 ... 版本化 Repository(仓库) Chart 索引与分发 📦 工作流程说明 1. 开发者将模板、默认值和依赖打包为 Chart,上传至 Repository。 2. 用户执行 helm install,Helm 从 Repository 拉取 Chart。 3. Helm 将 Chart 模板与用户提供的 values 渲染为最终 YAML,创建 Release。 4. 每次升级生成新 Release 版本,支持 helm rollback 回退。

4.2 Helm 安装步骤

Helm 的安装方式因操作系统而异,以下以 Linux (amd64) 环境为例,这也是 Gatekeeper 冷启动测试中最常见的部署平台。

4.2.1 方式一:使用官方安装脚本(推荐)

# 下载并执行官方安装脚本
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

# 验证安装
helm version --short

4.2.2 方式二:手动下载二进制包

# 下载指定版本(以 v3.16.3 为例)
wget https://get.helm.sh/helm-v3.16.3-linux-amd64.tar.gz

# 解压并移动到 PATH
tar -zxvf helm-v3.16.3-linux-amd64.tar.gz
sudo mv linux-amd64/helm /usr/local/bin/helm

# 验证
helm version --short

4.2.3 方式三:包管理器安装

操作系统 命令
macOS (Homebrew) brew install helm
Windows (Chocolatey) choco install kubernetes-helm
Ubuntu/Debian (Snap) sudo snap install helm --classic
✅ 安装后必做操作:添加 Gatekeeper 官方仓库
helm repo add gatekeeper https://open-policy-agent.github.io/gatekeeper/charts
helm repo update
执行后即可通过 helm search repo gatekeeper 查看可用版本。

4.3 Helm 常用命令

以下命令覆盖了从仓库管理到 Release 生命周期的完整操作链,是 Gatekeeper 部署与测试中的高频指令。

4.3.1 仓库管理

命令 说明 示例
helm repo add 添加 Chart 仓库 helm repo add gatekeeper https://open-policy-agent.github.io/gatekeeper/charts
helm repo list 列出已添加的仓库 helm repo list
helm repo update 更新本地仓库索引 helm repo update
helm repo remove 移除仓库 helm repo remove gatekeeper

4.3.2 Chart 搜索与查看

命令 说明 示例
helm search repo 在已添加的仓库中搜索 Chart helm search repo gatekeeper
helm show values 查看 Chart 的默认 values helm show values gatekeeper/gatekeeper
helm show chart 查看 Chart 元信息 helm show chart gatekeeper/gatekeeper

4.3.3 Release 生命周期管理

命令 说明 示例(Gatekeeper 场景)
helm install 安装 Chart 生成 Release helm install gatekeeper gatekeeper/gatekeeper --namespace gatekeeper-system --create-namespace
helm upgrade 升级 Release helm upgrade gatekeeper gatekeeper/gatekeeper --namespace gatekeeper-system --set replicas=3
helm list 列出当前命名空间的 Release helm list -n gatekeeper-system
helm history 查看 Release 版本历史 helm history gatekeeper -n gatekeeper-system
helm rollback 回滚到指定版本 helm rollback gatekeeper 1 -n gatekeeper-system
helm uninstall 卸载 Release helm uninstall gatekeeper -n gatekeeper-system

4.3.4 调试与渲染

命令 说明 示例
helm template 本地渲染模板(不安装) helm template gatekeeper gatekeeper/gatekeeper --output-dir ./rendered
helm lint 检查 Chart 语法 helm lint ./my-chart
helm get manifest 查看已安装 Release 的 YAML helm get manifest gatekeeper -n gatekeeper-system
Helm 常用命令工作流 Helm 常用命令工作流 helm repo add helm install helm upgrade helm rollback helm list helm history helm uninstall 💡 冷启动测试中,helm template 用于预检渲染结果,helm upgrade --set 用于动态调整 Gatekeeper 副本数。

4.4 安装验证与常见问题

⚠️ 常见问题排查
  • 问题:helm install 报错 connection refused — 检查 KUBECONFIG 环境变量是否正确指向目标集群。
  • 问题:helm repo update 超时 — 确认网络能访问 https://open-policy-agent.github.io,必要时配置代理。
  • 问题:Release 状态为 pending-install — 使用 helm rollback 回退后重新安装,或 helm uninstall 后重试。