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

Lij*_*ang 6 kubernetes kubernetes-helm configmap

我们将使用 configmap 编写 Helm 图表并提供配置文件。

由于某些原因,我们的应用程序使用 JSON 格式的配置文件。目前我们在 Helm chart 的 values.yaml 中提供这样的配置文件。

conffiles:
  app_conf.json:
    ...(content in YAML)...
Run Code Online (Sandbox Code Playgroud)

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

data:
{{- range $key, $value := .Values.conffiles }}
  {{ $key }}: |      
{{ toJson $value | default "{}" | indent 4 }}
{{- end -}}
{{- end -}}
Run Code Online (Sandbox Code Playgroud)

所以在 values.yaml 中它是 YAML,在 configmap 中它将是 JSON,然后在容器中它将被存储到 JSON 文件中。

我们的问题是,

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

预先感谢。

Rya*_*son 1

我不认为有任何开箱即用的东西,但你确实有选择,这取决于你的动机。

您的应用程序正在寻找 json,并且已安装 configmap 以便您的应用程序读取该 json。您的 helm 部署不会修改容器本身。但是您可以将应用程序更改为读取 yaml 而不是 json。

如果您希望能够轻松查看 yaml 和 json 版本,您可以创建两个 configmap - 一个包含 yaml,另一个包含 json。

或者,如果您只是希望能够查看用于创建配置映射的 yaml 是什么,那么您可以使用它来helm get values <release_name>查看用于创建该版本的值(其中将包括条目的内容conffiles)。