Lazy loaded image
helm 管理 Kubernetes 集群软件
Words 1552Read Time 4 min
2026-1-3
2026-1-3
date
related_level
slug
type
relate_date
summary
status
tags
category
last_updated
Jan 3, 2026 11:03 PM
是否已更新
orginal_page
是否推荐
参考资料
三大概念 Chart, Repository, Release
  • 类似于 docker 的 image, registry, container
  • Chart 包含在 Kubernetes 集群内运行应用程序、工具或服务所需的所有资源定义
  • Repository 是收集和共享 Chart 的地方
  • Release 是 Kubernetes 集群中运行的 Chart 的一个实例
debian/ubuntu 安装 helm
简单版本:一键脚本安装
  • sudo apt-get update && sudo apt-get install gnupg apt-transport-https --yes
    • 前置依赖工具
  • curl -sfL https://baltocdn.com/helm/signing.asc | gpg --dearmor | sudo tee /usr/share/keyrings/helm.gpg > /dev/null
    • 添加 gpg 公钥
  • echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/helm.gpg] https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
    • 添加至 sources.list
  • sudo apt-get update && sudo apt-get install helm
helm 按以下顺序安装资源
  • Namespace
  • NetworkPolicy
  • ResourceQuota
  • LimitRange
  • PodSecurityPolicy
  • PodDisruptionBudget
  • ServiceAccount
  • Secret
  • SecretList
  • ConfigMap
  • StorageClass
  • PersistentVolume
  • PersistentVolumeClaim
  • CustomResourceDefinition
  • ClusterRole
  • ClusterRoleList
  • ClusterRoleBinding
  • ClusterRoleBindingList
  • Role
  • RoleList
  • RoleBinding
  • RoleBindingList
  • Service
  • DaemonSet
  • Pod
  • ReplicationController
  • ReplicaSet
  • Deployment
  • HorizontalPodAutoscaler
  • StatefulSet
  • Job
  • CronJob
  • Ingress
  • APIService
 

helm 基本使用

使用 helm 管理 repo
  • helm repo list
  • helm repo add <repo-name> <repo-url> 添加 repo 到本地 helm 客户端
  • helm repo update
  • helm repo remove
使用 helm 管理 chart
查找 chart
  • Helm 搜索使用模糊字符串匹配算法
  • helm search hub <keyword> 搜索 Artifact Hub 上公开可用的 repo
    • --list-repo-url 显示 repo 实际 url
  • helm search repo <keyword> 搜索已添加到本地 helm 客户端的 repo
  • 自行创建 chart
    • helm create <chart-name>
    • helm lint <chart-filepath>
      • 验证格式是否正确
    • helm package <chart-name>
使用 helm 管理 Release
安装前自定义 chart
  • helm show values <chart-name> > value.yaml
    • 查看图表上可配置的选项
  • 通过 -f value.yaml 或者 --set 来覆盖对应配置项
    • -f values.yaml 传递自定义选项并覆盖 chart 对应默认设置
      • 可以多次指定,最右边的文件将优先
      --set name=value 通过命令行上指定覆盖
      • 同时使用--set值,则将合并到优先级更高的--values
      支持以下键值格式
      • a=b,c=d
      • outer.inner=value
      • name={a, b, c}
      • name=[],a=null
        • 空数组和空值
      • servers[0].port=80
        • 数组索引,从 Helm 2.5.0 开始支持
      • name=value1\,value2
helm install 自定义样例
  • helm install -f value.yaml <release-name> <repo>/<chart-name>
  • helm install --set key1=value1,key2=value2 <release-name> <repo>/<chart>
helm install 支持本地 chart 压缩文件、chart 目录、网址
  • helm install foo foo-0.1.1.tgz
  • helm install foo path/to/foo
  • helm install foo https://example.com/charts/foo-1.2.3.tgz
拉取 chart 到本地再安装
  • helm pull --untar <repo>/<chart-name>
    • ls <chart-name>
    • helm install <release-name> ./<chart-name>
跟踪 Release 的状态,发布历史,或者读取配置信息
  • helm list
    • 查看部署的所有 Release
    • --all 将显示 Helm 保留的所有发布记录,包括失败或已删除项目的记录
  • helm status <release-name>
  • helm history <release-name>
  • helm get values <release-name>
更新 Release 或更改配置
  • helm upgrade <release-name> <chart-name>
回滚 Release
  • helm rollback <release-name> <revision>
    • 每次安装、升级或回滚时,<revision> 都会增加 1
    • 第一个 <revision> 始终为 1
卸载 Release
  • helm uninstall <release-name>
安装/升级/回滚的实用选项
  • --wait :等待所有资源就绪,否则将失败回退,等待时间将根据 --timeout 值而定
    • 所有资源就绪具体是指
      • 所有 Pod 都处于就绪状态
      • PVC 已绑定
      • Deployment 中处于就绪状态的 Pod 数量达到最低要求( Desired 数量减去 maxUnavailable )
        • 在部署 replicas 设置为 1 且 maxUnavailable 未设置为 0(作为滚动更新策略的一部分)的情况下, --wait 将返回就绪状态
      • Service 拥有 IP 地址(如果是 LoadBalancer ,则还需要 Ingress 地址)
    • --timeout 值默认为 5m0s
  • --no-hooks :将跳过运行该命令的钩子
    • Hook 是具有特殊注解的 Kubernetes 资源,用于在特定阶段(pre-install, post-install 等)执行特定任务
 

helm 自定义 Chart

  • 参考资料
    • Charts | Helm
Chart 文件目录结构
Chart.yaml 文件包含以下字段
Chart 依赖关系
Chart template 和 values
helm 中的 Custom Resource Definitions (CRDs)
  • CRD 在 helm 被视为一种特殊类型的对象
  • CRD 文件应放置在 chart 的 crds/ 目录中,会在 chart 的其他部分之前安装,并且受到一些限制
    • CRD 文件不能使用模板 ,必须是纯 YAML 文档
CRD 限制
  • CRD 永远不会重新安装
    • 如果 Helm 确定 crds/ 中的 CRD 已经存在(无论版本如何),则Helm 将不会尝试安装或升级
  • CRD 不会在升级或回滚时安装
    • Helm 只会在安装操作时创建 CRD
  • CRD 永远不会被删除
    • 删除 CRD 会自动删除集群中所有命名空间中该 CRD 的所有内容
helm 管理自定义 Chart
  • helm create <chartname>
  • helm lint <chartname>
    • 语法检查
  • helm package <chartname>
    • 打包为 tar 文件
  • helm push <chartname>-0.1.0.tgz oci://localhost:5000/helm-charts
    • 推送到支持 chart 的 registry
上一篇
OpenstackClient 使用指南
下一篇
kustomize 声明式配置管理工具

Comments
Loading...