如何使用JSON数据生成Helm图表配置文件

时间:2019-07-10 12:49:33

标签: json kubernetes kubernetes-helm

我想使用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无效,因为它具有尾随逗号。如何更新模板以解决此问题?

2 个答案:

答案 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),它不会放置逗号,对于所有其他服务,它会放在逗号前面。