我们安装mysql的时候可以把chart包下载下来查看详情:
helm pull stable/mysql --untar
values yaml与set使用:
构建一个Helm Chart
helm create mychart
#Creating mychart
tree mychart/
mychart/
├── charts
├── Chart.yaml
├── templates
│ ├── deployment.yaml
│ ├── _helpers.tpl
│ ├── ingress.yaml
│ ├── NOTES.txt
│ └── service.yaml
└── values.yaml
-
Chart.yaml:用于描述这个 Chart的基本信息,包括名字、描述信息以及版本等。
-
values.yaml :用于存储 templates 目录中模板文件中用到变量的值。
-
Templates: 目录里面存放所有yaml模板文件。
-
charts:目录里存放这个chart依赖的所有子chart。
-
NOTES.txt :用于介绍Chart帮助信息, helm install 部署后展示给用户。例如:如何使用这个 Chart、列出缺省的设置等。
-
_helpers.tpl:放置模板助手的地方,可以在整个 chart 中重复使用
helm chart的基本使用
主要有三个命令:
chart install
chart update
chart rollback
创建Chart后,接下来就是将其部署:
helm install web mychart/
查看部署的应用:
helm list
也可以打包推送的charts仓库共享别人使用。
[root@master demo]# helm package mychart/
Successfully packaged chart and saved it to: /opt/helm/demo/mychart-0.1.0.tgz
升级、回滚和删除
发布新版本的chart时,或者当您要更改发布的配置时,可以使用helm upgrade 命令。
自定义一个chart
1、我们可以先删掉chart默认的templates下面的文件:
cd templates/
rm -rf *
生成一个deployment文件
kubectl create deployment chaochart --image=nginx:1.16 -o yaml --dry-run >deployment.yaml
修改此deployment文件,将其会变化的数值改成变量
[root@master templates]# cat deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
name: {{ .Values.name }}
spec:
replicas: {{ .Values.replicas }}
selector:
matchLabels:
app: chaochart
strategy: {}
template:
metadata:
labels:
app: chaochart
spec:
containers:
- image: {{ .Values.image }}:{{ .Values.imageTag }}
name: nginx
更改上级定义的value.yaml,我们定义的变量,全在这里赋值
[root@master templates]# cd ..
[root@master chaochart]# cat values.yaml
name: web02
replicas: 2
image: nginx
imageTag: 1.17
创建应用:
helm install web02 chaochart/
此时我们观察
kubectl get pod -o wide
并且可以curl pod ip来确定是不是我们定义的nginx版本.
此时也可以观察实际的模板被渲染过后的资源文件:
[root@master demo]# helm get manifest web02
---
# Source: mychart/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
name: chao
spec:
replicas: 2
selector:
matchLabels:
app: chaochart
strategy: {}
template:
metadata:
labels:
app: chaochart
spec:
containers:
- image: nginx:1.17
name: nginx
更新应用:
修改value.yaml中镜像版本, 我们将其改为nginx: 1.16,然后进行更新操作:
helm upgrade web02 chaochart/
回滚应用:
[root@master demo]# helm rollback web02
Rollback was a success! Happy Helming!
我们也可以查看历史版本
[root@master demo]# helm history web02
REVISION UPDATED STATUS CHART APP VERSION DESCRIPTION
1 Thu Jan 2 21:26:44 2020 superseded mychart-0.1.0 1.16.0 Install complete
2 Thu Jan 2 22:07:34 2020 superseded mychart-0.1.0 1.16.0 Upgrade complete
3 Thu Jan 2 22:13:43 2020 deployed mychart-0.1.0 1.16.0 Rollback to 1
根据描述可以判断:
1版本是我们安装的版本,2版本是我们更新的版本,3版本是回滚的版本,我们也可以根据版本回滚:
helm rollback web02 2
卸载应用:
helm uninstall web02
打包一个chart
helm package chaochart