Kubernetes en production : 7 bonnes pratiques essentielles
Faire tourner Kubernetes en local est une chose ; l'exploiter en production en est une autre. Voici 7 pratiques que nous appliquons systématiquement sur nos clusters.
1. Définir requests et limits
Sans requests/limits, un pod peut affamer ses voisins. Fixez toujours des valeurs réalistes :
resources:
requests:
cpu: "100m"
memory: "128Mi"
limits:
cpu: "500m"
memory: "256Mi"
2. Configurer les probes
Les liveness et readiness probes évitent d'envoyer du trafic vers un pod pas encore prêt (ou bloqué) :
livenessProbe:
httpGet: { path: /healthz, port: 3000 }
initialDelaySeconds: 10
readinessProbe:
httpGet: { path: /ready, port: 3000 }
3. Activer l'autoscaling
Le Horizontal Pod Autoscaler ajuste le nombre de réplicas selon la charge :
kubectl autoscale deployment mon-app --cpu-percent=70 --min=2 --max=10
4. Verrouiller les accès avec RBAC
Appliquez le principe du moindre privilège : chaque ServiceAccount n'obtient que les droits dont il a besoin.
5. Isoler avec des namespaces
Séparez les environnements (dev, staging, prod) et les équipes par namespace, avec des ResourceQuotas pour éviter les débordements.
6. Ne jamais stocker de secrets en clair
Utilisez les Secrets Kubernetes, chiffrés au repos, ou un gestionnaire externe (Vault, AWS Secrets Manager). Jamais de mot de passe dans une image ou un manifeste versionné.
7. Surveiller et alerter
Prometheus + Grafana pour les métriques, un stack de logs centralisé, et des alertes sur les signaux clés (taux d'erreur, latence, saturation).
Ces pratiques forment la base d'un cluster robuste. On les détaille avec des ateliers pratiques dans le parcours Kubernetes.