Kubernetes 在ConfigMap中使用Helm包含shell脚本会导致YAML错误

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.

我想将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.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 }}