¿Que son los ConfigMap en Kubernetes.?

¿Que son los ConfigMap en Kubernetes.?

Un ConfigMap en Kubernetes es un objeto de la API de Kubernetes diseñado para almacenar los datos de configuración de clave-valor no confidenciales de su aplicación. Estos datos de configuración pueden ser consumidos por sus Pods y se utilizan para mantener separados los valores de configuración del código y las imágenes de contenedor. Puede crear un ConfigMap utilizando archivos YAML para definir los pares clave-valor y luego montarlo en sus Pods como variables de entorno o archivos en un volumen. Esto le permite cambiar la configuración sin necesidad de volver a implementar sus Pods. Los ConfigMaps son útiles para almacenar valores de configuración que pueden cambiar independientemente de la imagen del contenedor, como las cadenas de conexión a bases de datos o las URL de servicios.

Por ejemplo, puede crear un ConfigMap en Kubernetes con la dirección de correo «admin@nefsystem.com» de la siguiente manera:

apiVersion: v1
kind: ConfigMap
metadata:
  name: email-config
data:
  email: admin@nefsystem.com

Luego, puede consumir este valor en sus Pods como una variable de entorno o un archivo en un volumen, según sus necesidades.

Para utilizar un ConfigMap en un Pod de Kubernetes, puedes seguir varios enfoques, como se detalla a continuación:

  1. Variables de entorno: Puedes inyectar los valores del ConfigMap como variables de entorno en la especificación del Pod. Por ejemplo:
   env:
     - name: VAR1
       valueFrom:
         configMapKeyRef:
           name: my-configmap
           key: key1
     - name: VAR2
       valueFrom:
         configMapKeyRef:
           name: my-configmap
           key: key2
  1. Argumentos de línea de comandos: Puedes pasar los valores del ConfigMap como argumentos de línea de comandos al contenedor en la especificación del Pod.
  2. Archivos en un volumen: También puedes montar los valores del ConfigMap como archivos en un volumen y luego acceder a ellos desde el contenedor.

Estos enfoques te permiten separar la configuración específica del entorno de las imágenes de contenedor, lo que hace que tus aplicaciones sean fácilmente portátiles.

Para definir un ConfigMap en un archivo YAML de un Pod de Kubernetes, puedes seguir el siguiente ejemplo:

apiVersion: v1
kind: ConfigMap
metadata:
  name: my-configmap
data:
  key1: value1
  key2: value2

En este ejemplo, se define un ConfigMap con el nombre «my-configmap» y dos pares clave-valor. Luego, para utilizar este ConfigMap en la especificación de un Pod, puedes montarlo como un volumen o inyectar sus valores como variables de entorno en el archivo YAML del Pod.

Para utilizar un ConfigMap en un archivo YAML de un Pod de Kubernetes, puedes seguir los siguientes ejemplos:

  1. Como variables de entorno:
   apiVersion: v1
   kind: Pod
   metadata:
     name: demo-pod
   spec:
     containers:
       - name: app
         command: ["/bin/sh", "-c", "printenv"]
         image: busybox:latest
         envFrom:
           - configMapRef:
               name: demo-config
  1. Como archivos en un volumen:
   apiVersion: v1
   kind: Pod
   metadata:
     name: my-pod
   spec:
     containers:
       - name: my-container
         image: redis
         volumeMounts:
           - name: config-volume
             mountPath: /etc/config
     volumes:
       - name: config-volume
         configMap:
           name: my-configmap

Estos ejemplos muestran cómo puedes inyectar los valores de un ConfigMap como variables de entorno o como archivos en un volumen en la especificación YAML de un Pod.