Я пытаюсь использовать многострочную переменную, введенную в многострочный ключ в конфигурационной карте рулевой диаграммы, но форматирование шаткое.
Например, переменная, которую я пытаюсь установить, выглядит так:
plugin: |
Foo "example" {
plugin_data {
foo = "bar"
foz = "baz"
}
}
И существующая карта конфигурации, которую я пытаюсь передать, выглядит так:
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ template "chart.fullname" . }}
labels:
{{ include "chart.labels" . | indent 4 }}
data:
server.conf: |
server {
bind_address = "{{ .Values.config.bindAddress }}"
bind_port = "{{ .Values.config.bindPort }}"
log_level = "{{ .Values.config.logLevel }}"
plugins {
DataStore "sql" {
plugin_data {
database_type = "sqlite3"
}
}
{{- if .Values.config.plugin -}}
{{- toYaml .Values.config.plugin | nindent 4 -}}
{{- end -}}
}
Шаблонная карта конфигурации выглядит следующим образом, что явно не является допустимым YAML. Обратите внимание на |
перед шаблоном плагина var:
apiVersion: v1
kind: ConfigMap
metadata:
name: example
labels:
data:
server.conf: |
server {
bind_address = "0.0.0.0"
bind_port = "8081"
log_level = "DEBUG"
plugins {
DataStore "sql" {
plugin_data {
database_type = "sqlite3"
}
}
|
Foo "example" {
plugin_data {
foo = "bar"
foz = "baz"
}
}
Но то, что я ищу, это то, без дополнительных |
apiVersion: v1
kind: ConfigMap
metadata:
name: example
labels:
data:
server.conf: |
server {
bind_address = "0.0.0.0"
bind_port = "8081"
log_level = "DEBUG"
plugins {
DataStore "sql" {
plugin_data {
database_type = "sqlite3"
}
}
Foo "example" {
plugin_data {
foo = "bar"
foz = "baz"
}
Это возможно? Это не мои диаграммы, я просто пытаюсь добавить функциональность в репозиторий с открытым исходным кодом, поэтому изменение server.config невозможно.
ToYaml
является избыточным
значения.yaml
config:
bindAddress: 127.0.0.1
bindPort: 8080
logLevel: info
plugin: |
Foo "example" {
plugin_data {
foo = "bar"
foz = "baz"
}
}
см.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: test
data:
server.conf: |
server {
bind_address = "{{ .Values.config.bindAddress }}"
bind_port = "{{ .Values.config.bindPort }}"
log_level = "{{ .Values.config.logLevel }}"
plugins {
DataStore "sql" {
plugin_data {
database_type = "sqlite3"
}
}
{{- if .Values.config.plugin }}
{{- .Values.config.plugin | nindent 6 }}
{{- end }}
}
выход
apiVersion: v1
kind: ConfigMap
metadata:
name: test
data:
server.conf: |
server {
bind_address = "127.0.0.1"
bind_port = "8080"
log_level = "info"
plugins {
DataStore "sql" {
plugin_data {
database_type = "sqlite3"
}
}
Foo "example" {
plugin_data {
foo = "bar"
foz = "baz"
}
}
}