Configmap 缩进无法正确呈现
Configmap indentation does not render properly
我目前正在为 Kubernetes Cronjob 构建通用图表。我有以下模板函数来包含一个 configMap:
{{- define "cronjob.volume.configMap" -}}
{{- $name := index . 0 -}}
{{- $configMapName := index . 1 -}}
name: {{ $name }}
configMap:
name: {{ $configMapName }}
{{- end -}}
我将此模板包含在这样的图表中:
spec:
jobTemplate:
spec:
template:
spec:
{{- if .Values.configs }}
volumes:
- {{ include "cronjob.volume.configMap" (list "config" "cronjob-config") }}
{{- end }}
我的 values.yaml 看起来像这样:
configs:
test-config: |-
test-config-string
当 运行 helm template
时,我希望结果如下:
spec:
jobTemplate:
spec:
template:
spec:
volumes:
- name: config
configMap:
name: cronjob-config
然而,生成的结果是这样的:
spec:
jobTemplate:
spec:
template:
spec:
volumes:
- name: config
configMap:
name: cronjob-config
我的模板的第一行有适当的缩进,但是第二行和第三行的缩进级别与 volumes
相同,就在 spec.jobTemplate.spec.template.spec
下方。我曾尝试将 include
而不是 template
与 indent
结合使用,但不幸的是没有成功。我做错了什么?
您可以使用 nindent 函数并从辅助函数中删除缩进:
_helpers.tpl
{{ define "cronjob.volume.configMap" }}
{{- $name := index . 0 -}}
{{- $configMapName := index . 1 -}}
- name: {{ $name }}
configMap:
name: {{ $configMapName }}
{{- end -}}
cronjob.yaml
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: hello
spec:
schedule: "*/1 * * * *"
jobTemplate:
spec:
template:
spec:
{{- if .Values.configs }}
volumes:
{{- include "cronjob.volume.configMap" (list "config" "cronjob-config") | nindent 10 }}
{{- end }}
containers:
- name: hello
image: busybox
args:
- /bin/sh
- -c
- date; echo Hello from the Kubernetes cluster
restartPolicy: OnFailure
➜ helm template .
---
# Source: achart/templates/cronjob.yaml
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: hello
spec:
schedule: "*/1 * * * *"
jobTemplate:
spec:
template:
spec:
volumes:
- name: config
configMap:
name: cronjob-config
containers:
- name: hello
image: busybox
args:
- /bin/sh
- -c
- date; echo Hello from the Kubernetes cluster
restartPolicy: OnFailure
我目前正在为 Kubernetes Cronjob 构建通用图表。我有以下模板函数来包含一个 configMap:
{{- define "cronjob.volume.configMap" -}}
{{- $name := index . 0 -}}
{{- $configMapName := index . 1 -}}
name: {{ $name }}
configMap:
name: {{ $configMapName }}
{{- end -}}
我将此模板包含在这样的图表中:
spec:
jobTemplate:
spec:
template:
spec:
{{- if .Values.configs }}
volumes:
- {{ include "cronjob.volume.configMap" (list "config" "cronjob-config") }}
{{- end }}
我的 values.yaml 看起来像这样:
configs:
test-config: |-
test-config-string
当 运行 helm template
时,我希望结果如下:
spec:
jobTemplate:
spec:
template:
spec:
volumes:
- name: config
configMap:
name: cronjob-config
然而,生成的结果是这样的:
spec:
jobTemplate:
spec:
template:
spec:
volumes:
- name: config
configMap:
name: cronjob-config
我的模板的第一行有适当的缩进,但是第二行和第三行的缩进级别与 volumes
相同,就在 spec.jobTemplate.spec.template.spec
下方。我曾尝试将 include
而不是 template
与 indent
结合使用,但不幸的是没有成功。我做错了什么?
您可以使用 nindent 函数并从辅助函数中删除缩进:
_helpers.tpl
{{ define "cronjob.volume.configMap" }}
{{- $name := index . 0 -}}
{{- $configMapName := index . 1 -}}
- name: {{ $name }}
configMap:
name: {{ $configMapName }}
{{- end -}}
cronjob.yaml
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: hello
spec:
schedule: "*/1 * * * *"
jobTemplate:
spec:
template:
spec:
{{- if .Values.configs }}
volumes:
{{- include "cronjob.volume.configMap" (list "config" "cronjob-config") | nindent 10 }}
{{- end }}
containers:
- name: hello
image: busybox
args:
- /bin/sh
- -c
- date; echo Hello from the Kubernetes cluster
restartPolicy: OnFailure
➜ helm template .
---
# Source: achart/templates/cronjob.yaml
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: hello
spec:
schedule: "*/1 * * * *"
jobTemplate:
spec:
template:
spec:
volumes:
- name: config
configMap:
name: cronjob-config
containers:
- name: hello
image: busybox
args:
- /bin/sh
- -c
- date; echo Hello from the Kubernetes cluster
restartPolicy: OnFailure