Helm:使用 "include" 进行模板化时额外换行
Helm: Extra newline when using "include" for templating
当我的图表使用 {{ include }}
从另一个文件中呈现模板时,我得到了一个奇怪的新行。例如,我的清单看起来像这样
containers:
- name: {{ .Release.Name }}
image: {{ .Values.global.image}}:{{ .Values.global.imageTag }}
imagePullPolicy: {{ .Values.global.pullPolicy }}
ports:
- containerPort: {{ .Values.gloabl.containerPort }}
{{ include "common_deployment" . }}
而我的 common_deployment
定义为
{{- define "common_deployment" }}
envFrom:
- secretRef:
name: {{ .Release.Name }}-secret
{{- end -}}
当我在 Helm 上干 运行 后查看我的清单时,我的模板看起来像这样
containers:
- name: test
image: myrepo/myimage:latest
imagePullPolicy: Always
ports:
- containerPort: 4444
envFrom:
- secretRef:
name: test-secret
注意 ports
和 envFrom
之间有一个新的谎言。我想知道这是否会影响我的 pods 的结果,因为挂载的卷存在问题,我希望能够在进入另一个兔子洞之前确保这个模板问题是罪魁祸首。
您可以使用连字符来禁止模板命令中的换行符。您已经在 define
和 end
.
中使用它
同样,你应该使用{{- include ... -}}
。
当您将 include
函数与 indent
函数一起使用时,需要考虑一件事来缩进模板,如下所示:
{{- include "common_deployment" . | indent 4 }}
上述命令还将include
引入的前导换行符缩进4个空格,因此输出结果如下(空格表示为$
):
ports:
- containerPort: 4444$$$$\n
$$$$envFrom:
$$$$ - secretRef:
$$$$ name: test-secret
这不会破坏 YAML 语法,因为无论如何都会忽略空格,但它可能会被报告,例如在 diff
输出中。
为防止这种情况,您可以使用 trim
function, and use the nindent
函数 trim 由 include
生成的前导换行符,如下所示:
{{- include "common_deployment" . | trim | nindent 4 }}
现在,只有模板的实际行被缩进,换行符由 nindent
函数插入:
ports:
- containerPort: 4444\n
$$$$envFrom:
$$$$ - secretRef:
$$$$ name: test-secret
当我的图表使用 {{ include }}
从另一个文件中呈现模板时,我得到了一个奇怪的新行。例如,我的清单看起来像这样
containers:
- name: {{ .Release.Name }}
image: {{ .Values.global.image}}:{{ .Values.global.imageTag }}
imagePullPolicy: {{ .Values.global.pullPolicy }}
ports:
- containerPort: {{ .Values.gloabl.containerPort }}
{{ include "common_deployment" . }}
而我的 common_deployment
定义为
{{- define "common_deployment" }}
envFrom:
- secretRef:
name: {{ .Release.Name }}-secret
{{- end -}}
当我在 Helm 上干 运行 后查看我的清单时,我的模板看起来像这样
containers:
- name: test
image: myrepo/myimage:latest
imagePullPolicy: Always
ports:
- containerPort: 4444
envFrom:
- secretRef:
name: test-secret
注意 ports
和 envFrom
之间有一个新的谎言。我想知道这是否会影响我的 pods 的结果,因为挂载的卷存在问题,我希望能够在进入另一个兔子洞之前确保这个模板问题是罪魁祸首。
您可以使用连字符来禁止模板命令中的换行符。您已经在 define
和 end
.
同样,你应该使用{{- include ... -}}
。
当您将 include
函数与 indent
函数一起使用时,需要考虑一件事来缩进模板,如下所示:
{{- include "common_deployment" . | indent 4 }}
上述命令还将include
引入的前导换行符缩进4个空格,因此输出结果如下(空格表示为$
):
ports:
- containerPort: 4444$$$$\n
$$$$envFrom:
$$$$ - secretRef:
$$$$ name: test-secret
这不会破坏 YAML 语法,因为无论如何都会忽略空格,但它可能会被报告,例如在 diff
输出中。
为防止这种情况,您可以使用 trim
function, and use the nindent
函数 trim 由 include
生成的前导换行符,如下所示:
{{- include "common_deployment" . | trim | nindent 4 }}
现在,只有模板的实际行被缩进,换行符由 nindent
函数插入:
ports:
- containerPort: 4444\n
$$$$envFrom:
$$$$ - secretRef:
$$$$ name: test-secret