es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

Tags:  ,

Answer

  1. Avatar for 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ón include en su lugar. Por ejemplo, podrías crear un archivo llamado library.tpl con el siguiente código:

    {{- $root := . -}}
    apiVersion: batch/v1
    kind: Job
    metadata:
      name: job-1
      ...
    {{- include "library.jobs" . }}
    

    Y luego usarlo en library.yaml de la siguiente manera:

    {{- include "library" . }}
    

    Esto incluirá tanto los documentos YAML job-1, job-2 y job-3 en la salida.

Comments are closed.