【问题标题】:How to flatten generated configMap from configMapGenerator?如何展平从 configMapGenerator 生成的 configMap?
【发布时间】:2020-03-13 12:03:10
【问题描述】:

我正在尝试使用 Kustomize 从包含键值对的文件中生成 ConfigMap。我的 kustomization 文件包含以下内容:

configMapGenerator:
    - name: my-config
      files:
          - environment.properties

environment.properties 文件包含以下内容:

FIRST: 1
SECOND: 2
LAST: 3

生成的输出包含以下内容:

apiVersion: v1
data:
  environment.properties: |
    FIRST: 1
    SECOND: 2
    LAST: 3
kind: ConfigMap

我怎样才能展平这个数据结构?我宁愿有这个输出:

apiVersion: v1
data:
  FIRST: 1
  SECOND: 2
  LAST: 3
kind: ConfigMap

【问题讨论】:

    标签: kubernetes configmap kustomize


    【解决方案1】:

    这不是扁平化的。这将删除那些 key=value 对所在的文件名。

    如果你想要简单的平面输出,你应该使用literals

    configMapGenerator: 
    - name: the-map 
      literals: 
        - FIRST: 1
        - SECOND: 2
        - LAST: 3
    

    这在# Kustomization.yaml Reference上有解释

    文件 []字符串

    从中生成 ConfigMap 数据条目的文件列表。每个项目都应该是本地文件的路径,例如path/to/file.config,文件名将显示为 ConfigMap 数据字段中的条目,其内容为值。

    文字 []字符串

    文字 ConfigMap 数据条目的列表。每个项目都应该是一个键和文字值,例如somekey=somevalue,键/值将作为条目出现在 ConfigMap 数据字段中。

    apiVersion: kustomize.config.k8s.io/v1beta1
    kind: Kustomization
    configMapGenerator:
    # generate a ConfigMap named my-java-server-props-<some-hash> where each file
    # in the list appears as a data entry (keyed by base filename).
    - name: my-java-server-props
      files:
      - application.properties
      - more.properties
    # generate a ConfigMap named my-java-server-env-vars-<some-hash> where each literal
    # in the list appears as a data entry (keyed by literal key).
    - name: my-java-server-env-vars
      literals:    
      - JAVA_HOME=/opt/java/jdk
      - JAVA_TOOL_OPTIONS=-agentlib:hprof
    # generate a ConfigMap named my-system-env-<some-hash> where each key/value pair in the
    # env.txt appears as a data entry (separated by \n).
    - name: my-system-env
      env: env.txt
    

    编辑:

    正如@Steven Liekens 所指出的,这回答了这个问题:

    环境字符串

    用于生成 ConfigMap 数据条目的单个文件。应该是本地环境文件的路径,例如path/to/file.env,其中文件的每一行都是一个 key=value 对。每一行都将作为一个条目出现在 ConfigMap 数据字段中。

    【讨论】:

    • 实际上,env 选项是我正在寻找的 -> 生成一个名为 my-system-env- 的 ConfigMap,其中 env 中的每个键/值对.txt 显示为数据条目。 :)
    • 很高兴该链接有帮助:) 我会将其添加到答案中。
    • 这应该是正确的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-09
    • 2020-02-25
    • 2017-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多