1. 什么是 Helm
Helm是一个Kubernetes的包管理工具,它可以帮助我们简化Kubernetes应用程序的部署和管理。使用Helm,可以将Kubernetes应用程序打包成易于安装、升级和卸载的chart包,并且可以在不同的Kubernetes环境中重复使用这些chart包。
2. Helm 三个概念
- Chart
- 代表着 Helm 包,即模板代码的集合
- Repository
- 用来存放和共享 charts 的地方
- Release
- 运行在 Kubernetes 集群中的 chart 的实例
3. 安装 Helm
# linux amd64
wget https://get.helm.sh/helm-v3.13.0-linux-amd64.tar.gz
tar -zxvf helm-v3.13.0-linux-amd64.tar.gz
cd linux-amd64
cp helm /usr/local/sbin
4. 快速入门
4.1. 添加 Repository 仓库
# 添加 Helm Char 仓库
helm repo add bitnami https://charts.bitnami.com/bitnami
# 查看添加的仓库列表
helm repo ls
# 更新 charts 列表
helm repo update
4.2. 搜索 Chart
# 搜索 charts 列表
helm search repo bitnami
# 搜索指定的 charts 包名,如 nginx
helm search repo nginx
4.3. 获取 Chart 包 Values.yaml
helm show values bitnami/mysql
# 写入文件
helm show values bitnami/mysql > values.yaml
4.4. 安装 Chart
# 安装 mysql(随机名称)
helm install bitnami/mysql --generate-name
# 安装 mysql(指定名称)
helm install happly-mysql bitnami/mysql
# 指定自定义的 values.yaml
helm install happly-mysql bitnami/mysql -f values.yaml
4.5. 查看 Release 状态
# 查看已经安装的 charts 列表
helm list / helm ls
# 查看状态
helm status happly-mysql
# 查看 Release 所有文件
helm get all happly-mysql
4.6. 升级 Release
helm upgrade happly-mysql bitnami/mysql
# 一条命令安装或升级版本
helm upgrade --install <release name> --values <values file> <chart directory>
4.7. 回滚 Chart
# 查看历史版本
helm history happly-mysql
# 回滚指定版本号
helm rollback happly-mysql 1
4.8. 卸载&恢复 Chart
# 以下两种命令都是卸载
helm uninstall happly-mysql
helm delete happly-mysql
# 卸载,但是保留版本
helm uninstall --keep-history happly-mysql
# 查看
helm list --uninstalled
helm history
# 恢复
helm rollback happly-mysql 1
5. 进阶 Chart
5.1. 目录结构
wordpress/
Chart.yaml # 包含了chart信息的YAML文件
LICENSE # 可选: 包含chart许可证的纯文本文件
README.md # 可选: 可读的README文件
values.yaml # chart 默认的配置值
values.schema.json # 可选: 一个使用JSON结构的values.yaml文件
charts/ # 包含chart依赖的其他chart
crds/ # 自定义资源的定义
templates/ # 模板目录, 当和values 结合时,可生成有效的Kubernetes manifest文件
templates/NOTES.txt # 可选: 包含简要使用说明的纯文本文件
5.2. 创建 Chart
# 创建自已的 chart,会生成一个文件夹
helm create my-chart
5.3. 打包 Chart
- 自动生成 *.tgz 文件,带版本号.
- 版本号来自于:Chart.yaml 文件里的
version: "1.0.0"
helm package my-chart
5.4. 下载 Chart
# 下载一个 tgz 文件
helm pull bitnami/redis
# 下载一个 redis 文件夹
helm pull bitnami/redis --untar=true
# 下载指定版本 chart 包
helm pull bitnami/redis --version 18.3.0