当前位置: 首页 > news >正文

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的类型转换

常用的类型转换函数有intfloattoStringatoi等函数。
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中,字典里面放的是键值对的集合。字典函数包含dictgetsetunsetkeyshasKeypluckmerge/mustMergemergeOverWrite/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的列表函数包含listfirstrestlastinitialappendprependcontactreverseuniqwithouthascompact等。

函数说明用法
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或nilcompact 列表
slice用于列表的切片,索引从0开始,包含起始索引,不包含结束索引,如果只有起始索引,表示从起始索引切片到最后slice 列表 起始索引 结束索引
until用于构建指定整数范围内的列表,从0至整数-1until 结束数字
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实战教程,如有侵权,请联系删除!!

http://www.dtcms.com/a/546232.html

相关文章:

  • 做网站骗河西集团网站建设
  • 如何制作网站的横幅seo全网营销
  • 网站主机要多少钱wordpress网站推广主题
  • 在不确定的时代中,唯一确定的是要有“改变的能力”
  • 仓颉的空安全基石:Option类型的设计与实践
  • 用php做的订票网站上海著名企业
  • 2025年搭建属于自己的网站HEXO静态页(四)网站页面美化
  • LangChain4j学习8:RAG (检索增强生成)
  • 【Unity每日一记】Unity物理引擎:刚体与碰撞体详解
  • 目前做哪个网站能致富贸易公司注册需要什么条件
  • Leetcode刷题笔记-最短无序连续子数组
  • 网站后台logo如何注册域名和网站
  • 前端笔试题 | 整理总结 ing | 跨域 + fetch + credentials(携带cookie)
  • 装饰器模式(c++版)
  • 现代感网站湖南网站开发公司电话
  • 手机网站设计机构seo站长工具平台
  • p2p理财网站开发流程wordpress5.0版本恢复到旧版本
  • AFE模拟前端芯片是什么(模拟前端芯片作用)
  • 操作系统(8)虚拟内存-Linux虚拟内存系统
  • 淘宝联盟怎样做新增网站推广好用的网站后台
  • 上海个人网站建设网站建设源码下载
  • 数字孪生深度长文学习
  • 太原网站建设推广番禺人才网官网入口
  • 简单网站建设哪家便宜泰州模板建站
  • CSP-J_S 认证详细 与NOI
  • 旅游网站设计方案怎么做网站建设颐高上海街
  • Nof1.ai 的开源复刻版:让 AI 成为你的量化交易员(附提示词模板)
  • PyTorch实战——从零搭建CV模型
  • 专业的网站制作公司地址设计培训学校
  • 每日算法刷题Day81:10.29:leetcode 回溯5道题,用时2h