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,一条命令即可完成安装、升级和卸载。
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/chartshelm 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 |
4.4 安装验证与常见问题
⚠️ 常见问题排查
- 问题:
helm install报错connection refused— 检查KUBECONFIG环境变量是否正确指向目标集群。 - 问题:
helm repo update超时 — 确认网络能访问https://open-policy-agent.github.io,必要时配置代理。 - 问题:Release 状态为
pending-install— 使用helm rollback回退后重新安装,或helm uninstall后重试。