Las variables de entorno son una forma fundamental de pasar información de configuración a las aplicaciones en Kubernetes. Permiten que las aplicaciones se comporten de manera diferente según el entorno en el que se ejecutan, sin necesidad de cambiar el código de la aplicación.

Conceptos Clave

  1. Variables de Entorno: Son pares clave-valor que se pueden utilizar para configurar el comportamiento de las aplicaciones.
  2. ConfigMaps: Recursos de Kubernetes que se utilizan para almacenar datos de configuración no confidenciales en pares clave-valor.
  3. Secrets: Recursos de Kubernetes que se utilizan para almacenar datos confidenciales, como contraseñas, tokens y claves SSH.

Configuración de Variables de Entorno en Pods

Usando Variables de Entorno Directamente

Puedes definir variables de entorno directamente en la especificación del Pod. Aquí hay un ejemplo de cómo hacerlo:

apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
  - name: mycontainer
    image: myimage
    env:
    - name: MY_ENV_VAR
      value: "myvalue"

En este ejemplo, la variable de entorno MY_ENV_VAR se establece con el valor myvalue en el contenedor mycontainer.

Usando ConfigMaps

Los ConfigMaps son útiles para almacenar datos de configuración que no son confidenciales. Aquí hay un ejemplo de cómo crear un ConfigMap y usarlo para establecer variables de entorno en un Pod:

  1. Crear un ConfigMap:
apiVersion: v1
kind: ConfigMap
metadata:
  name: myconfigmap
data:
  MY_ENV_VAR: "myvalue"
  ANOTHER_ENV_VAR: "anothervalue"
  1. Usar el ConfigMap en un Pod:
apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
  - name: mycontainer
    image: myimage
    envFrom:
    - configMapRef:
        name: myconfigmap

En este ejemplo, las variables de entorno MY_ENV_VAR y ANOTHER_ENV_VAR se establecen en el contenedor mycontainer utilizando los valores del ConfigMap myconfigmap.

Usando Secrets

Los Secrets son útiles para almacenar datos confidenciales. Aquí hay un ejemplo de cómo crear un Secret y usarlo para establecer variables de entorno en un Pod:

  1. Crear un Secret:
apiVersion: v1
kind: Secret
metadata:
  name: mysecret
type: Opaque
data:
  MY_SECRET_VAR: bXlzZWNyZXR2YWx1ZQ==  # "mysecretvalue" en base64
  1. Usar el Secret en un Pod:
apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
  - name: mycontainer
    image: myimage
    envFrom:
    - secretRef:
        name: mysecret

En este ejemplo, la variable de entorno MY_SECRET_VAR se establece en el contenedor mycontainer utilizando el valor del Secret mysecret.

Ejercicio Práctico

Ejercicio 1: Crear y Usar un ConfigMap

  1. Crear un ConfigMap:

    • Crea un archivo YAML llamado configmap.yaml con el siguiente contenido:
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: app-config
    data:
      APP_ENV: "production"
      APP_DEBUG: "false"
    
  2. Aplicar el ConfigMap:

    • Ejecuta el siguiente comando para aplicar el ConfigMap:
    kubectl apply -f configmap.yaml
    
  3. Crear un Pod que use el ConfigMap:

    • Crea un archivo YAML llamado pod.yaml con el siguiente contenido:
    apiVersion: v1
    kind: Pod
    metadata:
      name: app-pod
    spec:
      containers:
      - name: app-container
        image: nginx
        envFrom:
        - configMapRef:
            name: app-config
    
  4. Aplicar el Pod:

    • Ejecuta el siguiente comando para aplicar el Pod:
    kubectl apply -f pod.yaml
    
  5. Verificar las Variables de Entorno:

    • Ejecuta el siguiente comando para abrir una terminal en el contenedor del Pod:
    kubectl exec -it app-pod -- /bin/sh
    
    • Dentro del contenedor, ejecuta el siguiente comando para verificar las variables de entorno:
    env | grep APP_
    

    Deberías ver las variables APP_ENV y APP_DEBUG con los valores production y false, respectivamente.

Solución del Ejercicio

Si has seguido los pasos correctamente, deberías haber creado un ConfigMap, aplicado el ConfigMap, creado un Pod que usa el ConfigMap y verificado que las variables de entorno se han establecido correctamente en el contenedor del Pod.

Conclusión

En esta sección, hemos aprendido cómo configurar variables de entorno en Kubernetes utilizando diferentes métodos, incluyendo la definición directa en la especificación del Pod, el uso de ConfigMaps y el uso de Secrets. Estos métodos permiten una configuración flexible y segura de las aplicaciones en Kubernetes. En la siguiente sección, exploraremos cómo gestionar cuotas y límites de recursos en Kubernetes.

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