RousselTMLEARNING

Articles

Bonnes Pratiques Kubernetes

Meilleures pratiques pour sécuriser et optimiser les déploiements Kubernetes.

Isoler avec les namespaces #

Utilisez des namespaces pour segmenter et isoler les ressources dans vos clusters.

Gérer les configurations et secrets #

Centralisez les configurations et sécurisez les informations sensibles avec ConfigMaps et Secrets.

Utiliser ConfigMaps #

Les ConfigMaps permettent de centraliser les configurations des applications, facilitant les mises à jour et la gestion des variables d’environnement sans redéployer les conteneurs.

Stocker les informations sensibles #

Utilisez les Secrets pour protéger les données sensibles telles que les mots de passe et les clés API. Limitez leur accès pour garantir la sécurité des applications.

Activer les probes #

Assurez la disponibilité des services avec les probes de liveness et readiness.

Liveness Probes #

Les liveness probes permettent de redémarrer automatiquement les conteneurs en cas de défaillance, améliorant la continuité des services.

Readiness Probes #

Les readiness probes permettent de diriger le trafic uniquement vers les conteneurs prêts, réduisant ainsi les interruptions de service.

Définir des quotas et limites #

Limitez les ressources pour chaque conteneur et namespace afin d’éviter les conflits et d’optimiser les performances.

Automatiser les mises à jour #

Utilisez les Rolling Updates pour déployer des modifications sans interruption de service.

Surveiller les métriques #

La surveillance des performances permet de diagnostiquer rapidement les problèmes.

Outils de Monitoring #

Optez pour des outils comme Prometheus ou Dynatrace pour collecter et visualiser les métriques en temps réel, facilitant la gestion des ressources.

Configuration des alertes #

Définissez des alertes sur les métriques critiques pour réagir rapidement aux anomalies et éviter les interruptions de service.

Organiser avec labels et annotations #

Les labels et annotations facilitent la classification et la gestion des ressources.

Limiter les privilèges #

Appliquez le principe du moindre privilège pour améliorer la sécurité des conteneurs.

Non-Root Execution #

Exécutez les conteneurs avec des utilisateurs non root pour réduire les risques de compromission. Cette bonne pratique limite les privilèges en cas de faille.

Moindre Privilège #

Appliquez le principe du moindre privilège en limitant les permissions des conteneurs aux ressources strictement nécessaires pour fonctionner.

Activer la journalisation #

Centralisez les logs pour faciliter la surveillance et le dépannage.

Outils de journalisation #

Utilisez des solutions comme Fluentd ou Elasticsearch pour centraliser les logs, améliorant ainsi la visibilité des événements dans le cluster.

Planifier des sauvegardes #

Les sauvegardes régulières garantissent la continuité des services en cas de sinistre.

Sauvegardes des volumes #

Effectuez des sauvegardes fréquentes des volumes de données pour prévenir les pertes en cas de panne.

Sauvegarde de l'état du cluster #

Enregistrez régulièrement l’état du cluster pour restaurer facilement les configurations en cas de besoin.

Checklist d'ensemble #

Les six familles de pratiques.

Vue synthétique #

Bonnes pratiques Kubernetes
Chaque famille est détaillée ci-dessous avec des commandes de vérification.

Charges de travail fiables #

Ressources, sondes et disponibilité.

Manifeste de référence #

apiVersion: apps/v1
kind: Deployment
metadata: { name: api }
spec:
  replicas: 3
  strategy: { type: RollingUpdate, rollingUpdate: { maxSurge: 1, maxUnavailable: 0 } }
  selector: { matchLabels: { app: api } }
  template:
    metadata: { labels: { app: api } }
    spec:
      securityContext: { runAsNonRoot: true, seccompProfile: { type: RuntimeDefault } }
      topologySpreadConstraints:
        - { maxSkew: 1, topologyKey: topology.kubernetes.io/zone, whenUnsatisfiable: ScheduleAnyway, labelSelector: { matchLabels: { app: api } } }
      containers:
        - name: api
          image: registre.exemple.fr/shop/api:1.4.2@sha256:...    # version + digest
          resources: { requests: { cpu: 250m, memory: 256Mi }, limits: { memory: 512Mi } }
          readinessProbe: { httpGet: { path: /ready, port: 8080 } }
          livenessProbe:  { httpGet: { path: /healthz, port: 8080 } }
          securityContext: { allowPrivilegeEscalation: false, readOnlyRootFilesystem: true, capabilities: { drop: [ALL] } }
kubectl get pods -A -o json | jq -r '.items[] | select(.spec.containers[].resources.requests == null) | .metadata.namespace + "/" + .metadata.name'   # pods sans requests
kubectl get pdb -A && kubectl get hpa -A
kubectl top pods -A --sort-by=memory | head

Sécurité et gouvernance #

Contrôles à automatiser.

Vérifications #

kubectl auth can-i --list --as=system:serviceaccount:prod:default
kubectl get clusterrolebindings -o json | jq -r '.items[] | select(.roleRef.name=="cluster-admin") | .metadata.name + " -> " + ([.subjects[]?.name] | join(","))'
kubectl label ns prod pod-security.kubernetes.io/enforce=restricted --overwrite
kubectl get networkpolicy -A
kubescape scan framework nsa && trivy k8s --report summary cluster
kubectl create quota prod-quota --hard=cpu=40,memory=80Gi,pods=100 -n prod
Bonne Pratique : Appliquez ces règles avec un moteur de politiques (Kyverno ou OPA Gatekeeper) pour les imposer à l'admission plutôt que de les vérifier après coup.

Exploitation du cluster #

Sauvegardes et mises à jour.

Sauvegarde, mises à jour, nœuds #

# Sauvegarde etcd
ETCDCTL_API=3 etcdctl snapshot save /backup/etcd-$(date +%F).db --endpoints=https://127.0.0.1:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key
# Sauvegarde applicative (Velero)
velero backup create prod-$(date +%F) --include-namespaces prod --ttl 720h
velero restore create --from-backup prod-2026-10-18
# Mise à jour contrôlée d'un nœud
kubectl drain worker-1 --ignore-daemonsets --delete-emptydir-data && kubectl uncordon worker-1
kubeadm upgrade plan

Articles liés

Comparaison Offres Kubernetes

Analyse complète des offres managées de Kubernetes avec points forts, fonctionnalités, tarification et intégr…

Stratégies de placement Kubernetes

Présentation des stratégies de placement dans Kubernetes pour optimiser la gestion des charges de travail ave…

CNI Kubernetes : Flannel, Calico et Cilium comparés

Kubernetes CNI : comprendre les plugins réseau (Container Network Interface) et comparer Flannel, Calico et C…