kustomize 环境源文件中的多行值

Kri*_*a D 8 environment-variables kubernetes kustomize

我正在尝试设置多行值(ca 证书文件的内容)来为特定密钥设置 kustomize 环境文件,如下面的代码所示。有办法实现这一点吗?

注意:向 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
Run Code Online (Sandbox Code Playgroud)

some_params.yaml

varReference:
- path: data/ca.pem
  kind: ConfigMap
Run Code Online (Sandbox Code Playgroud)

some_params.env

ca_contents= |
-----BEGIN CERTIFICATE-----
YOUR CA CERTIFICATE CONTENTS
-----END CERTIFICATE-----
Run Code Online (Sandbox Code Playgroud)

运行以下命令: 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]*')

hob*_*yte 0

我认为你的问题是缩进。Kustomize 认为您的some_params.env文件仅由键组成。为了符合 YAML 规范,多行字符串需要按一个制表符缩进。所以some_params.env应该是这样的:

ca_contents= |
  -----BEGIN CERTIFICATE-----
  YOUR CA CERTIFICATE CONTENTS
  -----END CERTIFICATE-----
Run Code Online (Sandbox Code Playgroud)

如果您想了解有关多行字符串的更多详细信息,请查看以下来源: