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.

Usando Helm para implementar un microservicio de Spring Boot en K8s

Hemos construido algunos Microservicios (MS) que se han implementado en los clústeres K8s de nuestra empresa.

Para la implementación actual, cualquiera de nuestros MS se construirá como una imagen Docker y se implementarán manualmente siguiendo los siguientes pasos; y funciona bien:
– Crear Configmap
– Instalar un Service.yaml
– Instalar un Deployment.yaml
– Instalar un Ingress.yaml

Ahora estoy explorando Helm v3 para simplificar y encapsular estas implementaciones. He leído mucha documentación de Helm v3, pero todavía no he encontrado respuestas a algunas preguntas simples y espero obtener una respuesta aquí antes de absorber toda la documentación junto con Go y SPRIG y luego descubrir que no se ajusta a nuestras necesidades.

Nuestro MS de Spring tiene 5 archivos application.properties separados que son específicos para cada uno de nuestros 5 entornos. Estos archivos de propiedades son formato key=value con varias líneas y algunos comentarios precedidos por #.

# valores basados en el entorno
key1=value1
key2=value2

Usando helm create, instalé un gráfico llamado ./deploy en el directorio raíz que creó automáticamente ./templates y un values.yaml.

El problema es que necesito acceder a los archivos application.properties fuera del directorio ./deploy del gráfico.

Desde Helm, me gustaría hacer referencia a estos 2 archivos desde la sección Data: de mi configmap.yaml.

  • ./src/main/resource/dev/application.properties
  • ./src/main/resources/logback.xml

Y quiero mantener estos archivos en su formato actual, sin convertirlos a formato JSON/YAML.

¿Helm v3 permite esto?

Imagen

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Sí, Helm v3 te permite hacer referencia a archivos externos en tus plantillas de configuración.

    En tu caso, puedes utilizar la función file() en el archivo values.yaml para leer el contenido de tus archivos application.properties y logback.xml, y luego pasarlos al archivo configmap.yaml utilizando el campo data.

    Aquí tienes un ejemplo de archivo values.yaml que muestra cómo hacer esto:

    # Archivo values para nuestro Helm chart de Spring MS
    
    applicationProperties: |-
      {{- printf "%s" (file "/ruta/al/archivo/application.properties") | nindent 2 }}
    
    logbackXml: |-
      {{- printf "%s" (file "/ruta/al/archivo/logback.xml") | nindent 2 }}
    
    configmap:
      data:
        application.properties: |
    {{ .Values.applicationProperties }}
        logback.xml: |
    {{ .Values.logbackXml }}
    

    En este archivo values.yaml, estamos definiendo dos variables applicationProperties y logbackXml, que leen el contenido de los archivos correspondientes utilizando la función file().

    Luego, pasamos estas variables a la sección data del archivo configmap.yaml utilizando la sintaxis {{ .Values.nombreVariable }}.

    Ten en cuenta que en la función file(), debes proporcionar la ruta absoluta a tus archivos externos.

    Espero que esto te ayude. Si tienes más preguntas o inquietudes, avísame.

Comments are closed.