Chapitre 5.3 - Injection dans les Pods
Objectifs d'Apprentissage
À la fin de ce chapitre, vous serez capable de:
- Injecter ConfigMaps comme variables d'environnement
- Monter ConfigMaps comme volumes
- Utiliser les Secrets de manière sécurisée
- Comprendre les différentes méthodes d'injection
- Choisir la bonne méthode selon le cas d'usage
Vue d'Ensemble
Il existe plusieurs façons d'injecter des ConfigMaps et Secrets dans vos Pods. Chaque méthode a ses avantages et cas d'usage spécifiques.
Méthodes d'Injection
1. Variables d'Environnement
Depuis 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
Depuis Secret
env:
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: db-secret
key: password
envFrom:
- secretRef:
name: db-secret
2. Volumes
ConfigMap comme Volume
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 comme Volume
volumes:
- name: secrets
secret:
secretName: db-secret
defaultMode: 0400 # Permissions (lecture seule)
Exemple Complet
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
Différences: env vs volumeMounts
Variables d'Environnement (env)
Avantages:
- Simple à utiliser
- Accessible via
$VARIABLE_NAME - Bon pour les valeurs simples
Limitations:
- Pas de fichiers complets
- Limite de taille
Volumes
Avantages:
- Fichiers complets
- Structure de répertoires
- Bon pour les fichiers de configuration
Cas d'usage:
- Fichiers de configuration (nginx.conf, etc.)
- Certificats
- Scripts
Bonnes Pratiques
ConfigMaps
- Utiliser des volumes pour les fichiers de configuration
- Utiliser env pour les valeurs simples
- Ne pas stocker de données sensibles
Secrets
- Toujours utiliser readOnly: true pour les volumes
- Ne jamais logger les valeurs de secrets
- Utiliser des permissions restrictives (defaultMode: 0400)
Résumé
Dans ce chapitre, vous avez appris:
Variables d'environnement: env et envFrom
Volumes: configMap et secret comme volumes
Méthodes: valueFrom, configMapRef, secretRef
Cas d'usage: env pour valeurs simples, volumes pour fichiers
Sécurité: readOnly, permissions restrictives pour secrets
Prochaines Étapes
Chapitre 5.4: Bonnes Pratiques
Lab 5.1: Création et Utilisation de ConfigMaps
Chapitre créé le: Décembre 2024