kubernetes - ConfigMap 文件中的 Helm 变量

标签 kubernetes kubernetes-helm helm3

所以我有一个 ConfigMap,里面有一个 json 配置文件,如下所示:

apiVersion: v1
kind: ConfigMap
metadata:
  name: my-config-map
data:
  config.json: |+
  {
    "some-url": "{{ .Values.myApp.someUrl }}"
  }

但是我已经将配置文件放在 ConfigMap 的 yaml 之外,并在那里引用它们,如下所示:

apiVersion: v1
kind: ConfigMap
metadata:
  name: my-config-map
data:
  config.json: |-
{{ .Files.Get .Values.myApp.configFile | indent 4 }}

但现在我希望我的 json 如下所示

{
  "some-url": "{{ .Values.myApp.someUrl }}"
}

我唯一尝试过的就是我刚才展示的。我什至不知道如何寻找这个答案。

这可能吗?

最佳答案

读取文件时,其内容是一个字符串。它不会被评估为模板,因此您不能像以前那样使用变量。

但是,helm 有一个专门用于此目的的函数,称为 tpl :

apiVersion: v1
kind: ConfigMap
metadata:
  name: my-config-map
data:
  config.json: |- 
{{ tpl (.Files.Get .Values.myApp.configFile) $ | indent 4 }}

tpl 函数采用模板字符串并使用一些上下文来呈现它。当您的值文件中有模板片段或某些文件内容中有模板片段时,这非常有用。

关于kubernetes - ConfigMap 文件中的 Helm 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73490636/

相关文章:

kubernetes - Helm 防止在 helm init 上添加默认图表 repo

kubernetes - 如何在两个 Helm chart 之间传递数据?

Kubernetes:扩展状态子资源是否需要新的 API 版本?

kubernetes - 无法在 Pod 中启动多个容器 - 同步 pod 时出错,正在跳过

kubernetes - 字段kubernetes.io/ingress.class的 Helm 升级命令错误

kubernetes - helm 模板语言中的全局变量以避免重复

azure - 是否可以更改 Azure AKS 部署中的子网?

kubernetes - 如何使用 kubectl 命令列出运行 pod 的容器及其信息

kubernetes-helm - Helm 模板 - 覆盖值文件

kubernetes-helm - Helm 从多个配置 YAML 文件构建动态 configmap