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_nameComo 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-configEn 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.yamlcon los siguientes datos:apiVersion: v1 kind: ConfigMap metadata: name: my-config data: app_name: "MyApp" app_version: "1.0" -
Aplicar el ConfigMap: Usa
kubectlpara 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.yamlque 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
kubectlpara crear el pod en tu clúster:kubectl apply -f pod.yaml -
Verificar la Salida: Usa
kubectl logspara 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
