helm 命名模板

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

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

values.yaml

1
2
3
4
5
image:
repoprefix: harbor.com/library
repository: nginx
pullPolicy: IfNotPresent
tag: "0.1.1"

templates/_helpers.tpl

/**/ 包裹起来,用来描述命名模板的用途

1
2
3
4
{{/* 镜像版本 */}}
{{- define "myImage" -}}
{{- printf "%s/%s:%s" .Values.image.repoprefix .Values.image.repository .Values.image.tag }}
{{- end -}}

templates/deployment.yaml

1
2
3
4
5
6
7
8
9
10
apiVersion: apps/v1
kind: Deployment
metadata:
#......
template:
#......
spec:
containers:
- name: {{ .Chart.Name }}
image: {{ template "myImage" . }}

最终效果

1
2
3
4
5
6
7
8
9
10
11
12
---
# Source: aaaaaa/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
#......
template:
#......
spec:
containers:
- name: aaaaaa
image: harbor.com/library/nginx:0.1.1

alt

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2018-2024 Outsrkem
  • 访问人数: | 浏览次数:

      请我喝杯咖啡吧~

      支付宝
      微信