当有多个 chart 需要共用一些配置时,就需要将共用的提取出来,单独组成一个 chart ,然后其他 chart 来引用它,这和写代码是相同的逻辑。
这篇文章仅写一下在这过程中需要注意的事项:
写 chart:
Chart.yaml 中需要包含如下信息:
name: name: auditlogd-service
type: library
version: 5.1.0
其中
- name 的值,可以随便写,之后需要用到它。
- type 的值需要是 library
- version 版本号,也可以随便写,但之后这个数字是要递增的
templates 中文件名的注意事项:
- templates 中的文件可以是 yaml 结尾,也可以是 tpl 结尾
- templates 中的文件必须以 _ 开头,例如 _config.yaml
- _helpers.tpl 一般放在 templates/lib 文件夹下
templates 中定义的模版需要如下格式:
{{- define "auditlogd.sidecar.tpl" -}}
...
{{- end }}
{{- define "auditlogd.sidecar" -}}
{{- include "auditlogd.sidecar.tpl" . -}}
{{- end -}}
先定义一个 .tpl,再定义一个没有 .tpl 的模版
用 chart:
Chart.yaml 中要追加:
dependencies:
- name: auditlogd-service-common
repository: file://../../
version: 5.1.0
- dependencies 中的 name 需要与 上方的 name 一致
- dependencies 中的 repository 需要制定 上方的 chart 所在位置
- dependencies 中的 version 需要与上方的 version 一致
在 yaml 中使用上方定义的公共模版:
{{ include "auditlogd.sidecar" . }}
or
{{ template"auditlogd.sidecar" . }}
至于用哪种,这取决于 include 和 template 的用法
它两者都是将之前定义好的 模板 嵌入到文件中去;include 可以使用 管道 对数据做二次处理; template 不行。