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

问题描述 投票:0回答:3

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

在我的

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

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

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

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

但是在结果中

configmap
数据被“内联”并格式化为这样

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

这不是

yaml
,因此无法被读取它的应用程序解析。

kubernetes kubernetes-helm configmap
3个回答
4
投票

假设您有一个

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

0
投票

另一个选择是使用

.Files.Get
(请参阅文档):您可以将 YAML 文件(或基本上任何其他文本文件)存储在
template
目录之外,并将原始内容导入到 configmap 中(只需记住
| indent
)。

将文本放在单独的文件中的另一个好处是,您的文本编辑器可以识别该语言(yaml、python、bash...),并且您可以利用开发工具的全面支持,这在复杂性时非常方便图表的增长。

例如,假设您的图表已使用

raw-files
目录更新:

mychart
  raw-files           <<<
   │  ├─ example.yaml <<<
   │  └─ script.sh    <<<
   ├─ templates
   │  ├─ configmap.yaml
   │  └─ ...
   ├─ Chart.yaml
   └─ values.yaml

您可以导入

example.yaml
的内容,如下:

apiVersion: v1
kind: ConfigMap
metadata:
  name: demo-name
data:
  config.yml: |-
{{ .Files.Get "raw-files/example.yaml" | indent 4}}
$ helm template mychart
---
# Source: test/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: demo-name
data:
  config.yml: |-
    filters:
      - kind: Pod
        apiVersion: v1

-3
投票

更多的是猜测而不是答案,但你尝试过吗:

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

yaml 中的

>-
|-
之间是有区别的。

© www.soinside.com 2019 - 2024. All rights reserved.