helm _helpers.tpl 文件用法

发布时间 2023-04-19 20:10:53作者: Outsrkem

templates 目录下⾯除了 NOTES.txt 文件和以下划线 _ 开头命令的文件之外,都会被当做 kubernetes 的资源清单文件,而这个下划线开头的文件不会被当做资源清单外,还可以被其他chart 模板中调用

命名模板我们也可以称为子模板,是限定在⼀个文件内部的模板,然后给⼀个名称,在使用命名模板的时候有⼀个需要特别注意的是:模板名称是全局的,如果我们声明了两个相同名称的模板,最后加载的⼀个模板会覆盖掉另外的模板,由于子chart中的模板也是和顶层的模板⼀起编译的,所以在命名的时候⼀定要注意,不能重名了。为了避免重名,有个通用的约定就是为每个定义的模板添加上 chart 名称: {{define”mychart.labels”}} , define 关键字就是用来声明命名模板的,加上 chart 名称就可以避免不同chart 间的模板出现冲突的情况。

values.yaml

image:
  repoprefix: harbor.com/library
  repository: nginx
  pullPolicy: IfNotPresent
  tag: "0.1.1"

templates/_helpers.tpl 

{{- define "myImage" -}}
{{- printf "%s/%s:%s" .Values.image.repoprefix .Values.image.repository  .Values.image.tag }}
{{- end -}}

templates/deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  #......
  template:
    #......
    spec:
      containers:
        - name: {{ .Chart.Name }}
          image: {{ template "myImage" . }}

最终效果

---
# Source: aaaaaa/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  #......
  template:
    #......
    spec:
      containers:
        - name: aaaaaa
          image: harbor.com/library/nginx:0.1.1

d