把大量yaml作为一个整体管理,实现yaml高效复用,
三个重要概念:
- helm 命令行客户端工具
- Chart 把yaml打包,是yaml集合
- Release 基于chart部署实体,应用级别的版本管理
安装
解压(tar -zxvf helm-v3.0.0-linux-amd64.tar.gz
)
在解压目中找到helm
程序,移动到需要的目录中(mv linux-amd64/helm /usr/local/bin/helm
)
添加helm仓库
添加仓库
helm repo add 仓库名 仓库地址
# 配置微软源
helm repo add stable http://mirror.azure.cn/kubernetes/charts
# 配置阿里源
helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
# 配置google源
helm repo add google https://kubernetes-charts.storage.googleapis.com/
# 更新
helm repo update
然后可以查看我们添加的仓库地址
# 查看全部
helm repo list
# 查看某个
helm search repo stable
# 删除添加的源
helm repo remove stable
使用helm快速安装部署应用
使用weave-scope做事例,这个service也会图形化展示k8s集群
# 搜索 weave仓库
helm search repo weave
# 使用命令查看仓库
[root@master ~]# helm search repo weave
NAME CHART VERSION APP VERSION DESCRIPTION
aliyun/weave-cloud 0.1.2 Weave Cloud is a add-on to Kubernetes which pro...
aliyun/weave-scope 0.9.2 1.6.5 A Helm chart for the Weave Scope cluster visual...
# ui为别名
[root@master ~]# helm install ui aliyun/weave-scope
值得一提的是阿里云的weave-scope版本太低,建议用微软源
weave-scope默认用ClusterIp,没有对外暴露端口,使用edit改一下这个service的yaml
kubectl edit svc ui-weave-scope
chart使用
创建chart模板
helm create mychart
可以在当前目录下看到mychart的文件夹
- charts是空文件夹
- templates:生成了一些文件,编写yaml文件存放到这个目录
- values.yaml:存放的是全局变量的yaml文件,templates中可以用
- chart.yaml:当前chart属性配置信息
在templates文件夹下创建Yaml
把nginx的deployment拉取下来导出成deployment.yaml
kubectl create deployment web1 --image=nginx --dry-run -o yaml > deployment.yaml
再导出service.yaml,使用service向外暴露端口,前提是上面的deployment需要启动,这个命令才能执行完成,这样做其实不太可取
kubectl expose deployment web1 --port=80 --target-port=80 --type=NodePort --dry-run -o yaml >service.yaml
安装mychart
在mychart的父目录下执行此命令
helm install web1 mychart/
当我们修改了mychart中的东西后,就可以进行升级操作
helm upgrade web1 mychart
全局变量使用
针对templates里面的各种yaml部分数据灵活处理
主要是values.yaml里面写,然后在templates下面的yaml文件中使用
在templates的yaml文件里通过表达式形式 使用全局变量 {{.Values.变量名称}}
表达式 {{.Release.Name}}
表示取当前版本名称 比如helm install web1 mychart/
这里就是web1