我正在尝试使用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
答案 0 :(得分: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所指出的,这回答了问题:
env 字符串
用于从中生成ConfigMap数据条目的单个文件。应该是本地环境文件的路径,例如path / to / file.env,其中文件的每一行都是键=值对。每行将作为一个条目出现在ConfigMap数据字段中。