如何在掌舵范围内增加计数器

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

这是我的values.yaml文件:

options:
  collection: "myCollection"
  ttl: 100800
  autoReconnect: true
  reconnectTries: 3
  reconnectInterval: 5

现在我正在尝试像这样在configMap中将其转换为JSON:

options: {
  {{- range $key, $val := .Values.options }}
  {{ $key }}: {{ $val | quote }},
  {{- end }}
}

但是我需要消除JSON中的最后一个逗号,所以我想添加一个计数器:

options: {
  {{ $c := 0 | int }}
  {{- range $key, $val := .Values.options }}
  {{ if ne $c 0 }},{{ end }}
  {{- $key }}: {{ $val | quote }}
  {{ $c := $c add 1 }}
  {{- end }}
}

但是我在舵模板...命令中遇到以下错误:

at <$c>: can't give argument to non-function $c

所以我在做什么错呢?

kubernetes kubernetes-helm go-templates
1个回答
0
投票

Helm具有an undocumented toJson template function,所以如果您可以正确的格式获取数据,则可以要求它进行序列化。

管理嵌入式JSON文件的报价会很棘手。两个不错的选择是使用YAML块标量,其中在行的开头缩进即可界定内容,或将其视为toJson

binary data

请注意,此方法将在JSON内容中保留对象的本机类型;您的示例将所有内容强制为字符串。如果您需要所有内容都为字符串,则apiVersion: v1 kind: ConfigMap metadata: name: x data: optionsAsBlockScalar: >- {{ .Values.options | toJson | indent 4 }} binaryData: optionsAsBase64: {{ .Values.options | toJson | b64enc }} 支持库包含将任意对象转换为字符串并在适当的地方更改字典型对象的函数,尽管这开始陷入在模板中编写实际代码的不幸境地语言。

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