Capítulo 5.3 - Inyección en los Pods
Objetivos de Aprendizaje
Al final de este capítulo, usted será capaz de:
- Inyectar ConfigMaps como variables de entorno
- Montar ConfigMaps como volúmenes
- Utilizar los Secrets de manera segura
- Comprender los diferentes métodos de inyección
- Elegir el método adecuado según el caso de uso
Visión General
Existen varias formas de inyectar ConfigMaps y Secrets en sus Pods. Cada método tiene sus ventajas y casos de uso específicos.
Métodos de Inyección
1. Variables de Entorno
Desde ConfigMap
apiVersion: v1
kind: Pod
metadata:
name: configmap-env-pod
spec:
containers:
- name: app
image: nginx:1.20
env:
# Méthode 1: Une clé spécifique
- name: DATABASE_URL
valueFrom:
configMapKeyRef:
name: app-config
key: database_url
# Méthode 2: Toutes les clés
- name: CONFIGMAP_ENV
valueFrom:
configMapRef:
name: app-config
envFrom:
# Méthode 3: Toutes les clés du ConfigMap
- configMapRef:
name: app-config
Desde Secret
env:
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: db-secret
key: password
envFrom:
- secretRef:
name: db-secret
2. Volúmenes
ConfigMap como Volumen
apiVersion: v1
kind: Pod
metadata:
name: configmap-volume-pod
spec:
containers:
- name: app
image: nginx:1.20
volumeMounts:
- name: config
mountPath: /etc/config
readOnly: true
volumes:
- name: config
configMap:
name: app-config
# Optionnel: inclure seulement certaines clés
items:
- key: database_url
path: db-url
- key: log_level
path: log-level
Secret como Volumen
volumes:
- name: secrets
secret:
secretName: db-secret
defaultMode: 0400 # Permissions (lecture seule)
Ejemplo Completo
apiVersion: v1
kind: Pod
metadata:
name: full-example-pod
spec:
containers:
- name: app
image: my-app:1.0
# Variables d'environnement depuis ConfigMap
env:
- name: LOG_LEVEL
valueFrom:
configMapKeyRef:
name: app-config
key: log_level
# Variables d'environnement depuis Secret
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: db-secret
key: password
# Volume ConfigMap
volumeMounts:
- name: config
mountPath: /etc/config
- name: secrets
mountPath: /etc/secrets
readOnly: true
volumes:
- name: config
configMap:
name: app-config
- name: secrets
secret:
secretName: db-secret
Diferencias: env vs volumeMounts
Variables de Entorno (env)
Ventajas:
- Sencillo de usar
- Accesible vía
$VARIABLE_NAME - Bueno para valores simples
Limitaciones:
- No permite archivos completos
- Límite de tamaño
Volúmenes
Ventajas:
- Archivos completos
- Estructura de directorios
- Bueno para archivos de configuración
Casos de uso:
- Archivos de configuración (nginx.conf, etc.)
- Certificados
- Scripts
Buenas Prácticas
ConfigMaps
- Utilizar volúmenes para archivos de configuración
- Utilizar env para valores simples
- No almacenar datos sensibles
Secrets
- Siempre utilizar readOnly: true para los volúmenes
- Nunca registrar los valores de los secrets
- Utilizar permisos restrictivos (defaultMode: 0400)
Resumen
En este capítulo, usted ha aprendido:
Variables de entorno: env y envFrom
Volúmenes: configMap y secret como volúmenes
Métodos: valueFrom, configMapRef, secretRef
Casos de uso: env para valores simples, volúmenes para archivos
Seguridad: readOnly, permisos restrictivos para secrets
Próximos Pasos
Capítulo 5.4: Buenas Prácticas
Lab 5.1: Creación y Uso de ConfigMaps
Capítulo creado el: diciembre 2024