使用Helm模板,我试图根据values.yaml中的数字生成服务器名称列表。该模板的点设置为数字(其为float64)。

{{- define "zkservers" -}}
{{- $zkservers := list -}}
{{- range int . | until -}}
{{- $zkservers := print "zk-" . ".zookeeper" | append $zkservers -}}
{{- end -}}
{{- join "," $zkservers -}}
{{- end -}}

对于3的输入,我期望它产生:
zk-0.zookeeper,zk-1.zookeeper,zk-2.zookeeper

它什么也不会产生。

我知道range块中的行是空操作,因为每次循环迭代时,变量$ zkservers是一个新变量。它与外部作用域中的$ zkservers变量不同。

我希望意图不明确我想做什么。我不知所措。

有人知道如何使用Helm模板执行此操作吗?

最佳答案

我遇到了同样的问题,带有字典your solution保存了我的一天。这是一个很好的解决方法,可以简单一些:

{{- define "zkservers" -}}
{{- $zk := dict "servers" (list) -}}
{{- range int . | until -}}
{{- $noop := printf "zk-%d.zookeeper" . | append $zk.servers | set $zk "servers" -}}
{{- end -}}
{{- join "," $zk.servers -}}
{{- end -}}

10-08 08:40