简介:
Helm 是 Kubernetes 的包管理工具,使用 Chart 来打包、配置和发布应用。下面列出常见命令与示例,基于 Helm 3。

仓库管理:

1
2
3
4
5
6
helm version                                  # 查看 Helm 版本
helm repo add NAME URL # 添加 chart 仓库
helm repo update # 更新本地仓库索引
helm repo list # 列出已添加的仓库
helm search repo KEYWORD # 在已添加仓库中搜索 chart
helm search hub KEYWORD # 在 Helm Hub 搜索(需网络)

安装与升级:

1
2
3
4
5
6
7
8
9
10
11
12
13
helm install RELEASE_NAME CHART               # 安装 chart,RELEASE_NAME 可自定义
helm install RELEASE_NAME CHART --namespace ns --create-namespace # 指定命名空间并创建
helm upgrade RELEASE_NAME CHART # 升级已存在的 release
helm upgrade --install RELEASE_NAME CHART # 若不存在则安装(常用)
helm uninstall RELEASE_NAME --namespace ns # 卸载 release

常用选项(安装/升级):
--values/-f values.yaml # 使用 values 文件
--set key=val # 覆盖单个值(可多次)
--set-file key=path # 从文件读取值
--set-string key=val # 强制字符串
--namespace N # 指定命名空间
--wait --timeout 300s --atomic # 等待所有资源就绪,失败时回滚

发布管理与查看:

1
2
3
4
5
helm list --all-namespaces                   # 列出所有 release
helm status RELEASE_NAME --namespace ns # 查看 release 状态
helm history RELEASE_NAME --namespace ns # 查看 release 历史(修订)
helm rollback RELEASE_NAME REVISION # 回滚到指定修订
helm uninstall RELEASE_NAME # 卸载 release

获取详情与调试:

1
2
3
4
5
6
helm get all RELEASE_NAME --namespace ns     # 获取 release 的所有信息(manifest、hooks、values)
helm get manifest RELEASE_NAME --namespace ns
helm get values RELEASE_NAME --namespace ns # 查看当前生效的 values
helm test RELEASE_NAME --namespace ns # 运行 chart 的测试(若 chart 包含 test hook)
helm template RELEASE_NAME CHART --values v.yaml # 渲染模板到本地,仅查看生成的 manifest(不安装)
helm lint CHART_DIR # 检查 chart 合规性

Chart 操作与打包:

1
2
3
4
helm show chart CHART         # 显示 Chart.yaml 内容
helm show values CHART # 显示 chart 的默认 values
helm package PATH # 将 chart 目录打包为 .tgz
helm repo index --merge index.yaml . # 生成/更新仓库索引(用于本地仓库)

依赖管理:

1
2
helm dependency update CHART_DIR    # 从 Chart.yaml 下载并更新 charts/ 目录
helm dependency build CHART_DIR # 构建依赖(离线场景)

插件与环境:

1
2
helm plugin list              # 列出已安装插件
helm env # 显示 Helm 环境信息

小结示例:

1
2
3
4
5
6
7
8
# 添加仓库并安装 nginx chart 到 my-nginx release
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
helm install my-nginx bitnami/nginx --namespace web --create-namespace -f values.yaml

# 灰度升级(先渲染检查)
helm template my-app ./charts/my-app -f values.prod.yaml
helm upgrade --install my-app ./charts/my-app --namespace prod -f values.prod.yaml --atomic --wait --timeout 5m

高级与实用技巧:

  • 使用 –kube-context CONTEXT 在多集群环境中切换上下文。
  • 使用 –atomic 和 –wait 在自动回滚与等待就绪之间取得平衡。
  • 使用 –timeout 控制等待超时。
  • 对复杂的多值覆盖,优先使用 values 文件并用 –set 做小幅覆盖。
  • 开发时常用 helm template + kubectl apply -f - 进行逐步调试。
  • 对大型团队可结合 CI/CD(如 GitHub Actions、GitLab CI)执行 helm upgrade –install。