helm 3 安装需用官方脚本并校验 checksum,装后必须配置仓库并执行 helm repo update 才能查找 chart;部署应使用 helm upgrade --install 实现幂等,配合 helm template 预检 yaml 可大幅降低模板错误风险。

Helm 客户端在 Linux 上能直接装,但装完不配置仓库、不验证上下文,helm install 会立即报错“no chart found”或“connection refused”。
用官方脚本安装 Helm 3 最省事,但得确认 curl 和 bash 可用
这是网络通畅时最快的方式,适合开发机或 CI 环境初始化。它自动校验 checksum、解压、放 /usr/local/bin/helm,并跳过 Tiller(Helm 3 已移除)。
- 执行前先检查:
curl --version和bash --version都得有输出 - 脚本地址已更新为 GitHub main 分支最新版:
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 - 别跳过校验步骤:脚本默认启用 SHA256 校验,若手动下载二进制包,务必核对
sha256sum helm与 Release 页面公布的哈希值 - 装完立刻跑
helm version—— 如果显示Error: Kubernetes cluster unreachable,不是 Helm 没装好,而是kubeconfig缺失或权限不对
helm repo add 后必须跟 helm repo update,否则所有 chart 操作都失败
很多人卡在这步:加了 Bitnami 仓库却搜不到 nginx,helm search repo nginx 返回空。原因就是只写了 helm repo add bitnami https://charts.bitnami.com/bitnami,没触发索引同步。
-
helm repo add只改本地~/.helm/repository/repositories.yaml,不拉远程index.yaml -
helm repo update才真正发起 HTTP 请求下载索引,耗时取决于网络;CI 脚本里漏掉这句,后续helm install必报no chart name found - 私有 Harbor 仓库需提前登录:
helm registry login harbor.example.com -u admin -p 'xxx',否则helm pull会卡在 401 - 国内用户可换镜像源加速:
helm repo add bitnami https://mirrors.tuna.tsinghua.edu.cn/bitnami/charts/,但注意清华源同步有延迟,新 chart 可能晚几小时
helm upgrade --install 是唯一安全的部署命令,helm install 在 CI 中基本不能用
直接用 helm install 在重复执行的 CI 流程里必然失败:“release already exists”。而 helm upgrade 又要求 release 必须存在——--install 把两者合并成幂等操作。
- 首次运行:创建 release 并部署资源
- 后续运行:识别已有 release,执行升级(diff + patch)
- 必须显式指定
--namespace,否则默认落到default,和多数集群的 namespace 隔离策略冲突 -
--atomic开启后失败自动回滚,但会阻塞命令直到超时(默认 5m),调试阶段建议关掉,用--dry-run --debug先看生成的 YAML - 想强制覆盖整个 values 结构(比如清掉 ingress),不能只删 prod.yaml 里某段,得写
ingress: {}显式置空
用 helm template 预检 YAML 再部署,比直接 upgrade 少踩 70% 的语法坑
很多“部署失败”根本不是 Kubernetes 权限或资源问题,而是 Go 模板写错、{{ .Values.foo }} 引用空字段、或者嵌套 map 没对齐导致 YAML 解析失败。这类错误在 helm upgrade 里常被包装成模糊的 “failed to install CRD”,排查成本极高。
-
helm template myapp ./mychart -f values.yaml --namespace prod直接输出渲染后的 YAML 到 stdout,可用yq或grep快速验证字段是否存在 - CI 中建议加一步:
helm template ... | kubectl apply --dry-run=client -f -,让 kubectl 做 client-side schema 校验 -
helm lint只查 Chart 结构(Chart.yaml、values.yaml 格式等),不校验模板逻辑,别误以为它能代替template - 离线环境部署前,用
helm pull --version 1.2.3 bitnami/nginx下载 tar.gz 包,再helm install本地路径,避免 runtime 拉取失败
最易被忽略的是 kubeconfig 的 context 和 namespace 权限——helm version 成功不代表能 deploy,kubectl auth can-i --list 才能看出当前用户是否有 create deployments 权限。Helm 不报 RBAC 错误,它把错误原样透传给 Kubernetes API,日志里就一句 “forbidden”。











