如何使用Json文件作为Helm的值源?

如何使用Json文件作为Helm的值源?,json,kubernetes-helm,Json,Kubernetes Helm,我有一个简单的json配置文件,格式如下: { “应用程序”:[ { “appName”:“app1” }, { “appName”:“app2” } ] } 现在,我有两个头盔图表,定义了每个应用程序的部署: apiVersion:v1 种类:部署 元数据: 名称:app1 #等等等等等等 --- 版本:v1 种类:部署 元数据: 姓名:app2 #等等等等等等 我想做的是在安装时加载json配置文件,并使用它生成所需的部署图,如下所示: #“config”保存加载的json文件 {{-r

我有一个简单的json配置文件,格式如下:

{
“应用程序”:[
{
“appName”:“app1”
},
{
“appName”:“app2”
}
]
}
现在,我有两个头盔图表,定义了每个应用程序的部署:

apiVersion:v1 种类:部署 元数据: 名称:app1 #等等等等等等 --- 版本:v1 种类:部署 元数据: 姓名:app2 #等等等等等等 我想做的是在安装时加载json配置文件,并使用它生成所需的部署图,如下所示:

#“config”保存加载的json文件
{{-range.Values.config.applications}}
版本:v1
种类:部署
元数据:
名称:{{.appName | quote}
{{-end}

这可能吗?我在这里尝试了很多答案,但几乎所有答案都与通过配置映射将json文件传递给应用程序有关。如何在helm中加载json文件并使用图表本身中的值?请注意,其他应用程序也在使用此文件,因此我不能将其更改为YAML文件或类似文件。

我设法找到了一种解决方法

多亏了这个答案,我发现python有一些从json到yaml的巧妙技巧(因为json是yaml的一个子集)。在运行helm安装之前,我添加了一个预处理步骤,以转换我的config.json,如下所示:

python -c 'import json; import yaml; print(yaml.dump(json.load(open("config.json"))))' > config.yaml
然后我可以通过
-f config.yaml
标志将生成的文件传递到helm中,并引用
.Values
对象的字段,包括一个
fromJson
函数。(或者,如果您希望顶级对象是数组,
fromJsonArray
),则应该能够将其与结合起来,以便能够执行以下操作:

{{-$config:=.Files.Get“config.json”| fromJson}
{{-range$config.applications}
名称:{{.appName | quote}
{{/*或者你在问题*/}
{{-end}