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.

Separación de cadena de Helm Chart: no se puede acceder a la clave del mapa.

Quiero leer variables de entorno con una herramienta Helper de Helm Chart leyendo el archivo línea por línea y dividiendo cada línea individualmente para mostrarlas como YAML válido: key: value.

Después de dividir una sola línea, la clave no es accesible:

_helpers.tpl

{{/*
Listar los valores de las variables de entorno desde el archivo especificado
*/}}
{{- define “website.list-env-variables” -}}
{{- range .Files.Lines .Values.envFile }}
{{- $envArr := split “=” . }}
a: {{($envArr._0)}} <<<<<<———– error
{{- end }}
{{- end }}

error:

Error: no se pueden generar objetos de Kubernetes desde el manifiesto de la versión: error al validar “”: error al validar los datos: tipo de objeto desconocido “nil” en Secret.data.a

Sin usar la clave ($envArr) la salida es:

a: "map[_0:DB_PASSWORD _1:'mi-contraseña-secreta']"

Se agradecería la ayuda. Gracias.

ACTUALIZACIÓN

.env.dev

DB_NAME=nombre_de_la_base_de_datos
DB_USER=root
DB_PASSWORD=mi-contraseña-secreta

Versión de Helm

version.BuildInfo{Version:”v3.5.0″, GitCommit:”32c22239423b3b4ba6706d450bd044baffdcf9e6″, GitTreeState:”clean”, GoVersion:”go1.15.6″}

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para mostrar las variables de entorno como YAML válido con el formato clave: valor, utilizando un ayudante de Helm Chart, puedes modificar tu archivo _helpers.tpl de la siguiente manera:

    {{/*
    Listar valores de entorno de un archivo especificado
    */}}
    {{- define "website.list-env-variables" -}}
    {{- range $line := .Files.Lines .Values.envFile }}
        {{- $envArr := split "=" $line }}
        {{- printf "%s: %s\n" (trimSuffix $envArr.0 "\n") $envArr.1 | toYaml | nindent 4 }}
    {{- end }}
    {{- end }}
    

    Explicación:

    • La función Files.Lines lee las líneas del archivo especificado (envFile) y devuelve una lista de cadenas.
    • Para cada línea, la dividimos en pares clave-valor utilizando la función split.
    • $envArr.0 contiene la clave y $envArr.1 contiene el valor.
    • La función trimSuffix elimina el salto de línea final de la clave.
    • La función printf formatea el par clave-valor como una línea única de YAML, por ejemplo, DB_PASSWORD: mi-contraseña-secreta.
    • La función toYaml convierte el par clave-valor a YAML.
    • La función nindent hace una sangría en la salida con 4 espacios.

    Con la modificación anterior, la salida será:

    DB_NAME: nombre_base_de_datos
    DB_USER: root
    DB_PASSWORD: mi-contraseña-secreta
    

    Espero que esto ayude. Avísame si tienes alguna otra pregunta.

Comments are closed.