Introducción
En este laboratorio, aprenderás cómo utilizar ConfigMaps en Kubernetes para configurar tus aplicaciones. Los ConfigMaps ofrecen una forma de separar los datos de configuración del código de tu aplicación, lo que facilita la gestión y actualización de la configuración de tu aplicación sin modificar la aplicación en sí.
Iniciar el clúster de Minikube
Antes de crear recursos, necesitas un clúster de Kubernetes en ejecución. Minikube es un entorno ligero de Kubernetes que se ejecuta en tu máquina local.
Navegar a tu directorio de trabajo:
Abre la terminal y navega hasta la carpeta de proyecto predeterminada:
cd /home/labex/projectIniciar Minikube:
Inicia Minikube para inicializar un clúster de Kubernetes:
minikube start- Este comando configura un clúster de Kubernetes de un solo nodo en tu máquina local.
- Minikube puede tardar unos minutos en iniciarse dependiendo del rendimiento de tu sistema.
Verificar que Minikube esté en ejecución:
Comprueba el estado del clúster de Minikube:
minikube status- Busca componentes como
kubeletyapiserverlistados comoRunning(En ejecución). - Si el clúster no está en ejecución, vuelve a ejecutar
minikube start.
- Busca componentes como
Si encuentras problemas al iniciar Minikube, utiliza minikube delete para restablecer el entorno si es necesario.
Crear un ConfigMap
En este paso, crearás un ConfigMap que contenga los datos de configuración de tu aplicación.
Crea un archivo llamado configmap.yaml en el directorio /home/labex/project/ con el siguiente contenido:
apiVersion: v1
kind: ConfigMap
metadata:
name: my-config
data:
DATABASE_URL: postgres://user:password@host:port/dbname
Este ConfigMap contiene un solo par clave-valor, donde la clave es DATABASE_URL y el valor es una cadena de conexión a una base de datos PostgreSQL.
Para crear el ConfigMap, ejecuta el siguiente comando:
kubectl apply -f configmap.yaml
Utilizar el ConfigMap en tu aplicación
En este paso, utilizarás el ConfigMap en tu aplicación.
Crea un archivo llamado deployment.yaml en el directorio /home/labex/project/ con el siguiente contenido:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 1
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: nginx:latest
env:
- name: DATABASE_URL
valueFrom:
configMapKeyRef:
name: my-config
key: DATABASE_URL
Esta implementación (deployment) especifica un solo contenedor que ejecuta tu aplicación, el cual utiliza la variable de entorno DATABASE_URL para conectarse a una base de datos PostgreSQL. El valor de DATABASE_URL se obtiene del ConfigMap my-config.
Para crear la implementación, ejecuta el siguiente comando:
kubectl apply -f deployment.yaml
Verificar la configuración
En este paso, verificarás que la configuración se haya aplicado a tu aplicación.
Primero, encuentra el nombre del pod que está ejecutando tu aplicación ejecutando el siguiente comando:
kubectl get pods -l app=my-app
Deberías ver un solo pod ejecutando tu aplicación. Anota el nombre del pod.
A continuación, ejecuta el siguiente comando para abrir una sesión de shell en el contenedor que está ejecutando tu aplicación:
kubectl exec -it pod-name -- /bin/sh
Reemplaza <pod-name> con el nombre del pod que anotaste anteriormente.
Una vez que estés en la sesión de shell, ejecuta el siguiente comando para imprimir el valor de la variable de entorno DATABASE_URL:
echo $DATABASE_URL
Deberías ver la cadena de conexión a la base de datos que configuraste en el ConfigMap.
Actualizar el ConfigMap
En este paso, actualizarás el ConfigMap y verás cómo afecta a tu aplicación.
Actualiza el archivo configmap.yaml con un nuevo valor para la clave DATABASE_URL:
apiVersion: v1
kind: ConfigMap
metadata:
name: my-config
data:
DATABASE_URL: postgres://newuser:newpassword@newhost:newport/newdbname
Esto actualiza la clave DATABASE_URL a un nuevo valor.
Para actualizar el ConfigMap, ejecuta el siguiente comando:
kubectl apply -f configmap.yaml
Verificar la actualización
En este paso, verificarás que la actualización del ConfigMap se haya aplicado a tu aplicación.
Primero, encuentra el nombre del pod que está ejecutando tu aplicación ejecutando el siguiente comando:
kubectl get pods -l app=my-app
Deberías ver un solo pod ejecutando tu aplicación. Anota el nombre del pod.
A continuación, ejecuta el siguiente comando para abrir una sesión de shell en el contenedor que está ejecutando tu aplicación:
kubectl exec -it pod-name -- /bin/sh
Reemplaza <pod-name> con el nombre del pod que anotaste anteriormente.
Una vez que estés en la sesión de shell, ejecuta el siguiente comando para imprimir el valor de la variable de entorno DATABASE_URL:
echo $DATABASE_URL
Puedes ver que la configuración no se ha aplicado, sigue siendo los mismos datos que antes. Debes reiniciar el Deployment con el siguiente comando.
kubectl rollout restart deployment my-app
Cuando se complete el reinicio, entra de nuevo al contenedor y utiliza el comando anterior para comprobar la configuración.
Deberías ver la cadena de conexión actualizada a la base de datos.
Resumen
En este laboratorio, aprendiste cómo utilizar ConfigMaps en Kubernetes para configurar tus aplicaciones. Creaste un ConfigMap que contiene datos de configuración, utilizaste el ConfigMap en tu aplicación y actualizaste el ConfigMap para ver cómo afecta a tu aplicación. También aprendiste cómo verificar que la configuración se aplicó a tu aplicación y cómo limpiar los recursos creados en el laboratorio.


