K8s的包管理工具--Helm3函数(2)
文章目录
- 一、helm3函数
- 1. 内置函数
- 2. 逻辑函数和流控制函数
- 3. 字符串函数
- 4. helm3的类型转换
- 5. 正则表达式函数
- 6. 加密解密函数
- 7. 日期函数
- 8. 字典函数
- 9. 列表函数
- 10. 数学计算函数
- 11. 网络函数
- 12. 文件路径函数
- 13. 类型检查函数
一、helm3函数
在 Helm模板中,以下情况被认为是"空"(false):
- nil (空指针)
- 0 (数字零)
- false (布尔假)
- “” (空字符串)
- 空数组 []
- 空map map[]
1. 内置函数
quote # 调用的变量值加一个双引号,使用方法: 参数 | quotesquote # 调用的变量值加一个单引号,,使用方法: 参数 | squoteupper # 调用的变量值转换为大写,,使用方法: 参数 | upperlower # 调用的变量值转换为小写,使用方法:参数 | lowerrepeat # 调用的变量值的重复次数,使用方法: 参数 | repeat 次数default # 给调用的变量一个默认值,使用方法:参数 | default 默认值lookup #用于获取k8s集群内的一些信息,功能类似与kubectl get命令#基本语法:lookup "apiVersion" "kind" "namespace" "name"# apiVersion:api版本,v1或apps/v1
# kind:资源类型,如Pod,Deployment,Namespace
# namespace:命名空间名称,空字符串表示所有资源
# name:资源名称,空字符串表示所有资源
函数的使用
# 定义变量值
[root@k8s-master m1]# cat chart1/values.yaml
address1: china
address2: LIAONING# 函数使用
[root@k8s-master m1]# cat chart1/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:name: {{ .Release.Name }}
data:value1: {{ .Values.address1 | quote }}value2: {{ .Values.address1 | squote }}value3: {{ .Values.address1 | upper | quote }}value4: {{ .Values.address2 | lower | quote }}value5: {{ .Values.address3 | default "shenyang" | quote }}value6: {{ .Values.address2 | repeat 2 | quote }}value7: {{ lookup "apps/v1" "Deployment" "default" "nginx" | quote}}# 输出变量值
[root@k8s-master m1]# helm install chart1 chart1/ --debug --dry-run
install.go:178: [debug] Original chart version: ""
install.go:199: [debug] CHART PATH: /home/m1/chart1NAME: chart1
LAST DEPLOYED: Mon Oct 20 15:32:34 2025
NAMESPACE: default
STATUS: pending-install
REVISION: 1
TEST SUITE: None
USER-SUPPLIED VALUES:
{}COMPUTED VALUES:
address1: china
address2: LIAONINGHOOKS:
MANIFEST:
---
# Source: chart1/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:name: chart1
data:value1: "china"value2: 'china'value3: "CHINA"value4: "liaoning"value5: "shenyang"value6: "LIAONINGLIAONING"value7: "map[apiVersion:apps/v1 kind:Deployment metadata:map[annotations:map[deployment.kubernetes.io/revision:6 kubectl.kubernetes.io
2. 逻辑函数和流控制函数
eq
用于比较两个参数是否相等,如果相等为true,否则为false
用法: eq 参数1 参数2[root@k8s-master m1]# cat chart2/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:name: {{ .Release.Name }}
data:value1: {{ eq 1 2 | quote }} # 值为falsevalue2: {{ eq 2 2 | quote }} # 值为true
ne
用于比较两个参数是否不等,如果不等为true,否则为false
用法: ne 参数1 参数2[root@k8s-master m1]# cat chart2/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:name: {{ .Release.Name }}
data:value1: {{ ne 1 2 | quote }} # 值为truevalue2: {{ ne 2 2 | quote }} # 值为false
lt
判断第一个参数是否小于第二个参数,小于为true,否则为false
用法: lt 参数1 参数2[root@k8s-master m1]# cat chart2/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:name: {{ .Release.Name }}
data:value1: {{ lt 1 2 | quote }} # 值为truevalue2: {{ lt 3 2 | quote }} # 值为false
le
判断第一个参数是否小于等于第二个参数,小于等于为true,否则为false
用法: le 参数1 参数2[root@k8s-master m1]# cat chart2/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:name: {{ .Release.Name }}
data:value1: {{ le 1 2 | quote }}value2: {{ le 3 2 | quote }}value3: {{ le 3 3 | quote }}# 输出
data:value1: "true"value2: "false"value3: "true"
gt
判断第一个参数是否大于第二个参数,大于为true,否则为false
用法: gt 参数1 参数2
ge
判断第一个参数是否大于等于第二个参数,大于等于为true,否则为false
用法: ge 参数1 参数2
and
返回第一个为false的值 ,或者最后一个值
用法: and 参数1 参数2 参数3 ...[root@k8s-master m1]# cat chart2/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:name: {{ .Release.Name }}
data:value1: {{ and 0 2 | quote }}value2: {{ and true false | quote }}value3: {{ and true true 5 | quote }}value4: {{ and 0 true | quote }}value5: {{ and "" true | quote }}value5: {{ and "" true | quote }}# 输出
data:value1: "0"value2: "false"value3: "5"value4: "0"value5: ""value5: ""
or
返回第一个为true的参数或者最后一个参数
用法: or 参数1 参数2 参数3 ...[root@k8s-master m1]# cat chart2/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:name: {{ .Release.Name }}
data:value1: {{ or 0 2 | quote }}value2: {{ or true false | quote }}value3: {{ or true true 5 | quote }}value4: {{ or 0 true | quote }}value5: {{ or "" true | quote }}value5: {{ or "" "11" | quote }}# 输出
data:value1: "2"value2: "true"value3: "true"value4: "true"value5: "true"value5: "11"
not
对参数的布尔值取反,由false取为true,或者由true取为false
用法: not 参数[root@k8s-master m1]# cat chart2/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:name: {{ .Release.Name }}
data:value1: {{ not 0 | quote }}value2: {{ not true | quote }}value3: {{ not 5 | quote }}value4: {{ not "" | quote }}value5: {{ not "11" | quote }}# 输出
data:value1: "true"value2: "false"value3: "false"value4: "true"value5: "false"
empty
判断参数值是否为空,若为空,则为true
用法: empty 参数[root@k8s-master m1]# cat chart2/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:name: {{ .Release.Name }}
data:value1: {{ empty 0 | quote }}value2: {{ empty true | quote }}value3: {{ empty 5 | quote }}value4: {{ empty "" | quote }}value5: {{ empty "11" | quote }}value5: {{ empty false | quote }}# 输出
data:value1: "true"value2: "false"value3: "false"value4: "true"value5: "false"value5: "true"
coalesce
获取一个非空列表中第一个非空的值
用法:coalesce 参数1 参数2 参数3 参数4 ...[root@k8s-master m1]# cat chart2/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:name: {{ .Release.Name }}
data:value1: {{ coalesce 0 1 2 34 | quote }}value2: {{ coalesce "" 50 2 34 | quote }}value3: {{ coalesce false 66 2 34 | quote }}value4: {{ coalesce true 1 2 34 | quote }}data:value1: "1"value2: "50"value3: "66"value4: "true"
ternary
接收两个参数和一个test值,如果test的布尔值为true,则返回第一个参数的值,否则返回第二个参数的值
用法: ternary 参数1 参数2 true/false[root@k8s-master m1]# cat chart2/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:name: {{ .Release.Name }}
data:value1: {{ ternary 1 2 true | quote }}value2: {{ coalesce 1 2 false | quote }}# 输出
data:value1: "1"value2: "1"
3. 字符串函数
print和println
将所有参数按照字符串进行输出,
用法:print/println "字符串"
println会在每个字符串后面加一个空格,并在输出的末尾加一个换行符;
如果参数中包含非字符串类型,输出时转为字符串;
当相邻的两个参数不是字符串时,会在其中加上空格;
[root@k8s-master m1]# cat chart3/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:name: {{ .Release.Name }}
data:value1: {{ print "this" 1 2 "print" }}value2: {{ println "this" 1 2 "print" }}# 输出
data:value1: this1 2printvalue2: this 1 2 print
printf
格式化字符串输出内容,支持使用占位符,占位符取决于传入的参数类型
用法:printf "字符串 占位符" 占位符值
printf常用占位符
| 数据类型 | 常用占位符 |
|---|---|
| 整数 | %d(十进制,如18) |
| 浮点数 | %f(小数,如3.14159,%2.f指定保留两位小数) |
| 字符串 | %s(字符串,如test) |
| 布尔值 | %t(指定输出的布尔值,true/false) |
[root@k8s-master m1]# cat chart3/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:name: {{ .Release.Name }}
data:value1: {{ printf "this is printf %t" true }}value2: {{ printf "this is printf %s" "strs" }}value3: {{ printf "this is printf %d" 15 }}value4: {{ printf "this is printf %.2f" 3.14 }}#输出
data:value1: {{ printf "this is printf %t" true }}value2: {{ printf "this is printf %s" "strs" }}value3: {{ printf "this is printf %d" 15 }}value4: {{ printf "this is printf %.2f" 3.14 }}
trim、trimPrefix、trimSuffix
trim:移除字符串两边的空格,
使用:trim "字符串"
trimPrefix:移除字符串中指定的前缀,使用:trimPrefix "指定字符" "字符串"
trimSuffix:移除字符串中指定的后缀,使用:trimSuffix "指定字符" "字符串"
data:value1: {{ trim " this is printf " }}value3: {{ trimPrefix "%" "%this is printf" }}value4: {{ trimSuffix "%" "this is printf %" }}# 输出
data:value1: this is printfvalue3: this is printfvalue4: this is printf
titel、untitle
title:将首字母转换为大写,
使用:title "字符串"
untitle:将首字母转为小写,使用:untitle "字符串"
data:title: {{ title "test" }}untitle: {{ untitle "Untitle" }}#输出
data:title: Testuntitle: untitle
snakecase、camelcase、kebabcase
snakecase:将驼峰命名改为下划线命名,
使用:snakecase "UserName"
camelcase:将下划线改为驼峰命令,使用:camelcase "user_name"
kebabcase:将驼峰命名改为-命名,使用:kebabcase "UserName"
data:snakecase: {{ snakecase "UserName" }}camelcase: {{ camelcase "user_name" }}kebabcase: {{ kebabcase "UserName" }}# 输出
data:snakecase: user_namecamelcase: UserNamekebabcase: user-name
字符串切割函数:substr
用于切割字符串,
使用:substr 开始位置 结束位置 "字符串"
注意:索引从0开始,包含开始位置,不包含结束位置
data:substr: {{ substr 2 7 "UserName" }}#输出
data:substr: erNam
字符串截取函数:trunc
截取字符串,
使用:trunc 整数 "字符串"
注意:正整数表示从前往后截,负整数表示从后往前截取
data:trunc1: {{ trunc 2 "UserName" }}trunc2: {{ trunc -2 "UserName" }}#输出
data:trunc1: Ustrunc2: me
字符串加密函数:randAlphaNum、randAlpha、randNumeric、randAscii
randAlphaNum:使用0-9a-zA-Z生成随机字符串,
用法:randAlphaNum 长度
randAlpha:使用a-zA-Z生成随机字符串,用法:randAlpha 长度
randNumeric:使用0-9生成随机字符串,用法:randNumeric 长度
randAscii:使用所有可用Ascii生成随机字符串,用法:randAscii 长度
data:randAlpha: {{ randAlpha 6 }}randAlphaNum: {{ randAlphaNum 6 }}randNumeric: {{ randNumeric 6 }}randAscii: {{ randAscii 6 }}# 输出
data:randAlpha: gJipGYrandAlphaNum: ZKDmClrandNumeric: 752062randAscii: <YY:&=
contains
测试字符是否包含在字符串内,
使用:contains 字符 字符串
data:contains1: {{ contains "er" "her"}}contains2: {{ contains "ee" "her" }}# 输出
data:contains1: truecontains2: false
hasPrefix、hasSuffix
hasPrefix:指定字符是否为字符串前缀,
使用:hasPrefix 字符 字符串
hasSuffix:指定字符是否为字符串后缀,使用:hasSuffix 字符 字符串
data:hasPrefix: {{ hasPrefix "us" "user"}}hasSuffix: {{ contains "er" "user" }}# 输出
data:hasPrefix: truehasSuffix: true
nospace
nospace:去掉字符串所有空格,
用法:nospace 字符串
data:nospace: {{ nospace "i a l"}}# 输出
data:nospace: ial
wrapWith
在字符串的指定列加内容,
用法:wrapWith 列数 字符 字符串
data:wrapWith: {{ wrapWith 5 "\t" "helloworld" }}# 输出
data:wrapWith: hello world
合并字符串:cat
将多个字符串合并为一个字符串,并在中间加上空格,用法:cat 字符串1 字符串2 字符串3
data:cat: {{ cat "hello" "world" }}# 输出
data:cat: hello world
字符串替换函数:replace
替换字符串内的指定字符,用法:字符串 | replace 字符 替换字符
data:replace: {{ "i-am-ironman" | replace "-" " " }}# 输出
data:replace: i am ironman
字符串缩进函数:indent、nindent
指定长度对字符串进行缩进,nindent在缩进时会在字符串前加一个新行
用法:ident/nindent 缩进长度 字符串
注意:ident和nindent函数最好顶格写
data:data1: |
{{ indent 4 "test" }}
{{ nindent 4 "test" }}# 输出
data:data1: |testtest
plural
判断字符串长度,根据字符串长度返回参数,字符串长度为1,返回第一个参数,否则返回第二个参数
用法:len 字符串 | plural 参数1 参数2
data:plural1: {{ len "a" | plural "a" "abc" }}plural2: {{ len "ab" | plural "a" "abc" }}plural3: {{ len "" | plural "a" "abc" }}# 输出
data:plural1: aplural2: abcplural3: abc
4. helm3的类型转换
常用的类型转换函数有int、float、toString、atoi等函数。
int/atoi:将参数转换为整型,使用:int/atoi 字符串
float64:将参数转换为float64类型,使用:float 字符串
toString:将参数转换为字符串类型,使用:toString 字符串
data:value1: {{ float64 "1.0" | kindOf }}value2: {{ int "5" | kindOf }}value3: {{ atoi "5" | kindOf }}value4: {{ toString 1 | kindOf }}# 输出
data:value1: float64value2: intvalue3: intvalue4: string
5. 正则表达式函数
正则匹配函数:regexMatch、mustRegexMatch
根据指定的正则表达式匹配字符串,如果匹配成功,返回true,否则返回false。regexMatch匹配失败会返回false,mustRegexMatch匹配失败报错。
使用:regexMatch/mustRegexMatch 正则表达式 字符串
data:value1: {{ regexMatch "^[0-9a-zA-Z._%+-]+@[0-9a-zA-Z.-]+\\.[a-zA-Z]{2,}$" "aaa@qq.com" }}value2: {{ mustRegexMatch "^[0-9a-zA-Z._%+-]+@[0-9a-zA-Z.-]+\\.[a-zA-Z]{2,}$" "aaa@qq.com" }}# 输出
data:value1: truevalue2: true
regexFindAll、mustRegexFindAll
获取字符串中匹配正则表达式的字符串内容,并指定返回的数量,-1表示返回全部
用法:regexFindAll/mustRegexFindAll 正则表达式 字符串 数量
data:value1: {{ regexFindAll "[0-9a-zA-Z]" "aaa@qq.com" 3 | quote }}value2: {{ mustRegexFindAll "[0-9a-zA-Z]" "aaa@qq.com" -1 | quote }}# 输出
data:value1: "[a a a]"value2: "[a a a q q c o m]"
regexFind、mustRegexFind
根据正则表达式匹配字符串的内容,并返回匹配到的第一个结果
用法:regexFind/mustRegexFind 正则表达式 字符串
data:value1: {{ regexFind "[0-9][a-z]" "sa1asdasd5" |quote }}value2: {{ mustRegexFind "[0-9][a-z]" "sa1asdasd5"|quote }}# 输出
data:value1: "1a"value2: "1a"
正则替换函数:regexReplaceAll、mustRegexReplaceAll
根据正则表示式匹配内容,并进行替换
用法:regexReplaceAll/mustRegexReplaceAll 正则 字符串 替换内容
data:value1: {{ regexReplaceAll "ad" "sa1asdasd5" "$" }}value2: {{ mustRegexReplaceAll "a(s*)d" "sa1asdasd5" "$" }}value3: {{ mustRegexReplaceAll "a(s*)d" "sa1asdasd5" "${1}A" }}
# ${1}指的是(s*)# 输出
data:value1: sa1asdasd5value2: sa1$$5value3: sa1sAsA5
regexReplaceAllLiteral、mustRegexReplaceAllLiteral
与正则替换基本相同,唯一不同在于,${1}不会进行替换
data:value1: {{ regexReplaceAllLiteral "ad" "sa1asdasd5" "$" }}value2: {{ mustRegexReplaceAllLiteral "a(s*)d" "sa1asdasd5" "$" }}value3: {{ mustRegexReplaceAllLiteral "a(s*)d" "sa1asdasd5" "${1}A" }}# 输出
data:value1: sa1asdasd5value2: sa1$$5value3: sa1${1}A${1}A5
6. 加密解密函数
加密函数:sha1sum、sha256sum、adler32sum、htpasswd
用法:sha1sum/sha256sum/adler32sum 字符串、htpasswd "用户名 密码"
sha1sum:计算字符串的SHA1值进行加密
sha256sum:计算字符串的SHA256值进行加密
adler32sum:计算字符串的Adler32值进行加密
htpasswd:根据传入的两组字符串生成用户名:密码(哈希值),用于http server认证
data:value1: {{ sha1sum "test" | quote }}value2: {{ sha256sum "test" | quote }}value3: {{ adler32sum "test" | quote }}value4: {{ htpasswd "test" "123456" | quote }}# 输出
data:value1: "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3"value2: "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08"value3: "73204161"value4: "test:$2a$10$XU0HJr2E0GITZSUYM5KEs.UBScajX0FnbZ1JHewR1jS0QIjttNbw."
# value4中test为用户名,冒号后面为密码
加密解密函数:encryptAES、decryptAES
encryptAES:加密函数,使用AES256加密字符串,并设定加密的key值,返回字符串的base64编码值
用法:encryptAES key值 要加密的字符串
decryptAES:解密函数,对AES256加密的字符串进行解密
用法:decryptAES key值 加密字符串
encryptAES
data:value1: {{ encryptAES "key" "test" }}# 输出
data:value1: kui85k9DYteMoTqvMkIFckFaI+Yk1h/xaqhcFOPopKc=
decryptAES
data:value1: {{ decryptAES "key" "kui85k9DYteMoTqvMkIFckFaI+Yk1h/xaqhcFOPopKc=" }}# 输出
data:value1: test
编码解码函数:b64enc、b64dec(k8s的secret.yml文件常用)
b64enc:按照base64对字符串进行编码,
用法:b64enc 字符串
b64dec:对base64编码的字符串进行解码,用法:b64dec 字符串
b64enc
data:value1: {{ b64enc "test" }}
#输出
data:value1: dGVzdA==
b64dec
data:
value1: {{ b64dec "dGVzdA==" }}#输出
data:
value1: test
7. 日期函数
| 函数 | 说明 | 用法 |
|---|---|---|
| now | 获取当前日期和时间 | 用法:now |
| date | 对于返回的日期信息格式化,可使用"2006-01-02"或"02/01/2006"进行格式化 | 用法:日期信息 | date "2006-01-02"/02/01/2006,传递格式只能是上面两种信息 |
| dateInZone | 指定时区返回时间信息 | 用法:dateInZone "格式" 时间 "时区" |
| duration | 将秒数按照时分秒显示 | 用法:duration "秒数" |
| durationRound | 将日期信息取整,返回大的时间单位 | 用法:durationRound "时分秒" |
| unixEpoch | 将日期信息转换为时间戳 | 用法:unixEpoch "日期信息"| |
| dateModify/mustDateModify | 对日期信息进行修改 | 用法:"日期信息" | dateModify/mustDateModify "修改内容" |
| toDate/mustToDate | 将指定字符串按照格式转为日期 | 用法:toDate/mustToDate "日期格式" "字符串" |
data:value1: {{ now }}value2: {{ now | date "2006-01-02"}}value3: {{ now | date "02/01/2006"}}value4: {{ dateInZone "2006-01-02" now "UTC" }}value5: {{ duration now }}value6: {{ durationRound "1h30m5s" }}value7: {{ unixEpoch now }}value8: {{ now | dateModify "-2h" }} # 当前时间减去两个小时value9: {{ now | mustDateModify "+2h" }} # 当前时间加上两个小时value10: {{ toDate "2006-01-02" "2025-10-27" }}value11: {{ mustToDate "02/01/2006" "27/10/2025" }}# 输出
data:value1: 2025-10-27 17:11:37.914457528 +0800 CST m=+0.291771379value2: 2025-10-27value3: 27/10/2025value4: 2025-10-27value5: 0svalue6: 1hvalue7: 1761556297value8: 2025-10-27 15:11:37.914594202 +0800 CST m=-7199.708091953value9: 2025-10-27 19:11:37.914610188 +0800 CST m=+7200.291924034value10: 2025-10-27 00:00:00 +0800 CSTvalue11: 2025-10-27 00:00:00 +0800 CST
8. 字典函数
helm3中,字典里面放的是键值对的集合。字典函数包含dict、get、set、unset、keys、hasKey、pluck、merge/mustMerge、mergeOverWrite/mustMergeOverWrite等。
dict
dict:用于定义字典,
用法:dict "key1" "value1" "key2" value2 "...
注意:字典内的key必须为字符串,value可以是任何类型
get
get:用于根据指定的key值获取对应的value值,
用法:get 字典 "key"
注意:get只会返回value值
set
set:用于向字典中新增键值对,也可修改键值对,
用法:set 字典 "key" "value"
注意:由于set是向列表做操作,还是返回列表
unset
用于删除字典中已有的键值对,
用法:unset 字典 "key"
data:
# 定义字典,并将其赋值给$dict1变量{{- $dict1 := dict "key1" "value1" "key2" "value2" "key3" "value3"}}value1: {{ get $dict1 "key1"}}value2: {{ set $dict1 "key4" "value4"}}value3: {{ unset $dict1 "key3" }}# 输出
data:value1: value1value2: map[key1:value1 key2:value2 key3:value3 key4:value4]value3: map[key1:value1 key2:value2 key4:value4]
# map[]为字典
keys
keys:用于获取一个或多个字典中的key值,并返回一个无序列表。如果多个字典有相同的key,并不会被去重。如果要去重和排序可以使用sortAlpha和uniq函数处理。
用法:keys 字典1 字典2 字典3
data:{{- $dict1 := dict "key1" "value1" "key2" "value2" "key3" "value3"}}{{- $dict2 := dict "key1" "value1" "key4" "value4" "key5" "value5"}}value1: {{ keys $dict1 $dict2}}value2: {{ keys $dict1 $dict2 | sortAlpha | uniq}}# 输出
data:value1: "[key1 key2 key3 key5 key1 key4]"value2: "[key1 key2 key3 key4 key5]"# 列表是[]
hasKey
hasKey:判断字典中是否包含指定的key,如果包含,返回true,否则返回false
用法:hasKey 字典 "key"
data:{{- $dict1 := dict "key1" "value1" "key2" "value2" "key3" "value3"}}{{- $dict2 := dict "key1" "value1" "key4" "value4" "key5" "value5"}}value1: {{ hasKey $dict1 "key1" | quote}}value2: {{ hasKey $dict1 "key5" | quote}}# 输出
data:value1: "true"value2: "false"
pluck
pluck:根据一个或多个字典的key,返回对应的所有value的列表。
用法:pluck "key" 字典1 字典2
data:{{- $dict1 := dict "key1" "value1" "key2" "value2" "key3" "value3"}}{{- $dict2 := dict "key1" "value5" "key4" "value4" "key5" "value5"}}value1: {{ pluck "key1" $dict1 $dict2 | quote}}#输出
data:value1: "[value1 value5]"
mustMerge/merge
merge/mustMerge:合并函数,有源字典向目标字典合并,如果源字典和目标字典中有相同的key,则value值以源字典为主
用法:merge 目标字典 源字典1 源字典2...
data:{{- $dict1 := dict "key1" "value1" "key2" "value2" "key3" "value3"}}{{- $dict2 := dict "key1" "value5" "key4" "value4" "key5" "value5"}}{{- $dict3 := dict "key1" "value6" "key6" "value6" "key7" 123 }}value1: {{ merge $dict1 $dict2 $dict3| quote}}value1: {{ mustMerge $dict1 $dict2 $dict3| quote}}# 输出
data:value1: "map[key1:value1 key2:value2 key3:value3 key4:value4 key5:value5 key6:value6 key7:123]"value1: "map[key1:value1 key2:value2 key3:value3 key4:value4 key5:value5 key6:value6 key7:123]"
mergeOverwrite/mustMergeOverwrite
字典合并函数,有源字典向目标字典合并,有相同的key时,value以源字典为主
data:{{- $dict1 := dict "key1" "value1" "key2" "value2" "key3" "value3"}}{{- $dict2 := dict "key1" "value5" "key4" "value4" "key5" "value5"}}{{- $dict3 := dict "key1" "value6" "key6" "value6" "key7" 123 }}value1: {{ mergeOverwrite $dict1 $dict2 $dict3| quote}}value1: {{ mustMergeOverwrite $dict1 $dict2 $dict3| quote}}# 输出
data:value1: "map[key1:value6 key2:value2 key3:value3 key4:value4 key5:value5 key6:value6 key7:123]"value1: "map[key1:value6 key2:value2 key3:value3 key4:value4 key5:value5 key6:value6 key7:123]"
values
获取一个字典中所有的value值并返回一个列表,
用法:values 字典
data:{{- $dict1 := dict "key1" "value1" "key2" "value2" "key3" "value3"}}value1: {{ values $dict1 | quote}}# 输出
data:value1: "[value2 value3 value1]"
pick/omit
pick:根据指定的字典及key值,返回键值对集合,即新的字典,
用法:pick 字典 "key1" "key2"
omit:根据指定的字典及key值,返回字典中不包含key的键值对集合,即新的字典
data:{{- $dict1 := dict "key1" "value1" "key2" "value2" "key3" "value3"}}value1: {{ pick $dict1 "key1" "key2"| quote}}value2: {{ omit $dict1 "key1" "key2"| quote}}# 输出
data:value1: "map[key1:value1 key2:value2]"value2: "map[key3:value3]"
deepCopy/mustDeepCopy
用于字典拷贝,拷贝一个新字典,
用法:字典 | deepCopy
data:{{- $dict1 := dict "key1" "value1" "key2" "value2" "key3" "value3"}}value1: {{ $dict1 | deepCopy | quote}}# 输出
data:value1: "map[key1:value1 key2:value2 key3:value3]"
9. 列表函数
helm3的列表函数包含list、first、rest、last、initial、append、prepend、contact、reverse、uniq、without、has、compact等。
| 函数 | 说明 | 用法 |
|---|---|---|
list | 用于生成一个列表 | list 1 2 3 "one" "two" "three" |
first | 用于获取列表中的第一项 | first 列表 |
rest | 用于获取列表中除了第一项的其他,并返回列表 | rest 列表 |
last | 用于获取列表中的最后一项 | last 列表 |
initial | 用于获取列表中除最后一项的其他项,并返回列表 | initial 列表 |
append | 用于向列表中追加一项内容 | append 列表 追加的内容 |
prepend | 用于在列表第一项前插入内容 | prepend 列表 追加的内容 |
concat | 用于合并多个列表 | concat 列表1 列表2 |
reverse | 用于反转列表 | reverse 列表 |
uniq | 用于去重列表中的重复项 | uniq 列表 |
without | 用于过滤掉列表中的指定内容 | without 列表 要过滤的内容 |
has | 用于判断列表中的指定内容是否存在 | has 内容 列表 |
compact | 用来删除列表中的空值,控制包含:“”,0,[],{},null或nil | compact 列表 |
slice | 用于列表的切片,索引从0开始,包含起始索引,不包含结束索引,如果只有起始索引,表示从起始索引切片到最后 | slice 列表 起始索引 结束索引 |
until | 用于构建指定整数范围内的列表,从0至整数-1 | until 结束数字 |
untilStep | 用于构建指定整数范围内的列表,可设定步长 | untilStep 起始数字 结束数字 步长 |
seq | 用于生成指定范围内的整数,如果只有一个数字,表示结束数字,从1-结束;如果两个数字默认步长为1; | seq 起始数字 步长 结束数字 |
data:
# list{{- $list1 := list "" 1 2 3 "A" "B" "C" true }}value1: {{ $list1 | quote }}
# firstvalue2: {{ $list1 | first|quote }}
# restvalue3: {{ rest $list1 | quote }}
# lastvalue4: {{ last $list1 | quote }}
# initialvalue5: {{ initial $list1 | quote }}
# appendvalue6: {{ append $list1 false| quote }}
# prependvalue7: {{ prepend $list1 0| quote }}
# concatvalue8: {{ concat $list1 (list 1 6 7)| quote }}
# reversevalue9: {{ reverse $list1 | quote }}
# uniqvalue10: {{ concat $list1 (list 1 6 7)| uniq|quote }}
# withoutvalue11: {{ without $list1 "A" | quote }}
# hasvalue12: {{ has "" $list1 | quote }}
# compactvalue13: {{ compact $list1 | quote }}
# slicevalue14: {{ slice $list1 5 | quote }} # 起始索引为5,到列表最后value15: {{ slice $list1 1 5 | quote }} # 起始索引为1,结束索引为5
# utilvalue16: {{ until 5 | quote }} # 开始为0,结束为5,不包含5value17: {{ untilStep 1 9 2 | quote }} # 开始为1,结束为9,步长为2
# seqvalue18: {{ seq 1 6 | quote }} # 开始为1,结束为6,步长为1value19: {{ seq 1 2 9 | quote }} # 开始为1,结束为9,步长为2value20: {{ seq 9 | quote }} # 开始为1,结束为9# 输出
data:value1: "[ 1 2 3 A B C true]"value2: ""value3: "[1 2 3 A B C true]"value4: "true"value5: "[ 1 2 3 A B C]"value6: "[ 1 2 3 A B C true false]"value7: "[0 1 2 3 A B C true]"value8: "[ 1 2 3 A B C true 1 6 7]"value9: "[true C B A 3 2 1 ]"value10: "[ 1 2 3 A B C true 6 7]"value11: "[ 1 2 3 B C true]"value12: "true"value13: "[1 2 3 A B C true]"value14: "[B C true]"value15: "[1 2 3 A]"value16: "[0 1 2 3 4]"value17: "[1 3 5 7]"value18: "1 2 3 4 5 6"value19: "1 3 5 7 9"value20: "1 2 3 4 5 6 7 8 9"
10. 数学计算函数
| 函数 | 说明 | 用法 |
|---|---|---|
| add | 用于参数的加法计算 | add 参数1 参数2 ... |
| sub | 用于参数的减法计算 | add 减数 被减数 |
| mul | 用于参数的乘法计算 | mul 参数1 参数2 参数3 |
| div | 用于两个参数的除法计算 | div 被除数 除数 |
| mod | 用于两个参数的模运算 | mod 参数1 参数2 |
| add1 | 用于参数的+1运算 | add1 参数 |
| max | 用于获取参数的最大值 | max 参数列表 |
| min | 用于获取参数的最小值 | min 参数列表 |
| round | 用于计算参数四舍五入的值 | round 参数 保留位数 |
| len | 用于获取参数的长度 | len 参数 |
| floor | 用于计算小于等于浮点数参数的最大整数值 | floor 浮点数 |
| ceil | 用于计算大于等于浮点数参数的最小整数值 | ceil 浮点数 |
data:value1: {{ add 1 2 3 | quote }}value2: {{ sub 1 2 | quote }}value3: {{ mul 1 2 3 4 | quote }}value4: {{ div 6 3 | quote }}value5: {{ mod 9 2 | quote }}value6: {{ add1 2 | quote }}value7: {{ max 2 3 4 5 | quote }}value8: {{ min 2 3 4 5 | quote }}value9: {{ round 123.4567 2 | quote }}value10: {{ floor 123.45 | quote }}value11: {{ ceil 123.45 | quote }}# 输出
data:value1: "6"value2: "-1"value3: "24"value4: "2"value5: "1"value6: "3"value7: "0"value8: "0"value9: "123.46"value10: "123"value11: "124"
11. 网络函数
| 函数 | 说明 | 用法 |
|---|---|---|
| getHostByName | 用于获取域名的IP地址 | getHostByName 域名 |
data:value1: {{ getHostByName "www.baidu.com" | quote }}# 输出
data:value1: "39.156.70.46"
12. 文件路径函数
| 函数 | 说明 | 用法 |
|---|---|---|
| base | 用于返回文件的最后一层路径,即文件名 | base 文件路径 |
| dir | 用于返回文件所在的目录 | dir 文件路径 |
| ext | 用于返回文件的扩展名 | ext 文件路径 |
| isAbs | 判断文件路径是否为绝对路径 | isAbs 文件路径 |
metadata:name: {{ .Release.Name }}
data:value1: {{ base "/home/m1/char5/templates/configmap.yaml" | quote }}value2: {{ dir "/home/m1/char5/templates/configmap.yaml" | quote }}value3: {{ ext "/home/m1/char5/templates/configmap.yaml" }}value4: {{ isAbs "/home/m1/char5/templates/configmap.yaml" | quote }}# 输出
data:value1: "configmap.yaml"value2: "/home/m1/char5/templates"value3: .yamlvalue4: "true"
13. 类型检查函数
| 函数 | 说明 | 用法 |
|---|---|---|
| kindOf | 用于返回参数的类型 | kindOf 参数 |
| kindIs | 用于判断参数是否为指定的类型 | kindIs "类型" 参数 |
| deepEqual | 用于判断两个参数是否相等 | deepEqual 参数1 参数2 |
data:value1: {{ kindOf (dict "1" "2") | quote }}value2: {{ kindIs "slice" (list "1" "2") | quote }}value3: {{ deepEqual (list "1" "2") (list "1" "2") | quote }}# 输出
data:value1: "map"value2: "true"value3: "true"
本文内容为学习过程记录内容,参考helm3实战教程,如有侵权,请联系删除!!
