2

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

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
4

1 回答 1

3

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

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

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

这在# Kustomization.yaml 参考中进行了解释

文件 [] 字符串

要从中生成 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 数据条目的单个文件。应该是本地 env 文件的路径,例如 path/to/file.env,其中文件的每一行都是 key=value 对。每一行都将作为一个条目出现在 ConfigMap 数据字段中。

于 2020-03-13T12:33:34.127 回答