我们已经知道了如何将信息传到模板中。 但是传入的信息并不能被修改。有时我们希望以一种更有用的方式来转换所提供的数据。
一、函数初体验
quote函数:把.Values
对象中的字符串属性用引号引起来,然后放到模板中。
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-configmap
data:
name: {{ quote .Values.name1 }}
[root@master ~]# helm install --dry-run goodly-guppy ./mychart
NAME: goodly-guppy
LAST DEPLOYED: Wed Jul 3 15:40:03 2024
NAMESPACE: default
STATUS: pending-install
REVISION: 1
TEST SUITE: None
HOOKS:
MANIFEST:
---
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: goodly-guppy-configmap
data:
name: "test1"
二、函数详解
语法是 :functionName arg1 arg2...
2.1 管道符
借鉴UNIX中的概念,管道符是将一系列的模板语言紧凑地将多个流式处理结果合并的工具。换句话说,管道符是按顺序完成一系列任务的方式。
示例:
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-configmap
data:
myvalue: "Hello World"
name: {{ .Values.name1 | quote }}
在这个示例中,并不是调用quote 参数
,而是倒置了命令。使用管道符(|
)将参数“发送”给函数: .Values.name1 | quote
使用管道符可以将很多函数链接在一起:
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-configmap
data:
myvalue: "Hello World"
name: {{ .Values.name1 | upper | quote }}
倒置命令是模板中的常见做法。
模板执行结果
[root@master ~]# helm install --dry-run goodly-guppy ./mychart
NAME: goodly-guppy
LAST DEPLOYED: Wed Jul 3 15:46:19 2024
NAMESPACE: default
STATUS: pending-install
REVISION: 1
TEST SUITE: None
HOOKS:
MANIFEST:
---
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: goodly-guppy-configmap
data:
name: "TEST1"
2.2 常用函数
repeat:
函数会返回给定参数特定的次数
[root@master ~]# vim mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-configmap
data:
name: {{ .Values.name1 | upper | repeat 2 | quote }}
~
[root@master ~]# helm install --dry-run goodly-guppy ./mychart
NAME: goodly-guppy
LAST DEPLOYED: Wed Jul 3 15:56:22 2024
NAMESPACE: default
STATUS: pending-install
REVISION: 1
TEST SUITE: None
HOOKS:
MANIFEST:
---
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: goodly-guppy-configmap
data:
name: "TEST1TEST1"
default函数:允许你在模板中指定一个默认值,以防这个值被忽略。
drink: {{ .Values.name1 | default "test" | quote }}
移除从value文件中移除name1的值
#name1: test1
修改configmap文件
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-configmap
data:
name: {{ .Values.name1 | default "test" | quote }}
执行结果
[root@master ~]# helm install --dry-run goodly-guppy ./mychart
NAME: goodly-guppy
LAST DEPLOYED: Wed Jul 3 16:13:31 2024
NAMESPACE: default
STATUS: pending-install
REVISION: 1
TEST SUITE: None
HOOKS:
MANIFEST:
---
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: goodly-guppy-configmap
data:
name: "test"
lookup函数:可以用于在运行的集群中 查找 资源。lookup函数简述为查找 apiVersion, kind, namespace,name -> 资源或者资源列表,类似与kubectl get
parameter | type |
apiVersion | string |
kind | string |
namespace | string |
name | string |
name
和 namespace
都是选填的,且可以传空字符串(""
)作为空。
命令 | lookup函数 |
---|---|
kubectl get pod mypod -n mynamespace | lookup "v1" "Pod" "mynamespace" "mypod" |
kubectl get pods -n mynamespace | lookup "v1" "Pod" "mynamespace" "" |
kubectl get pods --all-namespaces | lookup "v1" "Pod" "" "" |
kubectl get namespace mynamespace | lookup "v1" "Namespace" "" "mynamespace" |
kubectl get namespaces | lookup "v1" "Namespace" "" "" |
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-configmap
data:
name: {{ range $namespace := (lookup "v1" "Namespace" "" "").items }}
当lookup
返回一个对象,它会返回一个字典。这个字典可以进一步被引导以获取特定值。
[root@master ~]# helm install --dry-run goodly-guppy ./mychart
NAME: goodly-guppy
LAST DEPLOYED: Wed Jul 3 16:38:18 2024
NAMESPACE: default
STATUS: pending-install
REVISION: 1
TEST SUITE: None
HOOKS:
MANIFEST:
---
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: goodly-guppy-configmap
data:
name: map[]
Helm在helm template
或者helm install|upgrade|delete|rollback --dry-run
时, 不应该请求Kubernetes API服务。由此,lookup
函数在该案例中会返回空列表(即字典)。
2.3 运算符
对于模板来说,运算符(eq
, ne
, lt
, gt
, and
, or
等等) 都是作为函数来实现的。
函数 | 说明 |
---|---|
eq | 等于,两个参数如果相等返回true,否则返回false |
ne | 不相等,两个参数如果不相等返回true,相等返回false |
lt | 小于,第一个参数如果小于第二个参数返回true,否则返回false |
le | 小于等于,第一个参数小于等于第二个参数返回true,否则返回false |
gt | 大于,第一个参数大于第二个参数返回true,否则返回false |
ge | 大于等于,第一个参数大于等于第二个参数返回true,否则返回false |
and | 逻辑与,如果两个参数都是真返回true,否则返回false |
or | 逻辑或,两个参数有一个为真返回true |
not | 对参数取反,参数为空的为false,返回true |
coalesce | 扫描一个给定的列表,返回第一个非空值 |
ternary | 接受两个参数和一个test值,如果test的布尔值为true,则返回第一个参数的值如果test的布尔值为false,则返回第二个值。ternary "foo" "bar" true |
empty | 判断给定的值是否为空 |
default | 设置一个简单的默认值。default "foo" .Bar |
fail | 无条件地返回带有指定文本的空 string 或者 error 。这在其他条件已经确定而模板渲染应该失败的情况下很有用。 |
2.4 字符串函数
1、print和println函数
按照字符串进行输出,println有换行符两个字符串之间添加空格符
[root@master ~]# vim mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-configmap
data:
println: {{ println "Test println" }}
print: {{ print "Test print" }}
~
~
[root@master ~]# helm install --dry-run goodly-guppy ./mychart
NAME: goodly-guppy
LAST DEPLOYED: Wed Jul 3 17:36:28 2024
NAMESPACE: default
STATUS: pending-install
REVISION: 1
TEST SUITE: None
HOOKS:
MANIFEST:
---
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: goodly-guppy-configmap
data:
println: Test println
print: Test print
2、printf 函数
printf 函数字符串格式化输出,支持占位符。
printf "%s has %d dogs." .Name .NumberDogs
占位符取决于传入的参数类型
占位符 | 描述 |
---|---|
布尔值 | |
%t | true或false |
整型 | |
%b | 二进制 |
%o | 8进制 |
%O | 带0o前缀的8进制 |
%q | 安全转义的单引号字符 |
%x | 16进制,使用小写字符a-f |
%X | 16进制,使用小写字符A-F |
%U | Unicode格式: U+1234; 和"U+%04X"相同 |
浮点数和复杂成分 | |
%b | 指数二次幂的无小数科学计数法,比如 -123456p-78 |
%e | 科学计数法,比如: -1.234456e+78 |
%E | 科学计数法,比如: -1.234456E+78 |
%f | 无指数的小数,比如: 123.456 |
%F | 与%f同义 |
字符串和字节切片 | |
%s | 未解析的二进制字符串或切片 |
%q | 安全转义的双引号字符串 |
%x | 十六进制,小写,每个字节两个字符 |
%X | 十六进制,大写,每个字节两个字符 |
apiVersion: v1[root@master ~]# vim mychart/templates/configmap.yaml
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-configmap
data:
printf: {{ printf "The bollean is %t" true }}
printf: {{ printf "The string is %s" "strtest" }}
printf: {{ printf "The num is %d" 15 }}
printf: {{ printf "The float is %.2f" 3.1415926 }}
[root@master ~]# helm install --dry-run goodly-guppy ./mychart
NAME: goodly-guppy
LAST DEPLOYED: Wed Jul 3 22:07:09 2024
NAMESPACE: default
STATUS: pending-install
REVISION: 1
TEST SUITE: None
HOOKS:
MANIFEST:
---
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: goodly-guppy-configmap
data:
printf: The bollean is true
printf: The string is strtest
printf: The num is 15
printf: The float is 3.14
3、trim函数
trim函数:
移除字符串两边的空格
[root@master ~]# vim mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-configmap
data:
trim:{{ trim " trim " }}
[root@master ~]# helm install --dry-run goodly-guppy ./mychart
NAME: goodly-guppy
LAST DEPLOYED: Wed Jul 3 22:10:29 2024
NAMESPACE: default
STATUS: pending-install
REVISION: 1
TEST SUITE: None
HOOKS:
MANIFEST:
---
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: goodly-guppy-configmap
data:
trim:trim
4、trimAll函数
trimAll函数:从字符串中移除给定的字符,只能去除从开头或从结尾指定的字符
[root@master ~]# vim mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-configmap
data:
trimAll:{{ trimAll "All" "trimAll" }} #去除最后三个字符
trimAll:{{ trimAll "tr" "trimAll" }} #去除开头的两个字符
trimAll:{{ trimAll "ri" "trimAll" }} #不能去除中间的字符
[root@master ~]# helm install --dry-run goodly-guppy ./mychart
NAME: goodly-guppy
LAST DEPLOYED: Wed Jul 3 22:18:16 2024
NAMESPACE: default
STATUS: pending-install
REVISION: 1
TEST SUITE: None
HOOKS:
MANIFEST:
---
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: goodly-guppy-configmap
data:
trimAll:trim
trimAll:imAll
trimAll:trimAll
5、trimPrefix和trimSuffix
trimPrefix:从字符串中移除指定的前缀
trimSuffix:从字符串中移除指定后缀
[root@master ~]# vim mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-configmap
data:
trimPrefix: {{ trimPrefix "--" "--trimPrefix" }}
trimSuffix: {{ trimSuffix "--" "trimSuffix--" }}
[root@master ~]# helm install --dry-run goodly-guppy ./mychart
NAME: goodly-guppy
LAST DEPLOYED: Wed Jul 3 22:31:35 2024
NAMESPACE: default
STATUS: pending-install
REVISION: 1
TEST SUITE: None
HOOKS:
MANIFEST:
---
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: goodly-guppy-configmap
data:
trimPrefix: trimPrefix
trimSuffix: trimSuffix
6、lower函数和upper函数
lower函数:将整个字符串转换成小写
upper函数:将整个字符串转换成大写
[root@master ~]# vim mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-configmap
data:
lower: {{ lower "LOWER" }}
upper: {{ upper "upper" }}
[root@master ~]# helm install --dry-run goodly-guppy ./mychart
NAME: goodly-guppy
LAST DEPLOYED: Wed Jul 3 22:33:44 2024
NAMESPACE: default
STATUS: pending-install
REVISION: 1
TEST SUITE: None
HOOKS:
MANIFEST:
---
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: goodly-guppy-configmap
data:
lower: lower
upper: UPPER
7、title函数和untitle函数
title函数:首字母转换成大写
untitle函数:移除首字母大写
[root@master ~]# vim mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-configmap
data:
title: {{ title "test" }}
untitle: {{ untitle "Test" }}
[root@master ~]# helm install --dry-run goodly-guppy ./mychart
NAME: goodly-guppy
LAST DEPLOYED: Thu Jul 4 10:12:47 2024
NAMESPACE: default
STATUS: pending-install
REVISION: 1
TEST SUITE: None
HOOKS:
MANIFEST:
---
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: goodly-guppy-configmap
data:
title: Test
untitle: test
8、substr函数
substr函数:获取字符串的子串,即对字符串切片
参数:start(int):开始位置,从0开始
end(int):结束位置(不包含)
string(string):目标字符串
substr 0 5 "hello world"
[root@master ~]# vim mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-configmap
data:
substr: {{ substr 0 5 "hello world" }}
[root@master ~]# helm install --dry-run goodly-guppy ./mychart
NAME: goodly-guppy
LAST DEPLOYED: Thu Jul 4 10:22:43 2024
NAMESPACE: default
STATUS: pending-install
REVISION: 1
TEST SUITE: None
HOOKS:
MANIFEST:
---
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: goodly-guppy-configmap
data:
substr: hello
9、nospace函数
nospace函数:去掉字符串中的所有空格
nospace "hello w o r l d"
[root@master ~]# vim mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-configmap
data:
nospace: {{ nospace "hello w o r l d" }}
[root@master ~]# helm install --dry-run goodly-guppy ./mychart
NAME: goodly-guppy
LAST DEPLOYED: Thu Jul 4 10:28:18 2024
NAMESPACE: default
STATUS: pending-install
REVISION: 1
TEST SUITE: None
HOOKS:
MANIFEST:
---
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: goodly-guppy-configmap
data:
nospace: helloworld
10、trunc函数
截断字符串。
参数说明:正数表示从头开始数几个字符,负数表示从尾部开始数几个字符
trunc -5 "hello world"
[root@master ~]# vim mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-configmap
data:
trunc: {{ trunc 5 "hello world" }}
trunc: {{ trunc -5 "hello world" }}
[root@master ~]# helm install --dry-run goodly-guppy ./mychart
NAME: goodly-guppy
LAST DEPLOYED: Thu Jul 4 10:30:50 2024
NAMESPACE: default
STATUS: pending-install
REVISION: 1
TEST SUITE: None
HOOKS:
MANIFEST:
---
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: goodly-guppy-configmap
data:
trunc: hello
trunc: world
11、abbrev函数
用省略号截断字符串 (...
)
参数:最大长度(算上"..."剩余的字符串长度)
字符串
abbrev 5 "hello world"
[root@master ~]# vim mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-configmap
data:
abbrev: {{ abbrev 5 "hello world" }}
[root@master ~]# helm install --dry-run goodly-guppy ./mychart
NAME: goodly-guppy
LAST DEPLOYED: Thu Jul 4 10:35:16 2024
NAMESPACE: default
STATUS: pending-install
REVISION: 1
TEST SUITE: None
HOOKS:
MANIFEST:
---
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: goodly-guppy-configmap
data:
abbrev: he...
12、abbrevboth函数
省略两头指定的字符串,偏移位去除后加上两头(...)不足指定的最大长度则去除尾部的字符剩余的字符加上一个(...)为指定的长度,如果去除一头后加上(...)等于指定的长度则去除一头,去除两头后加上(...),等于指定长度则去除两头
参数:从头/尾开始的偏移位
最大长度包含(...),字符串小于等于最大长度则返回原函数
字符串
[root@master ~]# vim mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-configmap
data:
abbrevboth: {{ abbrevboth 5 10 "1234 5678 9123" }}
[root@master ~]# helm install --dry-run goodly-guppy ./mychart
NAME: goodly-guppy
LAST DEPLOYED: Thu Jul 4 11:03:59 2024
NAMESPACE: default
STATUS: pending-install
REVISION: 1
TEST SUITE: None
HOOKS:
MANIFEST:
---
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: goodly-guppy-configmap
data:
abbrevboth: ...5678...
13、initials函数
截取给定字符串的首字母,并组合在一起
[root@master ~]# vim mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-configmap
data:
initials: {{ initials "First Try" }}
[root@master ~]# helm install --dry-run goodly-guppy ./mychart
NAME: goodly-guppy
LAST DEPLOYED: Thu Jul 4 11:06:00 2024
NAMESPACE: default
STATUS: pending-install
REVISION: 1
TEST SUITE: None
HOOKS:
MANIFEST:
---
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: goodly-guppy-configmap
data:
initials: FT
14、randAlphaNum, randAlpha, randNumeric, randAscii
这四个函数生成加密安的随机字符串,但是使用字符集不同
randAlphaNum
使用0-9a-zA-Z
randAlpha
使用a-zA-Z
randNumeric
使用0-9
randAscii
使用所有的可打印ASCII字符
每个函数都需要一个参数:字符串的整型长度
[root@master ~]# vim mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-configmap
data:
randAlphaNum: {{ randAlphaNum 5 }}
randAlpha: {{ randAlpha 5 }}
randNumeric: {{ randNumeric 5 }}
randAscii: {{ randAscii 5 }}
[root@master ~]# helm install --dry-run goodly-guppy ./mychart
NAME: goodly-guppy
LAST DEPLOYED: Thu Jul 4 11:22:52 2024
NAMESPACE: default
STATUS: pending-install
REVISION: 1
TEST SUITE: None
HOOKS:
MANIFEST:
---
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: goodly-guppy-configmap
data:
randAlphaNum: r1nBU
randAlpha: RfgrR
randNumeric: 31893
randAscii: R]D"D
15、wrap函数
以给定列数给文字换行
wrap 80 $someText
上述结果会以$someText
在80列处换行。
16、wrapWith
wrapWith
和 wrap
类似,但可以以指定字符串换行。(wrap
使用的是 \n
)
wrapWith 5 "\t" "Hello World"
17、contains函数
测试字符串是否包含在另一个字符串中
contains "cat" "catch"
[root@master ~]# vim mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-configmap
data:
contains: {{ contains cat "catch" }}
[root@master ~]# helm install --dry-run goodly-guppy ./mychart
NAME: goodly-guppy
LAST DEPLOYED: Thu Jul 4 11:31:44 2024
NAMESPACE: default
STATUS: pending-install
REVISION: 1
TEST SUITE: None
HOOKS:
MANIFEST:
---
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: goodly-guppy-configmap
data:
contains: true
18、hasPrefix and hasSuffix
hasPrefix
和 hasSuffix
函数测试字符串是否有给定的前缀或后缀
hasPrefix "cat" "catch"
19、quote and squote
该函数将字符串用双引号(quote
) 或者单引号(squote
)括起来。
cat | quote
20、cat
cat
函数将多个字符串合并成一个,用空格分隔
cat "hello" "beautiful" "world"
上述结果为: hello beautiful world
21、其他函数
函数 | 说明 |
indent | 以指定长度缩进给定字符串所在行,在对齐多行字符串时很有用 indent 4 $lots_of_text |
nindent | nindent 函数和indent函数一样,但可以在字符串开头添加新行。nindent 4 $lots_of_text |
replace | 执行简单的字符串替换。 需要三个参数
|
plural | 字符串复数化。len $fish | plural "one anchovy" "many anchovies" 如果字符串长度为1,则第一个参数会被打印( |
snakecase | 将驼峰写法转换成蛇形写法。snakecase "FirstName" 结果为: first_name . |
camelcase | 将字符串从蛇形写法转换成驼峰写法。camelcase "http_server"。结果为: HttpServer 。 |
kebabcase | 将驼峰写法转换成烤串写法。kebabcase "FirstName" 。结果为: first-name . |
swapcase | 基于单词的算法切换字符串的大小写。 转换算法:
swapcase "This Is A.Test" 结果为: |
shuffle | 对字符串进行洗牌。 shuffle "hello" 。 hello 的随机字符串可能会是oelhl 。 |
2.5 类型转换函数
函数 | 说明 |
atoi | 字符串转换成整型 |
float64 | 转换成 float64 |
int | 按系统整型宽度转换成int |
int64 | 转换成int64 |
toDecimal | 将unix八进制转换成int64 |
toString | 转换成字符串 |
toStrings | 将列表、切片或数组转换成字符串列表 |
toJson | 将列表、切片、数组、字典或对象转换成JSON |
toPrettyJson(mustToPrettyJson) | 将列表、切片、数组、字典或对象转换成格式化JSON |
toRawJson(mustRoRawJson) | 将列表、切片、数组、字典或对象转换成HTML字符未转义的JSON |
fromYaml | 将字符串转化成对象 |
fromJson | 将JSON字符串转化成对象 |
toYaml | 将列表,切片,数组,字典或西乡转换成已经缩进的yaml |
[root@master ~]# vim mychart/yaml/person.yaml
name: Bob
age: 25
hobbies:
- hiking
- fishing
- cooking
[root@master ~]# vim mychart/yaml/person.json
{
"name": "Bob",
"age": 25,
"hobbies": [
"hiking",
"fishing",
"cooking"
]
}
[root@master ~]# vim mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-configmap
data:
toStrings: {{ list 1 2 3 |toStrings }}
toDecimal: {{ "0777" | toDecimal }}
{{- $person := .Files.Get "yaml/person.yaml" | fromYaml}}
greeting: |
Hi, my name is {{ $person.name }} and I am {{ $person.age }} years old.
My hobbies are {{ range $person.hobbies }}{{ . }} {{ end }}.
{{- $person := .Files.Get "yaml/person.json" | fromJson }}
greeting: |
Hi, my name is {{ $person.name }} and I am {{ $person.age }} years old.
My hobbies are {{ range $person.hobbies }}{{ . }} {{ end }}.
[root@master ~]# helm install --dry-run goodly-guppy ./mychart
NAME: goodly-guppy
LAST DEPLOYED: Thu Jul 4 14:43:23 2024
NAMESPACE: default
STATUS: pending-install
REVISION: 1
TEST SUITE: None
HOOKS:
MANIFEST:
---
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: goodly-guppy-configmap
data:
toStrings: [1 2 3]
toDecimal: 511
greeting: |
Hi, my name is Bob and I am 25 years old.
My hobbies are hiking fishing cooking .
greeting: |
Hi, my name is Bob and I am 25 years old.
My hobbies are hiking fishing cooking .
2.6 正则表达式函数
函数 | 说明 |
regexMatch mustRegexMatch | 如果输入字符串包含可匹配正则表达式任意字符串,则返回true。 regexMatch "^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}$" "[email protected]"
|
regexFindAll mustRegexFindAll | 返回输入字符串匹配正则表达式的所有切片。最后一个参数表示要返回的子字符串的数量,-1表示返回所有。
|
regexFind mustRegexFind | 返回输入字符串的第一个 (最左边的) 正则匹配。 regexFind "[a-zA-Z][1-9]" "abcd1234" |
regexReplaceAll mustRegexReplaceAll | 返回输入字符串的拷贝,用替换字符串替换Regexp的匹配项。在替换字符串里面, $ 标志被解释为扩展,因此对于实例来说 $1 表示第一个子匹配的文本 regexReplaceAll "a(x*)b" "-ab-axxb-" "${1}W" |
regexReplaceAllLiteral mustRegexReplaceAllLiteral | 返回输入字符串的拷贝,用替换字符串替换Regexp的匹配项。匹配字符串直接替换而不是扩展。 regexReplaceAllLiteral "a(x*)b" "-ab-axxb-" "${1}" |
regexsplit mustRegexSplit | 将输入字符串切成有表达式分隔的子字符串,并返回表达式匹配项之间的切片。最后一个参数 regexSplit "z+" "pizza" -1 |
[root@master ~]# vim mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-configmap
data:
regexMatch:{{ regexMatch "^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}$" "[email protected]" }}
regexFindAll: {{ regexFindAll "[2,4,6,8]" "123456789" -1 }}
regexFind: {{ regexFind "[a-zA-Z][1-9]" "abcd1234" }}
regexReplaceAll: {{ regexReplaceAll "a(x*)b" "-ab-axxb-" "${1}W" }}
regexReplaceAllLiteral: {{ regexReplaceAllLiteral "a(x*)b" "-ab-axxb-" "${1}" }}
regexSplit: {{ regexSplit "z+" "pizza" -1 }}
[root@master ~]# helm install --dry-run goodly-guppy ./mychart
NAME: goodly-guppy
LAST DEPLOYED: Thu Jul 4 15:11:21 2024
NAMESPACE: default
STATUS: pending-install
REVISION: 1
TEST SUITE: None
HOOKS:
MANIFEST:
---
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: goodly-guppy-configmap
data:
regexMatch: true
regexFindAll: [2 4 6 8]
regexFind: d1
regexReplaceAll: -W-xxW-
regexReplaceAllLiteral: -${1}-${1}-
regexSplit: [pi a]
2.7 加密函数
函数 | 说明 |
shalsum | 函数接收一个字符串,并计算它的SHA1摘要 |
sha256sum | 函数接收一个字符串,并计算它的SHA256摘要。 |
adler32sum | 函数接收一个字符串,并计算它的Adler-32校验和 |
htpasswd | 函数使用username 和 password 生成一个密码的bcrypt 哈希值。该结果可用于 Apache HTTP Server 的基础认证。 |
derivePassword | 函数可用于基于某些共享的“主密码”约束得到特定密码 |
genPrivateKey | 函数生成一个编码成PEM块的新私钥 第一个参数会采用以下某个值:
|
buildCustomCert | 函数允许自定义证书 会采用以下字符串参数:
返回包含以下属性的整数对象:
$ca := buildCustomCert "base64-encoded-ca-crt" "base64-encoded-ca-key" |
genCA | 函数生成一个新的,自签名的x509 证书机构。 采用以下参数:
会返回一个包含以下属性的对象:
|
genSelfSignedCert | 函数生成一个新的,自签名的x509 证书。 会采用下列参数:
会返回一个包含以下属性的对象:
|
genSignedCert | 通过指定的CA签名生成一个新的, x509证书 会采用以下参数:
|
encryptAES | 函数使用AES-256 CBC 加密文本并返回一个base64编码字符串。 |
decryptAES | 函数接收一个AES-256 CBC编码的字符串并返回解密文本。 |
2.8 日期函数
函数 | 说明 |
---|---|
now | 当前日期/时间。和其他日期函数一起使用。 |
ago | 返回距time.Now的以秒为单位的间隔时间。 |
date | 格式化日期 日期格式化为YEAR-MONTH-DAY:
|
dateInZone | 和 date 一样,但是和时区一起。 |
duration | 将给定的秒数格式化为time.Duration |
durationRound | 将给定时间舍入到最重要的单位。当 durationRound "2h10m5s" 这会返回2h |
unixEpoch | 返回time.Time 的unix时间戳 |
dateModify mustDateModify | 给定一个修改日期并返回时间戳。 |
toDate mustToDate | toDate 将字符串转换成日期。第一个参数是日期格式,第二个参数是日期字符串。 如果字符串无法转换就会返回0值。 |