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
- Variables de Entorno: Son pares clave-valor que se pueden utilizar para configurar el comportamiento de las aplicaciones.
- ConfigMaps: Recursos de Kubernetes que se utilizan para almacenar datos de configuración no confidenciales en pares clave-valor.
- 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:
- Crear un ConfigMap:
apiVersion: v1 kind: ConfigMap metadata: name: myconfigmap data: MY_ENV_VAR: "myvalue" ANOTHER_ENV_VAR: "anothervalue"
- 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:
- Crear un Secret:
apiVersion: v1 kind: Secret metadata: name: mysecret type: Opaque data: MY_SECRET_VAR: bXlzZWNyZXR2YWx1ZQ== # "mysecretvalue" en base64
- 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
-
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"
- Crea un archivo YAML llamado
-
Aplicar el ConfigMap:
- Ejecuta el siguiente comando para aplicar el ConfigMap:
kubectl apply -f configmap.yaml
-
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
- Crea un archivo YAML llamado
-
Aplicar el Pod:
- Ejecuta el siguiente comando para aplicar el Pod:
kubectl apply -f pod.yaml
-
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
yAPP_DEBUG
con los valoresproduction
yfalse
, 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
- ¿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