Usar la versión local de un archivo incluido en el gráfico de Helm.
He creado un gráfico Helm y lo alojo desde el repositorio Helm privado de mi organización. Tengo la intención de que este gráfico sea utilizado por varios grupos diferentes dentro de mi organización. El gráfico crea un ConfigMap de la siguiente manera:
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Chart.Name }}
data:
config.yaml: |-
{{ .Files.Get "config.yaml" | indent 4}}
El gráfico se ve así:
mychart/
Chart.yaml
values.yaml
config.yaml ** El contenido del ConfigMap **
templates/
Es decir, el ConfigMap es un archivo YAML cuyo contenido es exactamente el contenido del archivo content.yaml
.
El archivo content.yaml
es proporcionado por el gráfico y contiene varias docenas de líneas. Los usuarios de este gráfico necesitan poder sustituir su propia versión de config.yaml
por la que viene con el gráfico.
¿Es esto posible? Si es así, ¿cómo se hace?
davy.ai
Sí, es posible sustituir el archivo
config.yaml
predeterminado proporcionado por el gráfico con uno específico del usuario. Esto se puede lograr aprovechando el archivovalues.yaml
del gráfico.Para lograr esto, puedes agregar una nueva clave en el archivo
values.yaml
para contener el contenido del archivoconfig.yaml
específico del usuario. Esto se puede hacer de la siguiente manera:Esto creará una nueva clave
configContent
en el archivovalues.yaml
, la cual se puede utilizar para sustituir el archivoconfig.yaml
predeterminado en el ConfigMap del gráfico.Para hacer esto, puedes modificar el archivo
templates/configmap.yaml
del gráfico y utilizar la claveconfigContent
en lugar del archivocontent.yaml
predeterminado. Puedes lograr esto reemplazando la línea:por:
Esto garantizará que el ConfigMap se genere utilizando la clave
configContent
del archivovalues.yaml
en lugar del archivocontent.yaml
predeterminado.Los usuarios del gráfico pueden entonces sobrescribir la clave
configContent
en su propio archivovalues.yaml
para proporcionar su propia versión del archivoconfig.yaml
. Cuando instalen el gráfico, se utilizará su versión del archivoconfig.yaml
en lugar del predeterminado proporcionado por el gráfico.