Desacoplar la configuración de tus pods en Kubernetes con ConfigMaps

Gisela Torres
Caminos a la nubes
Siempre es buena práctica desacoplar ciertos parámetros de la configuración de una aplicación que pueden ser susceptible

Desacoplar la configuración de tus pods en Kubernetes con ConfigMaps

Siempre es buena práctica desacoplar ciertos parámetros de la configuración de una aplicación que pueden ser susceptibles a cambios entre entornos, regiones, etcétera. Ayer estuvimos viendo cómo trabajar con secretos para desacoplar credenciales, tokens, información sensible en general y hoy le toca el turno a los configmaps. La diferencia fundamental entre los secretos y los configmaps es que estos primeros almacenan la información en base 64 mientras que los segundos lo hacen en texto plano. En este artículo te cuento cómo usarlos para datos menos sensibles.

Crear un ConfigMap

Como en el resto de objetos, existen diferentes formas de crear ConfigMaps en tu clúster, pero el resultado es el mismo. En este artículo vamos a crear uno a través de la linea de comandos con literales:

Siguiendo con el ejemplo de postgres que hemos visto en artículos anteriores, he creado un configmap que almacena el nombre de la base de datos que quiero tener creada inicialmente y el encoding que, por defecto es UTF-8, lo cambio a SQL_ASCII a modo de ejemplo. De esta manera desacoplo esta configuración del pod. Al ejecutar el comando anterior crearé un nuevo objeto del tipo ConfigMap. Puedo listar todos los existentes a través del siguiente comando:


Para ver las claves incluidas dentro de un configmap en concreto puedes utilizar este otro comando:

que tendrá una salida parecida a la siguiente:

kubectl get configmaps postgres-config -o yaml

También puedes verlos en el apartado Config Maps del dashboard de Kubernetes:

Dashboard de Kubernetes – Config Maps

Cómo se usa un ConfigMap

Ahora que ya tenemos una configuración creada el siguiente paso es usarlo. En este caso voy a modificar la plantilla que me cree para el despliegue de postgres de la siguiente manera:

Como puedes ver, comparándolo con el uso de secretos, las variables POSTGRES_DB y POSTGRES_INITDB_ARGS recuperan su valor del configmap con nombre postgres-config utilizando valueFrom > configMapKeyRef, por lo que su uso es bastante similar.

Para comprobar que la configuración ha funcionado de manera correcta, ejecuta el despliegue:


Y comprueba que tienes una base de datos con el nombre mydb y que el encoding establecido para todas es SQL_ASCII.


¡Saludos

Gisela Torres

Gisela Torres trabaja en Microsoft como Cloud Solution Architect. Se trata de un puesto técnico cuya misión es apoyar y asesorar sobre soluciones y arquitecturas cloud utilizando Microsoft Azure como plataforma. Antes de eso trabajo como arquitecta de software y desarrolladora de aplicaciones en varias empresas. Durante esos años recibio varios premios por ejemplo Most Valuable Professional en Microsoft Azure. Le encanta programar y la tecnología en general.

Más artículos de Gisela en su blog - https://www.returngis.net/

Related Posts

Únete a nuestra Newsletter

Lidera la Conversación en la Nube