我想使用HELM模板生成复杂的JSON
我有一个模板:
apiVersion: v1
kind: ConfigMap
metadata:
name: test
data:
config.json: |
{
"test": "{{ $Value }}",
"services": {
{{- range $k, $v := $.Values.services }}
"{{ $k | upper }}_PATH": "{{ $k }}",
{{- end }}
}
}
Helm chars生成json:
{
"test": "test",
"services": {
"S1_PATH": "/t1",
"S2_PATH": "/t2",
"S2_PATH": "/t3",
}
}
问题是JSON无效,因为它具有尾随逗号。如何更新模板以解决此问题?
答案 0 :(得分:0)
也许我没有正确理解您的问题,但是为了避免尾随逗号,您应该将其从模板中删除。
另外,我认为您应该使用.Values.services
而不是$.Values.services
模板:
apiVersion: v1
kind: ConfigMap
metadata:
name: test
data:
config.json: |
{
"services": {
{{- range $k, $v := .Values.services }}
"{{ $k | upper }}_PATH": "{{ $k }}"
{{- end }}
}
}
结果:
apiVersion: v1
kind: ConfigMap
metadata:
name: test
data:
config.json: |
{
"services": {
"S1_PATH": "s1"
"S2_PATH": "s2"
"S3_PATH": "s3"
}
}
如果我不希望这样-请在问题中添加更多信息。
答案 1 :(得分:0)
如果您像这样更新模板,它应该可以工作。
apiVersion: v1
kind: ConfigMap
metadata:
name: test
data:
config.json: |
{
"test": "{{ $Value }}",
"services": {
{{- range $k, $v := $.Values.services }}
{{ if ne $k 0 }},{{ end }}
"{{ $k | upper }}_PATH": "{{ $k }}"
{{- end }}
}
}
对于第一个服务(索引为0),它不会放置逗号,对于所有其他服务,它会放在逗号前面。