Points clés
- ✓PersistentVolumes assurent la persistence des données au-delà du cycle de vie des Pods
- ✓ConfigMaps externalisent la configuration pour la rendre modifiable sans rebuild
- ✓Secrets chiffrent les données sensibles comme mots de passe et tokens API
Les PersistentVolumes, ConfigMaps et Secrets sont trois ressources fondamentales pour gérer le stockage et la configuration dans Kubernetes. En tant que débutant, comprendre ces concepts vous permet de déployer des applications qui conservent leurs données et utilisent des configurations externalisées.
TL;DR : Les PersistentVolumes gèrent le stockage durable (données qui survivent au Pod), les ConfigMaps stockent la configuration (URL, paramètres), et les Secrets protègent les données sensibles (mots de passe). Ce module est couvert dans la formation Kubernetes, les fondamentaux.
PersistentVolumes : stocker des données durablement
Le problème des données éphémères
Par défaut, les données d'un conteneur disparaissent quand le Pod est supprimé. C'est problématique pour une base de données ou des fichiers utilisateur.
Un PersistentVolume (PV) est un espace de stockage provisionné dans le cluster. Un PersistentVolumeClaim (PVC) est la demande d'un utilisateur pour utiliser cet espace.
| Concept | Analogie | Rôle |
|---|---|---|
| PersistentVolume | Le disque dur | Stockage disponible dans le cluster |
| PersistentVolumeClaim | La réservation | Demande d'utilisation par une application |
À retenir : Le PV est le disque, le PVC est la demande de location.
Créer et utiliser un PVC
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-storage
spec:
accessModes:
- ReadWriteOnce # Un seul nœud peut écrire
resources:
requests:
storage: 5Gi # Taille demandée
Montez ensuite ce volume dans votre Pod :
apiVersion: v1
kind: Pod
metadata:
name: my-app
spec:
containers:
- name: app
image: nginx
volumeMounts:
- mountPath: /data # Où monter dans le conteneur
name: my-volume
volumes:
- name: my-volume
persistentVolumeClaim:
claimName: my-storage
ConfigMaps : externaliser la configuration
Un ConfigMap stocke des paires clé-valeur pour configurer vos applications sans modifier l'image Docker.
Créer un ConfigMap
apiVersion: v1
kind: ConfigMap
metadata:
name: app-config
data:
DATABASE_HOST: "postgres.default.svc"
LOG_LEVEL: "info"
Ou via kubectl :
kubectl create configmap app-config --from-literal=LOG_LEVEL=info
Injecter dans un Pod
spec:
containers:
- name: app
image: myapp:1.0
env:
- name: LOG_LEVEL
valueFrom:
configMapKeyRef:
name: app-config
key: LOG_LEVEL
À retenir : Les ConfigMaps permettent de changer la configuration sans reconstruire l'image.
Secrets : protéger les données sensibles
Un Secret est similaire à un ConfigMap, mais conçu pour les données sensibles : mots de passe, tokens API, clés SSH.
Créer un Secret
apiVersion: v1
kind: Secret
metadata:
name: db-credentials
type: Opaque
stringData:
username: admin
password: "MySecretPassword123"
Ou via kubectl :
kubectl create secret generic db-credentials \
--from-literal=username=admin \
--from-literal=password=MySecretPassword123
Injecter dans un Pod
spec:
containers:
- name: app
image: myapp:1.0
env:
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: db-credentials
key: password
À retenir : Les Secrets sont encodés en base64, pas chiffrés par défaut. C'est une première couche de protection, pas une solution de sécurité complète.
Résumé : quand utiliser quoi ?
| Ressource | Cas d'usage | Exemple |
|---|---|---|
| PersistentVolume | Données qui doivent survivre | Base de données, fichiers uploadés |
| ConfigMap | Configuration non sensible | URLs, niveaux de log, feature flags |
| Secret | Données sensibles | Mots de passe, tokens, certificats |
Commandes kubectl essentielles
# Lister les PersistentVolumeClaims
kubectl get pvc
# Créer un ConfigMap depuis un fichier
kubectl create configmap nginx-conf --from-file=nginx.conf
# Voir le contenu d'un ConfigMap
kubectl describe configmap app-config
# Afficher un Secret (décodé)
kubectl get secret db-credentials -o jsonpath='{.data.password}' | base64 -d
Pour aller plus loin
Cette page couvre les bases du stockage et de la configuration. Pour les concepts avancés :
| Concept | Niveau | Formation |
|---|---|---|
| StorageClasses et provisionnement dynamique | CKA | LFS458 Administration |
| Chiffrement des Secrets au repos | CKS | LFS460 Sécurité |
| Gestionnaires de secrets externes (Vault) | CKS | LFS460 Sécurité |
Passez à l'action
La formation Kubernetes, les fondamentaux inclut un lab pratique où vous configurez une application Spring avec des ConfigMaps, sous la guidance d'un formateur expert.
Contactez nos conseillers pour planifier votre formation.