Helm仓库管理

概述

官方文档:https://helm.sh/zh/docs/topics/chart_repository/

官方仓库:https://artifacthub.io/

Helm 仓库(Repository)是存储 Helm 图表(Chart)的地方,类似于软件包管理器的仓库(如 apt、yum 仓库)。

Helm 仓库是一个 HTTP 服务器,用于存储和共享 Helm Chart 的压缩包(.tgz 文件)及相关索引文件(index.yaml)。

索引文件(index.yaml)记录了仓库中所有 Chart 的元数据(名称、版本、描述等),供 Helm 客户端查询和下载。

常见的仓库类型

  • 官方仓库:Helm 官方维护的仓库(已归档,现推荐使用 Artifact Hub 查找社区 Chart)。
  • 社区仓库:如 BitnamiJetstack 等组织提供的仓库。
  • 私有仓库:企业内部自建的仓库,用于管理私有 Chart。

常用的helm仓库

Helm仓库管理常用配置

添加仓库

将仓库地址添加到 Helm 客户端的本地配置中

复制代码
# 语法
helm repo add [仓库名称] [仓库地址]

# 示例
[root@master ~]# helm repo add prometheus https://prometheus-community.github.io/helm-charts
"prometheus" has been added to your repositories
[root@master ~]# helm repo add grafana https://grafana.github.io/helm-charts
"grafana" has been added to your repositories

更新仓库索引

Helm 客户端需要定期更新仓库索引,以获取最新的 Chart 列表和版本信息。

复制代码
[root@master ~]# helm repo update
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "grafana" chart repository
...Unable to get an update from the "prometheus" chart repository (https://prometheus-community.github.io/helm-charts):
        read tcp [fdbd:dc01:ff:318:3ebb:26f3:26ff:6026]:39074->[2606:50c0:8001::153]:443: read: connection reset by peer
Update Complete. ⎈Happy Helming!⎈

列出本地仓库

查看当前配置的所有仓库及其地址。

复制代码
[root@master ~]# helm repo list
NAME            URL
prometheus      https://prometheus-community.github.io/helm-charts
grafana         https://grafana.github.io/helm-charts 

删除仓库(Remove Repository)

从本地配置中移除不再需要的仓库。

复制代码
#语法
helm repo remove [仓库名称]

# 示例
[root@master ~]# helm repo remove grafana
"grafana" has been removed from your repositories
[root@master ~]# helm repo list
NAME            URL                                               
prometheus      https://prometheus-community.github.io/helm-charts

搜索仓库中的 Chart(Search Charts)

从仓库中搜索符合条件的 Chart,支持模糊匹配。

复制代码
# 语法
helm search repo [关键词]

# 示例
[root@master ~]# helm search repo grafana
NAME                                    CHART VERSION   APP VERSION     DESCRIPTION                                       
grafana/grafana                         9.2.2           12.0.1          The leading tool for querying and visualizing t...
grafana/grafana-agent                   0.42.0          v0.42.0         Grafana Agent                                     
grafana/grafana-agent-operator          0.5.1           0.44.2          A Helm chart for Grafana Agent Operator           
grafana/grafana-operator                v5.18.0         v5.18.0         Helm chart for the Grafana Operator               
grafana/grafana-sampling                1.1.5           v1.7.5          A Helm chart for a layered OTLP tail sampling a...

查看指定仓库中Chart的版本

复制代码
# 语法
helm search repo [chart名称] --versions

# 示例
[root@master ~]# helm search repo prometheus/kube-prometheus-stack --versions
NAME                                    CHART VERSION   APP VERSION     DESCRIPTION                                       
prometheus/kube-prometheus-stack        72.9.1          v0.82.2         kube-prometheus-stack collects Kubernetes manif...
prometheus/kube-prometheus-stack        72.9.0          v0.82.2         kube-prometheus-stack collects Kubernetes manif...
prometheus/kube-prometheus-stack        72.8.0          v0.82.2         kube-prometheus-stack collects Kubernetes manif...
prometheus/kube-prometheus-stack        72.7.0          v0.82.2         kube-prometheus-stack collects Kubernetes manif...
prometheus/kube-prometheus-stack        72.6.4          v0.82.2         kube-prometheus-stack collects Kubernetes manif...
prometheus/kube-prometheus-stack        72.6.3          v0.82.2         kube-prometheus-stack collects Kubernetes manif...
prometheus/kube-prometheus-stack        72.6.2          v0.82.2         kube-prometheus-stack collects Kubernetes manif...
prometheus/kube-prometheus-stack        72.6.1          v0.82.2         kube-prometheus-stack collects Kubernetes manif...
prometheus/kube-prometheus-stack        72.5.3          v0.82.2         kube-prometheus-stack collects Kubernetes manif...
prometheus/kube-prometheus-stack        72.5.2          v0.82.2         kube-prometheus-stack collects Kubernetes manif...
prometheus/kube-prometheus-stack        72.5.1          v0.82.2         kube-prometheus-stack collects Kubernetes manif...
prometheus/kube-prometheus-stack        72.5.0          v0.82.2         kube-prometheus-stack collects Kubernetes manif...
prometheus/kube-prometheus-stack        72.4.0          v0.82.2         kube-prometheus-stack collects Kubernetes manif...
prometheus/kube-prometheus-stack        72.3.1          v0.82.0         kube-prometheus-stack collects Kubernetes manif...

拉取远程仓库的chart

复制代码
# 语法,--version对应的是chart version,--untar自动解压,
# --destination:指定下载的 Chart 文件(.tgz)保存的目标目录(默认当前目录)。
# --repo [仓库URL]	直接从指定 URL 下载 Chart,而不使用已添加的仓库名称。
helm pull [chart名出] --version [版本号] --untar --destination [/path] --repo [仓库URL]

# 示例
[root@master ~]# helm pull prometheus/kube-prometheus-stack --version 72.9.0
[root@master ~]# ll kube-prometheus-stack-72.9.0.tgz 
-rw-r--r-- 1 root root 814664 Jun  3 14:45 kube-prometheus-stack-72.9.0.tgz

私有仓库相关命令

创建仓库索引文件

为本地 Chart 目录生成 index.yaml,用于搭建私有仓库。

复制代码
helm repo index [目录路径] --url [仓库URL]

推送 Chart 到私有仓库

复制代码
helm push [Chart路径] [仓库名称]