乐趣区

关于java:Helm-Template初体验方便管理多环境

我最新最全的文章都在 南瓜慢说 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…

退出移动版