【问题标题】:accessing dynamic file in helm在 helm 中访问动态文件
【发布时间】:2022-02-22 16:52:24
【问题描述】:

我是 Kubernetes helm chart 的新手。有一个名为 configmap 的 yaml 文件。该文件包含与应用程序相关的所有配置。由于该文件包含大量数据,因此我试图将一些数据放入新文件并使用 FILE 对象进行访问。因此创建了两个不同的文件,其名称为: data1.yamldata2.yaml
data1.yaml 文件只有静态数据。另一方面,data2.yaml 文件包含动态数据(一些变量也像$.Values.appUrl)。 我能够使用 FILE 对象将静态文件(data1.yaml)读取到 configmap.yaml 文件。我也可以读取 data2.yaml 文件,但由于该文件还包含一些变量,因此变量值不会被实际值替换。它在 configmap 文件中打印相同的变量。所以我的问题是, 有什么方法可以访问动态文件(包含可变类型数据)?
以下是显示的示例数据。

configmap.yaml 文件是->

kind: ConfigMap
apiVersion: v1
metadata:
  name: example-configmap
  namespace: default
data1: {{ .File.Get "data1.yaml" | indent 2 }}
data2: {{ .File.Get "data2.yaml" | indent 2 }}

data1.yaml 文件是 ->

data1:
  ui.type:2
  ui.color1:red
  ui.color2:green

data2.yaml 文件是 ->

system.data.name: "app-name"
  system.data.url: {{ $.Values.appUrl }}   # variable
  system.data.type_one: "app-type-xxx"
  system.data.value: "3"
  system.interface.properties: |  

Values.yaml 文件是 ->

appUrl: "https://app-name.com"

输出:

kind: ConfigMap
apiVersion: v1
metadata:
  name: example-configmap
  namespace: default
data1:
  ui.type:2
  ui.color1:red
  ui.color2:green
data2:
  system.data.name: "app-name"
  system.data.url: {{ $.Values.appUrl }}    # here should be "https://app-name.com" 
  system.data.type_one: "app-type-xxx"
  system.data.value: "3"
  system.interface.properties: |

【问题讨论】:

    标签: kubernetes kubernetes-helm helmfile


    【解决方案1】:
    {{ (tpl (.Files.Glob "data2.yaml").AsConfig . ) | indent 2 }}
    

    使用上述语法,它选择变量的实际值。但它也会打印如下文件名:

    data2.yaml: |-
    

    所以我使用以下语法解决了这个问题:

    {{ (tpl (.Files.Get "data2.yaml") . ) | indent 2 }}
    

    【讨论】:

    • 你是对的。我编辑了我的答案。谢谢。
    【解决方案2】:

    您可以使用tpl function 来处理模板文件,如下所示:

    configmap.yaml:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: example-configmap
    data:
    {{ (tpl (.Files.Get "data2.yaml") . ) | indent 2 }}
    

    请注意,configmap 默认具有data 键。我认为您应该在此密钥下捕获数据,而不是创建 data1data2 但不确定。

    values.yaml:

    appUrl: "https://app-name.com"
    

    data2.yaml:(缩进更正,否则失败)

    system.data.name: "app-name"
    system.data.url: {{ .Values.appUrl }}   # variable
    system.data.type_one: "app-type-xxx"
    system.data.value: "3"
    system.interface.properties: |
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-28
      • 2018-08-19
      • 1970-01-01
      • 2021-08-14
      相关资源
      最近更新 更多