Helm Helm

从 Artifact Hub 查找并安装已发布的 Chart

搜索别人已经写好的 chart,在安装之前检查它,并只覆盖你需要的部分。

8 min 初级

你会在 Kubernetes 中运行的大多数基础设施软件,监控栈、ingress 控制器、数据库,都已经有已发布的 chart。本指南介绍如何找到一个、在投入使用之前检查它实际会安装什么,以及为你的环境覆盖它的默认值。

无需先添加仓库即可搜索

helm search hub prometheus

helm search hub 查询 Artifact Hub,这是 CNCF 对来自许多不同仓库的 chart(以及其他云原生包)建立的索引,无需先在本地添加该仓库。这是了解有哪些选择以及由谁发布的最快方式。直接浏览 artifacthub.io 可以得到同样的目录,而且在比较各种选项、阅读 chart 的 README 以及查看其最近更新时间方面,界面更好。(这个搜索过去走的是一个独立的 “Helm Hub”;该服务已于 2020 年停用并并入 Artifact Hub,所以多年来 helm search hub 查询的一直是 Artifact Hub。)

添加仓库并搜索已添加的内容

选定来源后,添加它并在本地搜索:

helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
helm search repo prometheus-community

helm repo add 按名称注册一个 chart 仓库;helm repo update 刷新 Helm 本地对每个已添加仓库所提供内容的索引。helm search repo(注意:是 repo,不是 hub)只搜索你已添加的仓库,一旦你知道 chart 来自哪里,日常就用它。helm repo list 显示当前注册的所有仓库。

安装之前先检查 chart

永远不要盲目安装 chart,尤其是权限广泛或管理存储的 chart:

helm show chart prometheus-community/prometheus
helm show readme prometheus-community/prometheus
helm show values prometheus-community/prometheus

show chart 给出元数据(版本、维护者、依赖)。show readme 是发布者自己的安装和配置说明,通常是了解 chart 期望什么的最快方式。show values 打印它完整的默认 values.yaml,这才是你可以覆盖内容的真正参考,比任何 README 都更完整。

使用你自己的覆盖进行安装

helm install monitoring prometheus-community/prometheus \
  -n monitoring --create-namespace \
  --set server.retention=15d \
  --set alertmanager.persistentVolume.size=10Gi

--create-namespace 省去了单独的 kubectl create namespace 步骤。环境特定 values 指南中的一切在这里同样适用:对于超出快速测试的任何场景,请把你的覆盖写进 values 文件并用 -f 传入,而不是累积一堆 --set 参数,这样你安装的内容就可以从版本控制中的文件复现。

# monitoring-values.yaml
server:
  retention: 15d
alertmanager:
  persistentVolume:
    size: 10Gi
helm upgrade --install monitoring prometheus-community/prometheus \
  -n monitoring --create-namespace -f monitoring-values.yaml

有意识地固定版本

如果没有 --version,helm install 会使用可用的最新 chart 版本,这可能在你编写 values 文件和实际运行命令之间发生变化:

helm search repo prometheus-community/prometheus --versions
helm install monitoring prometheus-community/prometheus --version 25.8.0 -n monitoring

对于超出本地实验的任何场景,固定版本是标准做法,原因与你固定容器镜像标签而不是漂浮在 latest 上相同:这是一次你可以复现的部署与一次你只能寄望与上次相同的部署之间的区别。

热门指南