Introducción

En Kubernetes, los ConfigMaps son objetos que permiten almacenar datos de configuración en forma de pares clave-valor. Estos datos pueden ser utilizados por los pods y otros recursos de Kubernetes para configurar aplicaciones sin necesidad de modificar las imágenes del contenedor. Los ConfigMaps son especialmente útiles para separar la configuración del código, lo que facilita la gestión y el despliegue de aplicaciones.

Conceptos Clave

  • Clave-Valor: Los ConfigMaps almacenan datos en pares clave-valor.
  • Desacoplamiento: Permiten desacoplar la configuración de la aplicación del código.
  • Volatilidad: Los datos en ConfigMaps pueden cambiar sin necesidad de reconstruir la imagen del contenedor.

Creación de un ConfigMap

Usando un Archivo YAML

Puedes definir un ConfigMap en un archivo YAML. Aquí hay un ejemplo básico:

apiVersion: v1
kind: ConfigMap
metadata:
  name: example-config
data:
  database_url: "mongodb://localhost:27017"
  database_name: "mydatabase"

Usando la Línea de Comandos

También puedes crear un ConfigMap directamente desde la línea de comandos utilizando kubectl:

kubectl create configmap example-config --from-literal=database_url="mongodb://localhost:27017" --from-literal=database_name="mydatabase"

Uso de ConfigMaps en Pods

Como Variables de Entorno

Puedes usar los datos de un ConfigMap como variables de entorno en un pod. Aquí hay un ejemplo de cómo hacerlo:

apiVersion: v1
kind: Pod
metadata:
  name: example-pod
spec:
  containers:
  - name: example-container
    image: nginx
    env:
    - name: DATABASE_URL
      valueFrom:
        configMapKeyRef:
          name: example-config
          key: database_url
    - name: DATABASE_NAME
      valueFrom:
        configMapKeyRef:
          name: example-config
          key: database_name

Como Archivos en un Volumen

También puedes montar un ConfigMap como un volumen en un pod:

apiVersion: v1
kind: Pod
metadata:
  name: example-pod
spec:
  containers:
  - name: example-container
    image: nginx
    volumeMounts:
    - name: config-volume
      mountPath: /etc/config
  volumes:
  - name: config-volume
    configMap:
      name: example-config

En este caso, los datos del ConfigMap estarán disponibles como archivos en el directorio /etc/config dentro del contenedor.

Ejercicio Práctico

Ejercicio 1: Crear y Usar un ConfigMap

  1. Crear un ConfigMap: Define un ConfigMap en un archivo YAML llamado configmap.yaml con los siguientes datos:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: my-config
    data:
      app_name: "MyApp"
      app_version: "1.0"
    
  2. Aplicar el ConfigMap: Usa kubectl para crear el ConfigMap en tu clúster:

    kubectl apply -f configmap.yaml
    
  3. Crear un Pod que use el ConfigMap: Define un pod en un archivo YAML llamado pod.yaml que use los datos del ConfigMap como variables de entorno:

    apiVersion: v1
    kind: Pod
    metadata:
      name: my-pod
    spec:
      containers:
      - name: my-container
        image: busybox
        command: ["sh", "-c", "echo $(APP_NAME) $(APP_VERSION) && sleep 3600"]
        env:
        - name: APP_NAME
          valueFrom:
            configMapKeyRef:
              name: my-config
              key: app_name
        - name: APP_VERSION
          valueFrom:
            configMapKeyRef:
              name: my-config
              key: app_version
    
  4. Aplicar el Pod: Usa kubectl para crear el pod en tu clúster:

    kubectl apply -f pod.yaml
    
  5. Verificar la Salida: Usa kubectl logs para verificar que el pod está usando los datos del ConfigMap:

    kubectl logs my-pod
    

Solución

Si has seguido los pasos correctamente, deberías ver la salida MyApp 1.0 en los logs del pod.

Resumen

En esta sección, hemos aprendido sobre los ConfigMaps en Kubernetes, cómo crearlos y cómo usarlos en pods. Los ConfigMaps son una herramienta poderosa para gestionar la configuración de aplicaciones de manera flexible y desacoplada del código. En la siguiente sección, exploraremos los Secrets, que son similares a los ConfigMaps pero están diseñados para almacenar datos sensibles de manera segura.

Curso de Kubernetes

Módulo 1: Introducción a Kubernetes

Módulo 2: Componentes Principales de Kubernetes

Módulo 3: Gestión de Configuración y Secretos

Módulo 4: Redes en Kubernetes

Módulo 5: Almacenamiento en Kubernetes

Módulo 6: Conceptos Avanzados de Kubernetes

Módulo 7: Monitoreo y Registro

Módulo 8: Seguridad en Kubernetes

Módulo 9: Escalado y Rendimiento

Módulo 10: Ecosistema y Herramientas de Kubernetes

Módulo 11: Estudios de Caso y Aplicaciones del Mundo Real

Módulo 12: Preparación para la Certificación de Kubernetes

© Copyright 2024. Todos los derechos reservados