¿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.comLuego, 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:
- 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- 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.
- 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: value2En 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:
- 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- 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-configmapEstos 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.
