我是 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时获得正确的列表?
我可能会编写一个帮助程序模板,它接受主机名列表,为每个主机名附加端口号和逗号,然后返回结果字符串。只要至少有一个主机名,该字符串就保证以不需要的逗号结尾,这一点很重要。
{{- define "mongo.hosts" -}}
{{- range . -}}
{{ . }}:27017,
{{- end -}}
{{- end -}}
现在您可以使用 Helm 特定的
include
来评估该模板,捕获字符串中的结果,并删除结尾的逗号。
url: mongodb://{{ include "mongo.hosts" .Values.mongos | trimSuffix "," }}
join
函数,Helm 中也有这个功能,所以原则上你可以 join "," $hostsAndPorts
。但是您需要获取一个字符串列表作为其输入,并且在模板语言中将一个字符串列表转换为另一个字符串列表有点棘手。