第四部分:Helm 快速入门

📝 前言

在日常使用 Kubernetes 时,你可能已经体验过以下“痛点”:

  • 想部署一个 MySQL,需要编写一堆 YAML 文件
  • 想升级版本,要改动多个文件并手动 apply
  • 想回滚版本,根本记不清上一次部署的配置
  • 想让团队共享模板,却得拷贝一堆文件夹

这就是 Helm 出现的意义。

它让部署变得像安装软件包一样简单:一行命令即可安装完整应用栈。

🧭 背景介绍

Kubernetes 本身的强大毋庸置疑,但它的配置复杂性也是众所周知的。

随着集群规模增长、应用数量增多,纯手动管理 YAML 清单会遇到这些问题:

问题 说明
重复定义 不同项目需要相似的 YAML 模板,手写容易出错
版本混乱 不同环境使用不同版本,难以追踪
部署不一致 开发、测试、生产环境差异过大
缺乏统一管理 无法快速升级、回滚、查看变更历史

Helm 的出现解决了上述问题:

标准化应用打包(Chart)

可配置模板化部署(values.yaml)

版本化与依赖管理

一键安装、升级、回滚

可以说,Helm 是 Kubernetes 应用的“包管理器 + 自动化部署工具”。

📋 前提条件

  • 已安装部署 kubernetes 集群

PS:可参看之前文章一键部署:第四部分:使用 sealos 部署集群

🚀 详细步骤

1️⃣ 安装 Helm

1
2
3
4
5
6
7
8
# macOS 安装
brew install helm

# Linux 安装,如果是在集群节点上可直接通过 sealos 一键安装
sealos run registry.cn-shanghai.aliyuncs.com/labring/helm:v3.10.0

# 安装完成后验证版本
helm version

2️⃣ Helm 基本概念

概念 说明
Chart 一个 Helm 包,包含部署某个应用所需的所有 Kubernetes 清单文件
Repository(仓库) 存放 Charts 的远程或本地位置
Release(发布) Chart 的一次部署实例,Helm 会将 Chart + 配置部署成一个独立的应用实例

3️⃣ Helm 常用命令

1、添加仓库

1
2
3
helm repo add <仓库名> <仓库URL>
# 示例:添加官方的 Bitnami 仓库
helm repo add bitnami https://charts.bitnami.com/bitnami

2、更新仓库

1
2
# 获取仓库中最新的 Chart 列表和版本信息
helm repo update

3、搜索 Chart

1
2
3
4
5
# 在仓库中搜索
helm search repo <关键词>

# 示例:搜索 Nginx
helm search repo nginx

4、拉取 Chart 到本地

1
2
3
helm pull <仓库名>/<Chart名> --version <版本号>
# 示例:拉取特定版本的 Nginx Chart 并解压
helm pull bitnami/nginx --version 13.2.21 -d ./charts --untar

5、安装与升级

1
2
3
4
5
6
7
8
9
10
11
# 安装 Release
helm install <Release名称> <仓库名>/<Chart名> -n <命名空间> --create-namespace

# 示例:在 my-web 命名空间中安装一个名为 my-nginx 的 Nginx
helm install my-nginx bitnami/nginx -n my-web --create-namespace

# 升级 Release
helm upgrade <Release名称> <Chart路径或名> -f values.yaml -n <命名空间>

# 示例:升级 my-nginx 并设置新的镜像标签
helm upgrade my-nginx bitnami/nginx --set image.tag=latest -n my-web

6、回滚版本

1
2
3
4
5
6
7
8
# 回滚 Release
helm rollback <Release名称> <修订版本号> -n <命名空间>

# 示例:回滚到上一个版本
helm rollback my-nginx 1 -n my-web

# 查看历史版本
helm history <Release名称> -n <命名空间>

7、查看 Release

1
2
3
4
5
6
7
8
9
# 列出所有命名空间的 Release
helm list -A
# 列出特定命名空间的 Release
helm list -n <命名空间>

# 查看生成的 Kubernetes 清单文件
# 这个命令非常有用,它不会真正安装,而是渲染 Chart 模板,
# 让你看到最终会生成什么样的 YAML 文件
helm template <Release名称> <Chart路径或名> -f values.yaml

8、卸载 Release

1
2
3
helm uninstall <Release名称> -n <命名空间>
# 示例:卸载 my-nginx
helm uninstall my-nginx -n my-web

4️⃣ 创建自己的 Chart

1、创建空模板

1
helm create mychart

目录结构示例:

1
2
3
4
5
mychart/
├── Chart.yaml # Chart 元信息
├── values.yaml # 默认参数
├── templates/ # 模板文件(K8s YAML)
└── charts/ # 依赖的子Chart

2、打包与发布

1
2
3
4
5
6
7
8
9
10
helm package mychart
# 生成以下打包的文件:
mychart-0.1.0.tgz

# 你可以将它上传到自建仓库,例如:Harbor
# 登录 harbor
helm registry login harbor.luhome.com

# 上传发布
helm push mychart-0.1.0.tgz oci://harbor.luhome.com/library

✅ 总结

Helm 让 Kubernetes 的部署管理更加优雅、高效。
从单一应用到复杂微服务系统,Helm 都能帮助我们:

✅ 快速安装
✅ 简化配置
✅ 统一版本管理
✅ 安全回滚升级

📎 参考文章