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
-
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"
-
Aplicar el ConfigMap: Usa
kubectl
para crear el ConfigMap en tu clúster:kubectl apply -f configmap.yaml
-
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
-
Aplicar el Pod: Usa
kubectl
para crear el pod en tu clúster:kubectl apply -f pod.yaml
-
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
- ¿Qué es Kubernetes?
- Arquitectura de Kubernetes
- Conceptos y Terminología Clave
- Configuración de un Clúster de Kubernetes
- CLI de Kubernetes (kubectl)
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
- Monitoreo con Prometheus
- Registro con Elasticsearch, Fluentd y Kibana (EFK)
- Verificaciones de Salud y Sondas
- Servidor de Métricas
Módulo 8: Seguridad en Kubernetes
- Control de Acceso Basado en Roles (RBAC)
- Políticas de Seguridad de Pods
- Seguridad de Red
- Seguridad de Imágenes
Módulo 9: Escalado y Rendimiento
- Autoescalado Horizontal de Pods
- Autoescalado Vertical de Pods
- Autoescalado de Clúster
- Ajuste de Rendimiento
Módulo 10: Ecosistema y Herramientas de Kubernetes
Módulo 11: Estudios de Caso y Aplicaciones del Mundo Real
- Despliegue de una Aplicación Web
- CI/CD con Kubernetes
- Ejecución de Aplicaciones con Estado
- Gestión Multi-Clúster