我最新最全的文章都在 南瓜慢说 www.pkslow.com,文章更新也只在官网,欢送大家来喝茶~~
1 简介
Helm 作为一个优良的包管理器,这部分咱们之前曾经做了介绍,文章如下:
用 Helm 部署 Kubernetes 利用,反对多环境部署与版本回滚
Kubernetes 用 Helm 装置 Ingress 并踩一下应用的坑
而 Helm 的模板性能,一样十分弱小。它能够十分不便的定义各种 Kubernetes 的资源模板,如 Deployment、Service、Ingress、ConfigMap 等。不同环境的变量放在不同文件上,渲染时指定环境变量文件即可。
2 初体验
应用 Helm 的 Template 性能,须要先创立一个 Chart,这是 Helm 的根本文件组成架构。咱们来创立一个 Nginx 的相干资源文件,命令如下:
helm create pkslow-nginx
命令执行实现后,就会主动创立 Chart 的相干文件:
要害文件:
- 目录 template:搁置模板文件,想要渲染什么文件进去,就在这个目录搁置对应模板;
- 文件 Chart.yaml:该 Chart 的形容,如果只是应用 Helm 的模板性能,能够不必管;
- 文件 values.yaml:蕴含变量默认值。
templates/tests
对咱们作用不大,删掉。
咱们尝试不批改模板、不增加变量,间接渲染出后果文件如下:
$ helm template pkslow-nginx/ --output-dir ./result
wrote ./result/pkslow-nginx/templates/serviceaccount.yaml
wrote ./result/pkslow-nginx/templates/service.yaml
wrote ./result/pkslow-nginx/templates/deployment.yaml
依据一些变量和判断,helm 间接帮咱们生成了三种资源的文件。查看其中一个文件 service.yaml,还是十分残缺的,根本能够满足需要了,再依据本人的需要改改就好了。
3 增加模板文件
试着增加一个模板文件 configmap.yaml 到 templates 目录,内容如下:
apiVersion: v1
kind: ConfigMap
metadata:
name: pkslow-file
namespace: default
data:
application.yaml: |-
server:
port: 8080
pkslow:
name: Larry
age: 18
webSite: www.pkslow.com
执行命令后渲染的后果如下:
---
# Source: pkslow-nginx/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: pkslow-file
namespace: default
data:
application.yaml: |-
server:
port: 8080
pkslow:
name: Larry
age: 18
webSite: www.pkslow.com
与模板并没有什么不同,那是因为咱们没有在模板文件里应用变量和判断语句等。
3.1 模板中应用变量
咱们批改模板如下:
apiVersion: v1
kind: ConfigMap
metadata:
name: pkslow-config-{{.Values.environment}}
namespace: default
data:
application.yaml: |-
server:
port: {{.Values.server.port}}
pkslow:
name: {{.Values.pkslow.name}}
age: {{.Values.pkslow.age}}
{{- if .Values.pkslow.webSite}}
webSite: {{.Values.pkslow.webSite}}
{{- end}}
能够看见咱们在模板中应用了许多双大括号的变量{{.Values.xxx}}
,咱们须要在 values.yaml 文件中定义这些变量,如下:
environment: dev
server:
port: 80
pkslow:
name: Larry Deng
age: 28
webSite: https://www.pkslow.com
从新执行命令$ helm template pkslow-nginx/ --output-dir ./result
,渲染的后果如下:
---
# Source: pkslow-nginx/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: pkslow-config-dev
namespace: default
data:
application.yaml: |-
server:
port: 80
pkslow:
name: Larry Deng
age: 28
webSite: https://www.pkslow.com
3.2 为不同环境设置不同的变量
多环境治理在 Helm Template 这也是非常简单的,咱们创立一个 values-dev.yaml 的变量文件,内容如下:
environment: dev
server:
port: 8080
pkslow:
name: Larry Deng
age: 1
通过以下命令来指定 dev 环境的变量文件:
$ helm template pkslow-nginx/ --output-dir ./result -f pkslow-nginx/values-dev.yaml
这样渲染进去的后果就是 dev 的相干配置了。其它环境同理。
3.3 通过命令行设置变量
应用 --set
或--set-string
,应用如下:
$ helm template pkslow-nginx/ --output-dir ./result -f pkslow-nginx/values-dev.yaml --set pkslow.webSite=www.pkslow.com
总结
代码请查看:https://github.com/LarryDpk/p…