Saltar al contenido principal

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