
Configuration des applications
Apprenez à gérer la configuration de vos applications Kubernetes de manière découplée et sécurisée à l'aide de ConfigMaps et de Secrets.
Au-delà du code : configurer vos applications K8s
Nous avons appris à déployer nos applications avec les Deployments et à les rendre accessibles via les Services. Cependant, une application réelle a rarement tout ce dont elle a besoin codé en dur dans son image de conteneur. Elle dépend souvent de paramètres externes : l'URL d'une base de données, des clés API pour des services tiers, des seuils de performance, des indicateurs pour activer ou désactiver des fonctionnalités (feature flags), etc.
Comment fournir ces informations de configuration à nos applications tournant dans des Pods Kubernetes ? Inclure ces valeurs directement dans l'image du conteneur est une très mauvaise pratique : cela rend l'image spécifique à un environnement, complique les mises à jour de configuration (nécessitant de reconstruire et redéployer l'image), et pose des problèmes de sécurité majeurs si des données sensibles sont incluses.
Kubernetes, fidèle à sa philosophie déclarative et de découplage, offre des mécanismes dédiés pour gérer la configuration des applications de manière externe, flexible et sécurisée. Ce chapitre explore ces mécanismes essentiels.
Découpler la configuration : ConfigMaps et Secrets
L'objectif est de séparer la configuration du code applicatif. Kubernetes propose deux objets API principaux pour stocker ces données de configuration en dehors des Pods :
- ConfigMaps : Destinés à stocker des données de configuration non sensibles sous forme de paires clé-valeur. Idéal pour les fichiers de configuration (comme `nginx.conf`, `application.properties`), les variables d'environnement, ou les arguments de ligne de commande.
- Secrets : Conçus spécifiquement pour stocker des données sensibles, telles que des mots de passe, des tokens OAuth, des clés SSH, ou des certificats TLS. Les Secrets sont stockés de manière plus sécurisée (bien que non chiffrés par défaut dans etcd, des mesures supplémentaires sont recommandées) et leur accès peut être contrôlé plus strictement via RBAC.
Une fois ces données stockées dans des ConfigMaps ou des Secrets, nous verrons comment les rendre accessibles aux conteneurs à l'intérieur des Pods. Kubernetes offre plusieurs méthodes pour "injecter" ces configurations :
- Comme variables d'environnement directement dans le conteneur.
- Comme des fichiers montés dans un volume à l'intérieur du système de fichiers du conteneur.
- Comme des arguments de ligne de commande passés au processus du conteneur (souvent via des variables d'environnement).
Ce chapitre vous guidera à travers la création et la gestion des ConfigMaps et des Secrets, et vous montrera comment les utiliser efficacement pour configurer vos applications déployées sur Kubernetes, en assurant à la fois flexibilité et sécurité.