一、Helm介绍和使用场景¶
1.1 什么是Helm¶
Helm是Kubernetesl的包管理器,类似于Linux.上的apt或yum,可以用包的形式工程化管理和部署复杂的Kubernetes.应用程序,比如一键安装zookeeper集群、一键部署整个项目等。
Helm核心概念:
- Helm:Helm的管理工具
- Chart:Helm的包,是一个包含Kubernetes资源定义的安装文件包
- Release:Helm每次部署会产生一个Release,可以用于回滚等
- Repository:Helm Chart存储库,用于存储和分发Chart
1.2 Helm主要功能¶
Helm主要功能如下:
- 资源管理:Helm Chart是一组预定义的YAML文件,描述了Kubernetes应用程序的各个组件配置与模板
- 版本控制:Helm支持版本控制,可以轻松回滚到之前的版本
- 依赖管理:Charts可以声明依赖关系,Helm可以自动解析并安装这些依赖
- 模板化:Charts可以使用Go的模板语言,动态生成资源文件
1.3 Helm使用步骤¶

| 维度 | 传统方式 | Helm 方式 |
|---|---|---|
| 配置管理 | 手动修改文件,易出错 | 通过 values.yaml 集中管理,可版本控制 |
| 依赖处理 | 需手动安装依赖组件 | 自动解析依赖(如 Chart 中的 requirements.yaml) |
| 部署效率 | 步骤繁琐,适合单次部署 | 一键部署,适合重复操作(DevOps 流水线) |
| 集群化支持 | 需手动配置节点和网络 | 内置集群模板(如 StatefulSet 配置) |
| 维护成本 | 高(扩缩容、升级复杂) | 低(支持 helm upgrade 和回滚) |
适用场景:
- 传统方式:
- 组件无现成 Helm Chart。
- 需要深度定制化配置(如内核参数调优)。
- Helm 方式:
- 标准化部署(如微服务、中间件)。
- 多环境(开发、测试、生产)一致性要求高。
1.4 Helm安装¶
1.4.1 下载helm包¶
Helm官方安装文档:https://helm.sh/docs/intro/install/
Helm安装包:https://get.helm.sh/helm-v3.16.2-linux-amd64.tar.gz
1.打开Helm-3.16.2,点击【Linux amd64】下载压缩包

说明:目前已更新至3.17.2版本
2.等待下载完成,将压缩包上传到linux机器上(可以使用xftp或者rz进行上传)
1.4.2 安装helm¶
1.解压压缩包
$ tar -zxvf helm-v3.16.2-linux-amd64.tar.gz
$ cd linux-amd64/
$ ls
helm LICENSE README.md
2.在解压目中找到helm程序,移动到需要的目录中
$ mv /root/linux-amd64/helm /usr/local/bin/helm
3.出现以下版本信息代表安装成功
[root@k8s-master01 ~]# helm version
version.BuildInfo{Version:"v3.16.2", GitCommit:"13654a52f7c70a143b1dd51416d633e1071faffb", GitTreeState:"clean", GoVersion:"go1.22.7"}
1.4.3 添加稳定仓库¶
1.添加稳定仓库
$ helm repo add bitnami https://charts.bitnami.com/bitnami
$ helm repo add stable https://charts.helm.sh/stable
2.验证仓库是否添加,观察到仓库已经添加
$ helm repo list
NAME URL
bitnami https://charts.bitnami.com/bitnami
stable https://charts.helm.sh/stable
二、Helm仓库分类¶
2.1 Helm常用仓库类型¶
Helm 支持以下几种主流仓库类型:
1. HTTP/HTTPS 仓库(传统方式)
- 说明:通过 HTTP 协议存储 Helm Chart 的仓库,是 Helm 早期的标准方案。
- 典型实现:
chartmuseum、Nexus、Artifactory 等。 - 特点:
- 图表以压缩包(
.tgz)形式存储在服务器目录中。 - 通过
index.yaml文件索引图表元数据。 - 支持基本认证(如用户名 / 密码)或 API 密钥。
2. OCI 仓库(Open Container Initiative)
- 说明:基于容器镜像标准(OCI Image Spec)的仓库,Helm 3.4+ 开始支持。
- 典型实现:Docker Hub、Harbor、Amazon ECR、Google GCR 等。
- 特点:
- 图表作为容器镜像的一层存储(
application/vnd.helm.chart媒体类型)。 - 兼容容器生态的认证、镜像签名、分层存储等特性。
3. 其他类型
- 本地仓库:直接引用本地目录或压缩包(如
helm install ./mychart)。 - Git 仓库:通过 Git URL 引用 Chart(需
helm pull --git命令)。
2.2 Helm常用仓库类型对比¶
1、访问方式对比
| 维度 | chartmuseum(HTTP 仓库) | OCI 仓库 |
|---|---|---|
| 仓库地址格式 | http(s)://<host>/<path>(如 http://chartmuseum:8080) |
oci://<registry>/<repo>(如 oci://ghcr.io/org/helm-charts) |
| 认证方式 | 基本认证(helm repo add --username --password) |
Docker 认证(helm registry login 或 .docker/config.json) |
| 存储位置 | 独立服务器存储 Chart 压缩包 | 容器注册表存储镜像(含 Chart 层) |
2、命令行操作对比
(1)添加仓库
chartmuseum:
helm repo add my-chartmuseum http://chartmuseum:8080 \
--username myuser --password mypass # 可选认证
OCI 仓库:
# 登录(可选,自动读取 ~/.docker/config.json)
helm registry login ghcr.io --username myuser --password mypass
# 无需显式添加仓库,直接引用 OCI 地址
(2)安装Chart
chartmuseum:
helm install my-app my-chartmuseum/mychart --version 2.0.0
OCI 仓库:
# 完整格式
helm install my-app oci://ghcr.io/org/mychart --version 2.0.0
# 简写(需提前通过 helm repo add 关联 OCI 仓库)
helm repo add my-oci-repo oci://ghcr.io/org
helm install my-app my-oci-repo/mychart --version 2.0.0
(3)推送Chart
chartmuseum:
helm package mychart # 打包
helm push mychart-2.0.0.tgz my-chartmuseum
OCI 仓库:
helm package mychart --version 2.0.0
helm push mychart-2.0.0.tgz oci://ghcr.io/org/mychart
(4)列出仓库Chart
chartmuseum:
helm search repo my-chartmuseum
OCI 仓库:
helm search registry oci://ghcr.io/org
3、优缺点对比
| 维度 | chartmuseum | OCI 仓库 |
|---|---|---|
| 生态集成 | 专用于 Helm,需独立部署和维护 | 与容器生态(如 Docker、K8s)深度集成,无需额外组件 |
| 存储效率 | 每个 Chart 单独存储,可能有冗余 | 利用容器镜像分层存储,节省空间 |
| 安全性 | 支持基本认证和 TLS,但需额外配置 | 支持镜像签名、细粒度权限控制(如 Docker 角色) |
| 学习成本 | 命令与 Helm 传统方式一致,上手快 | 需熟悉 OCI 命令(如 helm registry) |
4、小结
- 推荐场景:
- chartmuseum:适合自建 K8s 集群内部使用,快速搭建 Helm 仓库。
- OCI 仓库:适合与容器镜像统一管理,或使用公有云注册表(如 ECR、ACR)。
- 趋势:OCI 是 Helm 官方推荐的未来方向,与容器生态的兼容性更强,但 chartmuseum 仍在传统场景中广泛使用。