Многострочные значения в исходном файле среды kustomize

Я пытаюсь установить многострочные значения (содержимое файла сертификата CA), чтобы настроить файл среды для определенного ключа, как показано в приведенном ниже коде. Есть ли способ добиться этого?

Примечание. Добавление кавычек к значению в some_params.env не работает.

kustomize.yaml

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
commonLabels:
  role: authentication
bases:
- ./somebase

configMapGenerator:
- name: some-parameters
  env: some_params.env
vars:
- name: ca_contents
  objref:
    kind: ConfigMap
    name: some-parameters
    apiVersion: v1
  fieldref:
    fieldpath: data.ca_contents
configurations:
 - some_params.yaml

some_params.yaml

varReference:
- path: data/ca.pem
  kind: ConfigMap

some_params.env

ca_contents= |
-----BEGIN CERTIFICATE-----
YOUR CA CERTIFICATE CONTENTS
-----END CERTIFICATE-----

Выполнение следующей команды: kustomize build base

Возврат: Error: NewResMapFromConfigMapArgs: NewResMapFromConfigMapArgs: env source file: some_params.env: "-----BEGIN CERTIFICATE-----" is not a valid key name: a valid environment variable name must consist of alphabetic characters, digits, '_', '-', or '.', and must not start with a digit (e.g. 'my.env-name', or 'MY_ENV.NAME', or 'MyEnvName1', regex used for validation is '[-._a-zA-Z][-._a-zA-Z0-9]*')


person Krishna D    schedule 22.07.2019    source источник


Ответы (1)


Похоже, вы создаете ConfigMaps с помощью генераторов в Kustomize. И при этом вы пытаетесь передать ему содержимое желаемой ConfigMap прямо в файле kustomization.yml.

Лучшей практикой было бы вместо этого сохранить содержимое этих файлов конфигурации на диск и хранить их в том же месте, что и ваши манифесты. Затем импортируйте их из файла в свои генераторы в Kustomize. Например:

configMapGenerator:
    - name: ca_contents
      files:
        - ca.crt

Это создаст ConfigMap с именем ca.crt с содержимым файла.

Однако при желании вы можете сделать то же самое с оператором literals и использовать многострочную конфигурацию прямо в вашем kustomization.yml. Например:

configMapGenerator:
    - name: ca_contents
      literals:
        - ca.crt=|
            CERT_CONTENTS
            EACH_NEWLINE_IS_INDENTED_ANOTHER_TIME
            You_Can_Add_Additional_literals
        - ca.key=>
            AND_EVEN
            CONCATENATE_THEM
            _ONTO_ONE_LINE_WITH_OTHER_OPERATORS_LIKE_>
        - cert.crt="You can even mix literals with files in generators."
      files:
        - cert.key

Дайте мне знать, если в этом есть смысл. Я советую вам хранить конфигурацию в файлах и импортировать их в генераторы, но любое решение должно работать. Не стесняйтесь обращаться, если вам понадобится другая помощь. Kustomize - действительно крутой проект!

person TJ Zimmerman    schedule 28.03.2020
comment
Это не работает. Символы | и > будут частью содержимого configMap. - person Christian Ciach; 19.07.2021