将 yaml(作为数据)放入配置映射中

Put yaml (as data) into a config map

有没有办法在配置映射中存储 yaml 数据?

在我的values.yaml中,我有类似下面的东西

config:
  filters:
    - kind: Pod
      apiVersion: v1
...

在我的配置图中,我目前正在做

...
data:
  config.yaml: |-
    {{ .Values.config }}

但是在生成的 configmap 中,数据是“内联的”并且格式如下

...
data:
  config.yaml: >-
    map[filters:[map[apiVersion:v1...

这不是 yaml,因此读取它的应用无法解析。

假设您有 demo-chart:

.
└── demo
    ├── charts
    ├── Chart.yaml
    ├── templates
    │   ├── configmap.yaml
    │   ├── _helpers.tpl
    │   └── NOTES.txt
    └── values.yaml

values.yaml:

config:
  filters:
    - kind: Pod
      apiVersion: v1

configmap.yaml:

{{- if .Values.config }}
apiVersion: v1
kind: ConfigMap
metadata:
  name: demo-name
data:
  config.yml: |- {{- toYaml .Values.config | nindent 4 }}
{{- end }}

解释: toYaml将从values.yaml加载的数据解析为YAML,nindent在每行前放置4个空格。

检查:

$ helm template demo
---
# Source: demo/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: demo-name
data:
  config.yml: |-
    filters:
    - apiVersion: v1
      kind: Pod

猜测多于答案,但你试过了吗:

data:
  config.yaml: |-
    config:
      filters:
        - kind: Pod
          apiVersion: v1

yaml 中 >-|- 之间存在差异。