IV.3
Protocole technique — quotas cgroups et namespace Kubernetes en pipeline CI/CD
Une contrainte non contournable, imposée par le noyau, pas par une bonne pratique documentaire
Ce protocole formalise l'implémentation technique de la limite dure annoncée en IV.2, pour qu'elle soit vérifiable et non contournable — répondant à l'exigence méthodologique posée au moment du cadrage de cette thèse : une reconquête architecturale doit produire une preuve d'implémentation, pas seulement une recommandation.
◆ Étape 1 — Déclaration du budget dans le manifeste de déploiement
Chaque service déclare, dans son manifeste Kubernetes, un objet ResourceQuota au niveau du namespace qui l'héberge, fixant un plafond agrégé de calcul et de mémoire pour l'ensemble des conteneurs de ce namespace, et un objet LimitRange définissant les plafonds par défaut et maximaux applicables à chaque conteneur individuel — ces deux objets étant des ressources natives de l'API Kubernetes, appliquées par le plan de contrôle du cluster lui-même.
◆ Étape 2 — Vérification en amont dans le pipeline CI/CD
Avant toute fusion de code vers la branche de déploiement, une étape automatisée du pipeline d'intégration continue compare les ressources demandées par le manifeste aux plafonds fixés en IV.1 et IV.2, et fait échouer le processus de construction si cette demande dépasse le budget déclaré — transformant un dépassement de capacité en échec de build visible immédiatement par l'équipe de développement, avant tout déploiement en production.
◆ Étape 3 — Application au niveau du noyau par les cgroups
Une fois déployé, chaque conteneur voit ses limites de ressources appliquées par les groupes de contrôle (cgroups) du noyau Linux, mécanisme sur lequel Kubernetes lui-même s'appuie pour l'isolation des ressources entre conteneurs. Un processus dépassant sa limite mémoire déclarée est terminé par le noyau (OOM Killer, documenté ailleurs dans cette collection de recherche), reproduisant délibérément le signal d'alerte dur documenté comme disparu au Chapitre II — pas comme un accident cette fois, mais comme une contrainte réintroduite intentionnellement.
◆ Ce que ce protocole garantit, et ce qu'il ne garantit pas
Ce protocole garantit qu'un dépassement de budget architectural produit un signal technique dur et immédiat — échec de build ou terminaison de processus — plutôt qu'une dérive budgétaire silencieuse. Il ne garantit pas, à lui seul, que l'équipe de développement choisira d'optimiser son code plutôt que de renégocier son budget à la hausse — cette dernière option restant une décision organisationnelle légitime, que ce protocole rend seulement visible et délibérée plutôt que silencieuse et par défaut.