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: myconfigmapEn 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: mysecretEn 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.yamlcon 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.yamlcon 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_ENVyAPP_DEBUGcon los valoresproductionyfalse, 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
