文章目录
1、helm简介
在kubernetes平台上,我们在部署各种各样的应用服务的时候,可以基于手工或者自动的方式对各种资源对象实现伸缩操作,尤其是对于有状态的应用,我们可以结合持久性存储机制实现更大场景的伸缩动作。但是,无论我们怎么操作各种资源对象,问题最多的就是各种基础配置、镜像等之类的依赖管理操作。在linux平台下,常见的包依赖的就是yum、apt等工具,在kubernetes平台下,同样有类似的解决依赖关系的工具 – helm。
官方网址:https://helm.sh/zh/
官方地址:https://github.com/helm/helm
helm的功能类似于yum 或 apt,提供应用部署时候所需要的各种配置、资源清单文件,他与yum之类工具不同的是,在k8s中helm是不提供镜像的,这些镜像文件需要由专门的镜像仓库来提供。
== Kubernetes包管理器==
例如:k8s平台上的nginx应用部署,对于该应用部署来说,主要需要三类内容:
- 镜像:nginx镜像
- 资源定义文件:Deployment、service、hpa等
- 专用文件:配置文件、证书等
- helm管理的主要是:资源定义文件和专用文件。
功能总结:
Helm = Kubernetes 的 包管理工具(类似 yum/apt/npm),用来快速部署、升级、卸载应用。
Chart = Helm 的安装包,包含部署所需的 YAML 模板和配置。
Repository = 存放 Chart 的仓库(比如 Bitnami)。
Release = 一个 Chart 安装到集群后的运行实例。
2、helm部署应用服务的完整工作流程
基于helm来成功的部署一个应用服务,完整的工作流程如下:
- 部署一个稳定运行的k8s集群,在能管理k8s的主机上部署helm。
- 用户在客户端主机上,定制各种Chart资源和config资源,上传到专用的仓库(本地或者远程)
- helm客户端向Tiller发出部署请求,如果本地有chart用本地的,否则从仓库获取
- Tiller与k8s集群的api-server发送请求
- api-server通过集群内部机制部署应用,需要依赖镜像的时候,从专门的镜像仓库获取。
- 基于helm部署好的应用实例,在k8s集群中,我们称之为release。
3、安装 Helm
Linux / Mac
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
验证:
helm version
命令帮助
helm --help
- helm search: search for charts
- helm pull: download a chart to your local directory to view
- helm install: upload the chart to Kubernetes
- helm list: list releases of charts
4、helm实践
4.1、仓库管理
# 添加仓库
helm repo add bitnami https://charts.bitnami.com/bitnami
# 查看已添加的仓库
helm repo list
# 更新仓库索引
helm repo update
# 删除仓库
helm repo remove bitnami
4.2、 搜索和查看 Chart
# 搜索仓库里的 Chart
helm search repo mysql
# 查看 Chart 详细信息
helm show chart bitnami/mysql
# 查看 Chart 的默认 values.yaml 配置
helm show values bitnami/mysql > my-values.yaml
4.3、 安装应用
# 最简单安装
helm install my-mysql bitnami/mysql
# 指定命名空间
helm install my-mysql bitnami/mysql -n database --create-namespace
# 使用自定义配置
helm install my-mysql bitnami/mysql -f my-values.yaml
4.4、升级 / 回滚
# 升级(更新配置或版本)
helm upgrade my-mysql bitnami/mysql -f my-values.yaml
# 回滚到上一个版本
helm rollback my-mysql 1
4.5、卸载
helm uninstall my-mysql -n database
4.6、查看安装状态
# 查看 release 列表
helm list -n database
# 查看详细状态
helm status my-mysql
5、典型工作流程
添加仓库:helm repo add bitnami …
更新索引:helm repo update
搜索 Chart:helm search repo redis
下载配置:helm show values bitnami/redis > values.yaml
修改配置:编辑 values.yaml(比如密码、存储大小)
安装:helm install my-redis bitnami/redis -f values.yaml
升级/卸载/回滚按需执行。
“人的一生会经历很多痛苦,但回头想想,都是传奇”。