Kubernetes 在ConfigMap中使用Helm包含shell脚本会导致YAML错误
我想将shell脚本模板装载到容器中 我有以下Kubernetes 在ConfigMap中使用Helm包含shell脚本会导致YAML错误,kubernetes,kubernetes-helm,Kubernetes,Kubernetes Helm,我想将shell脚本模板装载到容器中 我有以下configmap.yaml: apiVersion: v1 kind: ConfigMap metadata: name: {{ template "myservice-chart.fullname" . }}--scripts-configmap labels: app: {{ template "myservice-chart.name" . }} chart: {{ template "myservice-chart.
configmap.yaml
:
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ template "myservice-chart.fullname" . }}--scripts-configmap
labels:
app: {{ template "myservice-chart.name" . }}
chart: {{ template "myservice-chart.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
data:
setup: |
{{ include "setup" . | indent 4 }}
这是我的设置。tpl
:
{{- define "setup" }}
#!/bin/bash
echo "Hello world!"
{{- end }}
当我进行Helm试运行时,Helm生成以下(有效)YAML:
当我在没有--干运行的情况下运行它时,它会生成以下错误:
configmap.yaml:将yaml转换为JSON时出错:yaml:第13行:未执行
查找所需的密钥
看起来Helm在设置:|
下面创建了一个无用的空行,因此缩进不正确
我就是这样修复的:
...
data:
setup: |
# Useless line to prevent "did not find expected key"
{{ include "setup" . | indent 4 }}
根据:
模板声明的花括号语法可以使用
告诉模板引擎选择空格的特殊字符。
{{-(添加了破折号和空格)表示应该使用空格
bechomped left,而-}}表示右边的空格应该是
消耗。小心!换行符是空白
因此,为了防止在设置下面出现无用的空行:|
configmap.yaml应如下所示:
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ template "myservice-chart.fullname" . }}--scripts-configmap
labels:
app: {{ template "myservice-chart.name" . }}
chart: {{ template "myservice-chart.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
data:
setup: |
{{- include "setup" . | indent 4 }}
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ template "myservice-chart.fullname" . }}--scripts-configmap
labels:
app: {{ template "myservice-chart.name" . }}
chart: {{ template "myservice-chart.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
data:
setup: |
{{- include "setup" . | indent 4 }}