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

标签 json kubernetes-helm

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

{
   "applications" : [
       {
           "appName": "app1"
       },
       {
           "appName": "app2"
       }
   ]
}

现在我有 2 个 helm 图表,定义了每个应用程序的部署:

apiVersion: v1
kind: Deployment
metadata:
  name: app1
# etc, etc, etc
---
apiVersion: v1
kind: Deployment
metadata:
  name: app2
# etc, etc, etc

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

# "config" holds the loaded json file
{{- range .Values.config.applications }}
apiVersion: v1
kind: Deployment
metadata:
  name: {{ .appName | quote }}
{{- end}}

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

最佳答案

Helm 有 a couple of undocumented functions ,包括一个 fromJson 函数。 (或者,如果您希望顶级对象是一个数组,fromJsonArray。)您应该能够将其与 file-retrieval calls 结合起来。能够做类似的事情:

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

关于json - 如何使用 Json 文件作为 Helm 的 Values 来源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65183687/

相关文章:

javascript - 从 JSON 文件创建简单的 Node.js API

java - 意外字符 ('<'(代码 60))

azure - 如何使用 helm 图表中的文件将 azure key Vault secret 传递到 kubernetes pod

php-fpm 进程在 Kubernetes 中接收 SIGKILL 信号

yaml - 如何在 Helm chart 中从 values.yaml 获取值到 _helpers.tpl

kubernetes-helm - 领事 Helm 失败

javascript - 如何在 Angular 2+ 中获取 json 数据

javascript - 将对象循环到另一个对象/数组中

kubernetes-helm - 在 Helm 模板中编码整数

java - JSONObject getString 在第一次运行时返回 null