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

red*_*tom 2 json kubernetes-helm

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

{
   "applications" : [
       {
           "appName": "app1"
       },
       {
           "appName": "app2"
       }
   ]
}
Run Code Online (Sandbox Code Playgroud)

现在我有 2 个舵图定义每个应用程序的部署:

apiVersion: v1
kind: Deployment
metadata:
  name: app1
# etc, etc, etc
---
apiVersion: v1
kind: Deployment
metadata:
  name: app2
# etc, etc, etc
Run Code Online (Sandbox Code Playgroud)

我想做的是在安装时加载该 json 配置文件并使用它来生成所需的部署图表,如下所示:

# "config" holds the loaded json file
{{- range .Values.config.applications }}
apiVersion: v1
kind: Deployment
metadata:
  name: {{ .appName | quote }}
{{- end}}
Run Code Online (Sandbox Code Playgroud)

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

Dav*_*aze 5

Helm 有几个未记录的函数,其中包括一个fromJson函数。(或者,如果您希望顶级对象是一个数组,fromJsonArray。)您应该能够将其与文件检索调用结合起来,以便能够执行以下操作:

{{- $config := .Files.Get "config.json" | fromJson }}
{{- range $config.applications }}
name: {{ .appName | quote }}
{{/* and otherwise as you have it in the question */}}
{{- end }}
Run Code Online (Sandbox Code Playgroud)