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
标签:templates,文件,image,tpl,#......,chart,helpers,helm,模板 From: https://www.cnblogs.com/outsrkem/p/17334483.html