ConfigMaps et Secrets
Gérez de manière sécurisée les données de configuration et les informations sensibles dans vos déploiements Kubernetes avec ConfigMaps et Secrets.
ConfigMaps et Secrets est une leçon DevOps Bootcamp gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage DevOps Bootcamp, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours DevOps Bootcamp comprend 4 leçons au total.
Introduction aux ConfigMaps et aux secrets
Bienvenue ! Dans cette leçon, vous apprendrez à gérer les données de configuration et les informations sensibles dans Kubernetes. Nous découvrirons les ConfigMaps et les secrets, deux outils essentiels pour des déploiements d'applications flexibles et sécurisés.

Pourquoi externaliser la configuration ?
Imaginez que vous inscriviez directement des identifiants de base de données ou des clés d'API dans l'image Docker de votre application. Les mises à jour deviennent difficiles et les données sensibles sont exposées.
- Manque de flexibilité : les modifications nécessitent de reconstruire l'image.
- Risque de sécurité : les données sensibles sont intégrées à l'image.
- Spécificité de l'environnement : les différents environnements (développement, production) nécessitent des paramètres différents.
ConfigMaps : données non sensibles
Un ConfigMap est un objet Kubernetes utilisé pour stocker des données de configuration non sensibles sous forme de paires clé-valeur. Considérez-le comme un emplacement central pour les paramètres de votre application, tels que les niveaux de journalisation ou les points de terminaison d'API.
Il dissocie la configuration du code de votre application, ce qui rend vos déploiements plus portables et plus faciles à gérer.
Définir un ConfigMap
Vous pouvez créer un ConfigMap à partir de valeurs littérales, de fichiers ou de répertoires. Voici un exemple simple défini dans un fichier YAML :
apiVersion: v1
kind: ConfigMap
metadata:
name: my-app-config
data:
log_level: "INFO"
api_endpoint: "http://myapi.example.com"ConfigMap en tant que variables d'environnement
Une fois créé, un pod peut utiliser les données d'un ConfigMap comme variables d'environnement. Il s'agit d'une méthode courante pour transmettre des paramètres à votre application.
Voici comment un pod utilise notre my-app-config :
apiVersion: v1
kind: Pod
metadata:
name: configmap-env-pod
spec:
containers:
- name: my-container
image: busybox
command: ["sh", "-c", "echo Log Level: $LOG_LEVEL; echo API: $API_ENDPOINT"]
env:
- name: LOG_LEVEL
valueFrom:
configMapKeyRef:
name: my-app-config
key: log_level
- name: API_ENDPOINT
valueFrom:
configMapKeyRef:
name: my-app-config
key: api_endpoint
restartPolicy: NeverConfigMap en tant que fichiers montés
Vous pouvez également monter les données d'un ConfigMap sous forme de fichiers à l'intérieur de votre conteneur. Chaque paire clé-valeur devient un fichier : la clé sert de nom de fichier et la valeur de contenu.
C'est utile pour les fichiers de configuration que votre application doit lire depuis un chemin spécifique.
apiVersion: v1
kind: Pod
metadata:
name: configmap-file-pod
spec:
containers:
- name: my-container
image: busybox
command: ["sh", "-c", "cat /etc/config/log_level; cat /etc/config/api_endpoint"]
volumeMounts:
- name: config-volume
mountPath: /etc/config
volumes:
- name: config-volume
configMap:
name: my-app-config
restartPolicy: NeverSecrets : données sensibles
Les secrets ressemblent aux ConfigMaps, mais sont conçus pour les données sensibles telles que les mots de passe, les clés d'API ou les certificats TLS. Kubernetes vous aide à les gérer et à les distribuer de manière sécurisée.
Alors que les ConfigMaps stockent les données en texte brut, les secrets sont encodés en base64. Il ne s'agit NOT pas d'un chiffrement, mais cela empêche une exposition accidentelle.
Définir un secret
Lors de la création d'un secret, les valeurs doivent être encodées en base64. Vous pouvez utiliser echo -n 'my-password' | base64 pour les encoder.
Voici un exemple pour le mot de passe d'une base de données :
apiVersion: v1
kind: Secret
metadata:
name: db-credentials
type: Opaque
data:
username: YWRtaW4= # base64 of 'admin'
password: c3VwZXJzZWNyZXRwYXNz # base64 of 'supersecretpass'Utiliser des secrets dans les pods
Les secrets sont utilisés par les pods de manière très similaire aux ConfigMaps : comme variables d'environnement ou comme fichiers montés. Kubernetes les décode automatiquement avant de les transmettre au conteneur.
Les utiliser comme fichiers montés est généralement préférable pour la sécurité, car les variables d'environnement peuvent être plus facilement consignées ou inspectées.
apiVersion: v1
kind: Pod
metadata:
name: secret-env-pod
spec:
containers:
- name: my-app-container
image: busybox
command: ["sh", "-c", "echo DB User: $DB_USERNAME; echo DB Pass: $DB_PASSWORD"]
env:
- name: DB_USERNAME
valueFrom:
secretKeyRef:
name: db-credentials
key: username
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: db-credentials
key: password
restartPolicy: NeverBonnes pratiques de sécurité
N'oubliez pas que l'encodage base64 n'est pas un chiffrement. Pour un véritable chiffrement au repos, vous devrez peut-être utiliser un serveur de secrets Kubernetes (comme Vault) ou tirer parti des services KMS d'un fournisseur cloud.
- RBAC : contrôlez qui peut accéder aux secrets.
- Moindre privilège : accordez uniquement aux pods l'accès aux secrets dont ils ont besoin.
- Fichiers montés : préférez monter les secrets sous forme de fichiers plutôt que de variables d'environnement.
Vérification rapide de la configuration
Vous devez stocker dans Kubernetes une clé d'API (sensible) et un paramètre de niveau de journalisation (non sensible) pour votre application.
Quels objets Kubernetes devez-vous utiliser pour chacun, respectivement ?
Récapitulatif : ConfigMaps et secrets
Excellent travail ! Vous avez appris à gérer la configuration des applications et les données sensibles dans Kubernetes.
- ConfigMaps : stockent des paires clé-valeur non sensibles.
- Secrets : stockent des données sensibles (encodées en base64).
- Les deux peuvent être utilisés par les pods comme variables d'environnement ou comme fichiers montés.
- Suivez toujours les bonnes pratiques de sécurité lorsque vous manipulez des informations sensibles.
Ensuite, découvrez des sujets de sécurité avancés comme RBAC et les solutions externes de gestion des secrets.
Questions Fréquemment Posées
La leçon « ConfigMaps et Secrets » est-elle gratuite ?
Oui — le texte complet de « ConfigMaps et Secrets » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours DevOps Bootcamp, passe à CoddyKit PRO. Le cours DevOps Bootcamp comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « ConfigMaps et Secrets » ?
Gérez de manière sécurisée les données de configuration et les informations sensibles dans vos déploiements Kubernetes avec ConfigMaps et Secrets. Tu pratiques DevOps Bootcamp avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer DevOps Bootcamp ?
Aucune expérience préalable n'est requise. DevOps Bootcamp sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « ConfigMaps et Secrets » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon DevOps Bootcamp ?
Oui. Chaque leçon DevOps Bootcamp inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Déploiements pour applications sans état
- Services pour l’accès réseau
- ConfigMaps et Secrets
- Ingress et routage externe