Как сгладить сгенерированный configMap из configMapGenerator?

Я пытаюсь использовать Kustomize для создания карт ConfigMaps из файлов, содержащих пары ключ-значение. Мой файл настройки содержит следующее:

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

person Steven Liekens    schedule 13.03.2020    source источник


Ответы (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. Должен быть путь к локальному файлу env, например путь / к / file.env, где каждая строка файла представляет собой пару ключ = значение. Каждая строка будет отображаться как запись в поле данных ConfigMap.

person Crou    schedule 13.03.2020
comment
На самом деле, вариант env - это то, что я искал - ›сгенерируйте ConfigMap с именем my-system-env- ‹some-hash›, где каждая пара ключ / значение в env.txt отображается как запись данных . :) - person Steven Liekens; 13.03.2020
comment
Рад, что ссылка помогла :) Я добавлю это к ответу. - person Crou; 13.03.2020