Kubernetes 定义集合时添加新闻行
我试图定义一个集合(Kubernetes 定义集合时添加新闻行,kubernetes,yaml,kubernetes-helm,Kubernetes,Yaml,Kubernetes Helm,我试图定义一个集合(dict),我想在每个定义上添加一行新行(为了可读性),例如: 但当我这样做时,helm会响应一个解析错误: Error: parse error in "XXX": template: XXX:2: unclosed action Error: UPGRADE FAILED: parse error in "XXX": template: XXX:2: unclosed action 赫尔姆有办法做到这一点吗?看来不可能做到。头盔模板系统基本上是围棋模板系统。如合同所述:
dict
),我想在每个定义上添加一行新行(为了可读性),例如:
但当我这样做时,helm会响应一个解析错误:
Error: parse error in "XXX": template: XXX:2: unclosed action
Error: UPGRADE FAILED: parse error in "XXX": template: XXX:2: unclosed action
赫尔姆有办法做到这一点吗?看来不可能做到。头盔模板系统基本上是围棋模板系统。如合同所述: 除了原始字符串,操作不能跨越换行符,尽管注释可以 TLDR强> 用多行方式声明dict是不可能的,就像使用Perl fat逗号运算符一样。
请检查“Sprig:Go模板的模板函数”的标题 相反,您可以使用这种黑客方式来实现类似的结果:
#values.yaml
--
全球的:
someMap:
咖啡:罗布斯塔
原产地:安哥拉
crema:是的
我通过先定义dict,然后每行设置一个键来实现这一点
{{- $myDict := dict "" "" -}}
{{- $_ := set $myDict "myKey1" "myValue1" -}}
{{- $_ := set $myDict "myKey2" "myValue2" -}}
{{- $_ := set $myDict "myKey3" "myValue3" -}}
{{- $_ := set $myDict "myKey4" "myValue4" -}}
额外提示:由于dictget
函数似乎仅在helm3及更高版本中可用,因此您可以使用此技巧将dict中的值转换为字符串
{{/* Hack needed until helm 3 which has 'get' for 'dict' */}}
{{- $myValue3Var := pluck "myKey3" $myDict | first -}}
谢谢,这就是我要找的黑客。这应该是公认的答案!这太棒了!有了这个技巧,再加上“include”命令,我最终可以使头盔模板模块化,而不必求助于全局“值”。谢谢你,我很高兴我能帮上忙。我主要是通过阅读文档来解决这个问题的
{{/* Hack needed until helm 3 which has 'get' for 'dict' */}}
{{- $myValue3Var := pluck "myKey3" $myDict | first -}}