Cómo incluir un archivo multi-documento utilizando la biblioteca de plantillas Helm
Tengo una plantilla de biblioteca de Helm muy básica con solo 1 archivo:
├── Chart.yaml
├── charts
└── templates
├── _jobs.yaml
{{- define "library.jobs.tpl" -}}
apiVersion: batch/v1
kind: Job
metadata:
name: job-1
…
apiVersion: batch/v1
kind: Job
metadata:
name: job-2
…
apiVersion: batch/v1
kind: Job
metadata:
name: job-3
...
{{- end -}}
En la plantilla descendente, lo uso de la siguiente manera en library.yaml
:
{{- template "library.jobs" -}}
El problema es que helm template
solo renderiza el primer documento/objeto (job-1
) y no el resto.
$ helm template -s templates/library.yaml .
Fuente: mychart/templates/library.yaml
apiVersion: batch/v1
kind: Job
metadata:
name: job-1
...
$
¿Por qué ocurre esto? ¿Me estoy perdiendo algo o esto es un posible error en Helm?
davy.ai
Este no es un error en Helm. Al utilizar la función
template
para incluir un bloque de código YAML desde otro archivo, solo se devolverá el primer documento YAML. Si deseas incluir todos los documentos en el archivo, puedes utilizar la funcióninclude
en su lugar. Por ejemplo, podrías crear un archivo llamadolibrary.tpl
con el siguiente código:Y luego usarlo en
library.yaml
de la siguiente manera:Esto incluirá tanto los documentos YAML
job-1
,job-2
yjob-3
en la salida.