Configurar aplicaciones con ConfigMaps

KubernetesBeginner
Practicar Ahora

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í.

Este es un Guided Lab, que proporciona instrucciones paso a paso para ayudarte a aprender y practicar. Sigue las instrucciones cuidadosamente para completar cada paso y obtener experiencia práctica. Los datos históricos muestran que este es un laboratorio de nivel principiante con una tasa de finalización del 100%. Ha recibido una tasa de reseñas positivas del 97% por parte de los estudiantes.

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.

  1. Navegar a tu directorio de trabajo:

    Abre la terminal y navega hasta la carpeta de proyecto predeterminada:

    cd /home/labex/project
  2. Iniciar 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.
  3. Verificar que Minikube esté en ejecución:

    Comprueba el estado del clúster de Minikube:

    minikube status
    • Busca componentes como kubelet y apiserver listados como Running (En ejecución).
    • Si el clúster no está en ejecución, vuelve a ejecutar minikube start.

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.