Helm是k8s上的包管理管理工具。前提是已经安装了k8s集群、Helm。
List-1中helm create 命令创建名为mychart的Chart,Chart并不能按中文直译过来,是Helm中的术语,见官网介绍。
List-1
[root@master helm-mjduan]# helm create mychart
[root@master helm-mjduan]# find mychart/
mychart/
mychart/Chart.yaml
mychart/templates
mychart/templates/ingress.yaml
mychart/templates/deployment.yaml
mychart/templates/service.yaml
mychart/templates/NOTES.txt
mychart/templates/_helpers.tpl
mychart/charts
mychart/values.yaml
mychart/.helmignore
一般在k8s上部署应用时,需要在yaml中配置deployment和service,在List-1,mychart/templates/deployment.yaml是deployment的配置,mychart/templates/service.yaml中是service的配置,这俩个文件中只是设定了格式,值则在mychart/values.yaml中。helm create默认创建的nginx的chart,我们要根据自己的情况修改自己需要的。
List-2中,mychart/Chary.yaml是应用的版本、名称。
List-2
[root@master helm-mjduan]# more mychart/Chart.yaml
apiVersion: v1
appVersion: "1.0"
description: A Helm chart for Kubernetes
name: mychart
version: 0.1.0
如List-1所示,我们将配置模板和值分开了,helm的lint命令用于检查模板配置与值的依赖是否正确,如下List-3,可以用helm lint -h来查看帮助文档。
List-3
[root@master helm-mjduan]# helm lint mychart/
==> Linting mychart/
[INFO] Chart.yaml: icon is recommended
1 chart(s) linted, no failures
可以通过命令行查看帮助文档。
- 将上面的chart用package命令打包
- install命令部署应用
- list命令可以查看部署的chart
- status可以查看状态
- upgrade命令可以在不停止服务的情况下,升级部署的应用版本,按chart的release版本
- rollback与upgrade反过来,降低版本
部署较为简单的应用,可能看不出helm的好处,但是当应用较为庞大的时候,这个很好用。
Reference
- https://helm.sh/docs/developing_charts/#charts
- https://www.hi-linux.com/posts/21466.html#helm-%E6%98%AF%E4%BB%80%E4%B9%88