Aller au contenu

Configurer votre application

Une même image de conteneur doit pouvoir tourner en dev et en prod : la configuration ne se met pas dans l’image, elle s’injecte au déploiement. Kubernetes fournit deux objets pour ça :

  • ConfigMap : configuration non sensible (URLs, options, fichiers de conf) ;
  • Secret : données sensibles (mots de passe, tokens, clés d’API).

Exemple complet, prêt à copier :

apiVersion: v1
kind: ConfigMap
metadata:
name: mon-app-config
data:
APP_ENV: "production"
nginx.conf: |
server {
listen 8080;
}
---
apiVersion: v1
kind: Secret
metadata:
name: mon-app-secrets
stringData:
DB_PASSWORD: "changez-moi"

Créer une ConfigMap et un Secret

  1. Dans votre namespace, ouvrez Storage › ConfigMaps (ou Storage › Secrets).

  2. Cliquez sur Create, nommez l’objet, puis saisissez vos paires clé/valeur.

  3. Validez avec Create.

Les injecter dans un conteneur

En variables d’environnement

containers:
- name: web
image: mon-app:1.0
env:
# Une clé précise d'un Secret
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: mon-app-secrets
key: DB_PASSWORD
# Toutes les clés d'une ConfigMap d'un coup
envFrom:
- configMapRef:
name: mon-app-config

En fichiers montés

Idéal pour les fichiers de configuration complets :

containers:
- name: web
image: nginx:alpine
volumeMounts:
- name: config
mountPath: /etc/nginx/conf.d
volumes:
- name: config
configMap:
name: mon-app-config
items:
- key: nginx.conf
path: default.conf

Bonnes pratiques

  • Jamais de secrets dans l’image ni dans le YAML committé. Utilisez stringData localement, ou créez les Secrets via kubectl create secret / Rancher, hors de votre dépôt Git.
  • Un objet par application plutôt qu’une ConfigMap géante partagée : les rollouts restent ciblés.
  • Quotas : 50 ConfigMaps et 50 Secrets par namespace (détails).

Étapes suivantes