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" -}}
    
    额外提示:由于dict
    get
    函数似乎仅在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 -}}