helm range 在在线值数组上循环以获取逗号分隔值列表

问题描述 投票:0回答:1

我是 helm Chart 的新手,尝试形成连接字符串来连接到 mongodb 集群,这是我的 Values.yaml 文件:

mongos:
  - mongos1
  - mongos2

这是我的 Template.yaml:

 uri: {{ "mongodb://" -}} {{ range $value := .Values.mongos }} {{-  printf "%s:27017" $value  -}} {{- end }}

但不知道如何添加逗号,这是当前结果:

  uri: mongodb://mongos1:27017mongos2:27017

它需要如下所示:

  uri: "mongodb://mongos1:27017,mongos2:27017/?authSource=admin"

游乐场

请建议如何在主机:端口之间添加逗号,以便将来在values.yaml中添加任意数量的mongos时获得正确的列表?

mongodb kubernetes kubernetes-helm
1个回答
0
投票

我可能会编写一个帮助程序模板,它接受主机名列表,为每个主机名附加端口号和逗号,然后返回结果字符串。只要至少有一个主机名,该字符串就保证以不需要的逗号结尾,这一点很重要。

{{- define "mongo.hosts" -}}
{{- range . -}}
{{ . }}:27017,
{{- end -}}
{{- end -}}

现在您可以使用 Helm 特定的

include
来评估该模板,捕获字符串中的结果,并删除结尾的逗号。

url: mongodb://{{ include "mongo.hosts" .Values.mongos | trimSuffix "," }}

Sprig 支持库包含一个

join
函数,Helm 中也有这个功能,所以原则上你可以
join "," $hostsAndPorts
。但是您需要获取一个字符串列表作为其输入,并且在模板语言中将一个字符串列表转换为另一个字符串列表有点棘手。

© www.soinside.com 2019 - 2024. All rights reserved.