如何在使用Kubernetes Configmap保存文件时将YAML转换为JSON

6
我们将编写Helm图表并使用configmap提供配置文件。由于某些原因,我们的应用程序使用JSON格式的配置文件。目前,我们在Helm chart的values.yaml中提供配置文件,如下所示。
conffiles:
  app_conf.json:
    ...(content in YAML)...

为了方便修改,在values.yaml中我们使用YAML格式,在configmap的模板中,我们使用“toJson”进行转换。

data:
{{- range $key, $value := .Values.conffiles }}
  {{ $key }}: |      
{{ toJson $value | default "{}" | indent 4 }}
{{- end -}}
{{- end -}}

在values.yaml文件中,它是YAML格式,在configmap中它将是JSON格式,然后在容器中将被存储为JSON文件。

我们的问题是,

  • 是否有一种方法可以在保存文件到容器时将YAML转换为JSON?也就是说,我们希望这些配置内容可以是1)values.yaml中的YAML,2)configmap中的YAML,3)容器中的JSON文件

提前致谢。


我知道这不是问题的答案,但是yaml无论如何都是JSON的超集。为什么不让你的应用程序使用一个合适的yaml解析器,然后你就可以使用任何一种格式?https://yaml.org/spec/1.2/spec.html#id2759572 - jaxxstorm
非常感谢 @jaxxstorm。我们决定让应用程序直接读取yaml配置文件。虽然需要更改源代码,但我们不想做更多的麻烦事。 - Lijing Zhang
1个回答

1
我认为没有现成的解决方案,但你有选择的余地,具体取决于你的动机。你的应用正在寻找json,configmap已经挂载供应用程序读取该json。helm部署不会修改容器本身。但是,你可以更改应用程序以读取yaml而不是json。如果你想轻松查看yaml和json版本,可以创建两个configmaps - 一个包含yaml,另一个包含json。或者,如果你只想查看用于创建configmap的yaml,则可以使用helm get values <release_name>来查看用于创建该发布的值(其中包括conffiles条目的内容)。

1
非常感谢Ryan。我们决定让应用程序直接读取yaml配置文件。虽然需要更改源代码,但我们不想做更多的麻烦事... - Lijing Zhang

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接