警告
本文最后更新于 2020-06-18 18:20,文中内容可能已过时。
##模板函数
1.将.Values对象中的字符串注入模板时,我们需要的是字符串。我们可以通过调用quote函数来做到这一点:
1
2
3
4
5
6
7
8
| apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-configmap
data:
myvalue: "Hello World"
drink: {{ quote .Values.favorite.drink }}
food: {{ quote .Values.favorite.food }}
|
模板函数遵循以下语法functionName arg1 arg2…。在上面的代码段中,quote .Values.favorite.drink调用quote函数并将其传递给单个参数。
2.查看渲染后的结果
1
2
3
4
5
6
7
8
9
| # Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: singed-puffin-configmap
data:
myvalue: "Hello World"
drink: "hello"
food: "world"
|
可以看到drink和food都被加上了引号
模板函数拥有60多种可用函数。其中一些是由Go模板语言本身定义的。其他大多数都是Sprig模板库的一部分。我们将通过示例逐步介绍其中的许多内容。
##管道
模板语言的强大功能之一是其管道概念。管道利用UNIX的概念,是将一系列模板命令链接在一起以紧凑表达一系列转换的工具。换句话说,管道是按顺序完成多项工作的有效方式。
###upper函数:
我们添加了upper函数,将food的值转换成大写
1
2
3
4
5
6
7
8
| apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-configmap
data:
myvalue: "Hello World"
drink: {{ .Values.favorite.drink | quote }}
food: {{ .Values.favorite.food | upper | quote }}
|
渲染后的效果:
1
2
3
4
5
6
7
8
9
| # Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: exegetical-wildebeest-configmap
data:
myvalue: "Hello World"
drink: "hello"
food: "WORLD"
|
repeat函数:
下面的例子将我们获取到的值,使用repeat函数重复5次
1
2
3
4
5
6
7
8
| apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-configmap
data:
myvalue: "Hello World"
drink: {{ .Values.favorite.drink | repeat 5 | quote }}
food: {{ .Values.favorite.food | upper | quote }}
|
渲染后的效果:
1
2
3
4
5
6
7
8
9
| # Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: quelling-sparrow-configmap
data:
myvalue: "Hello World"
drink: "hellohellohellohellohello"
food: "WORLD"
|
default函数
default可以设置一个默认值
1
2
3
4
5
6
7
8
| apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-configmap
data:
myvalue: "Hello World"
drink: {{ .Values.favorite.drink | repeat 5 | quote }}
food: {{ .Values.favorite.food | default "my is default" | upper | quote }}
|
手动将favorite.food的值设置为空:
helm install --dry-run --debug --set=favorite.food=null .
渲染后的效果
1
2
3
4
5
6
7
8
9
| # Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: ungaged-grizzly-configmap
data:
myvalue: "Hello World"
drink: "hellohellohellohellohello"
food: "MY IS DEFAULT"
|
在实际chart中,所有静态默认值都应位于values.yaml中,并且不应使用default命令重复(否则它们将是多余的)