<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:webfeeds="http://webfeeds.org/rss/1.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>Aperta Scientia — Tech Radar &amp; Veille Technologique</title><description>Analyses techniques, actualités de l&apos;ingénierie plateforme et veille sur l&apos;infrastructure IA par le laboratoire d&apos;intelligence d&apos;Aperta Scientia.</description><link>https://aperta.io/</link><language>fr-fr</language><image><url>https://aperta.io/images/apertascientia-crest-logo.png</url><title>Aperta Scientia — Tech Radar &amp; Veille Technologique</title><link>https://aperta.io</link></image><webfeeds:icon>https://aperta.io/images/apertascientia-crest-logo.png</webfeeds:icon><webfeeds:logo>https://aperta.io/images/apertascientia-crest-logo.png</webfeeds:logo><webfeeds:accentColor>0CA5A3</webfeeds:accentColor><atom:icon>https://aperta.io/favicon.ico</atom:icon><atom:logo>https://aperta.io/images/apertascientia-crest-logo.png</atom:logo><item><title>Docling, Granite &amp; OpenShift AI : Ingestion Multimodale, Décodage Guidé et Extraction Structurée pour les Pipelines RAG</title><link>https://aperta.io/fr/radar/2026-10-13-docling-granite-rhoai-extraction-structuree-rag/</link><guid isPermaLink="true">https://aperta.io/fr/radar/2026-10-13-docling-granite-rhoai-extraction-structuree-rag/</guid><description>Ingestion documentaire avec Docling, modèles de vision de layout, décodage guidé vLLM vs guardrails défensifs avec IBM Granite sur Red Hat OpenShift AI (RHOAI).</description><pubDate>Tue, 13 Oct 2026 08:30:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://aperta.io/images/technologies/granite.png&quot; alt=&quot;Docling, Granite &amp; OpenShift AI : Ingestion Multimodale, Décodage Guidé et Extraction Structurée pour les Pipelines RAG&quot; style=&quot;max-width: 100%; height: auto; border-radius: 12px; margin-bottom: 20px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Dans la construction de pipelines RAG (&lt;em&gt;Retrieval-Augmented Generation&lt;/em&gt;) et d&amp;#39;architectures d&amp;#39;IA d&amp;#39;entreprise, la qualité des représentations vectorielles dépend directement de la fidélité de l&amp;#39;ingestion documentaire. Les organisations disposent de volumes massifs de données stratégiques captives de formats bureautiques statiques (PDF, documents Word, feuilles de calcul). Or, le traitement naïf de ces flux se heurte à un écueil fondamental : la divergence radicale entre l&amp;#39;&lt;strong&gt;ordre d&amp;#39;impression&lt;/strong&gt; (&lt;em&gt;printing order&lt;/em&gt;) et l&amp;#39;&lt;strong&gt;ordre de lecture sémantique&lt;/strong&gt; (&lt;em&gt;reading order&lt;/em&gt;).&lt;/p&gt;
&lt;p&gt;Dans un retour d&amp;#39;expérience technique publié sur le &lt;strong&gt;Red Hat Developer Blog&lt;/strong&gt;, les équipes d&amp;#39;ingénierie détaillent l&amp;#39;architecture d&amp;#39;un moteur de matching sémantique combinant la bibliothèque multimodale open source &lt;strong&gt;Docling&lt;/strong&gt; (portée par IBM Research et Red Hat), les modèles de langage ouverts &lt;strong&gt;IBM Granite&lt;/strong&gt; et la plateforme &lt;strong&gt;Red Hat OpenShift AI (RHOAI)&lt;/strong&gt;. Cette architecture met en lumière les compromis d&amp;#39;ingénierie critiques entre le &lt;strong&gt;décodage guidé par grammaire&lt;/strong&gt; et les &lt;strong&gt;guardrails défensifs&lt;/strong&gt; lors de l&amp;#39;extraction de données structurées.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;1. La rupture sémantique des documents : Ordre d&amp;#39;impression vs Ordre de lecture&lt;/h3&gt;
&lt;p&gt;Le format PDF standard n&amp;#39;a pas été conçu pour la structuration sémantique de données, mais pour la fidélité graphique lors de l&amp;#39;impression physique. Le flux de contenu d&amp;#39;un PDF brut est piloté par des opérateurs matriciels (tels que l&amp;#39;opérateur &lt;code&gt;Tm&lt;/code&gt; qui positionne le curseur à des coordonnées cartésiennes précises &lt;code&gt;X&lt;/code&gt; et &lt;code&gt;Y&lt;/code&gt;). &lt;/p&gt;
&lt;p&gt;En conséquence :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;L&amp;#39;ordre des éléments dans le flux binaire reflète la séquence d&amp;#39;impression et non la hiérarchie logique du texte.&lt;/li&gt;
&lt;li&gt;Un titre principal peut être encodé après un bloc de bas de page ou une colonne latérale.&lt;/li&gt;
&lt;li&gt;La mise en page multi-colonnes, les en-têtes et les tableaux complexes sont désintégrés en fragments de texte déconnectés par les outils de parsing OCR ou textuels naïfs (&lt;code&gt;pypdf&lt;/code&gt;, extracteurs regex).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cette perte d&amp;#39;intégrité structurelle corrompt l&amp;#39;étape de découpage (&lt;em&gt;chunking&lt;/em&gt;) dans les architectures RAG, produisant des fragments incohérents qui dégradent les scores de similarité cosinus et polluent le contexte injecté aux LLM.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;2. L&amp;#39;approche hybride de Docling : Vision de layout et modèle intermédiaire&lt;/h3&gt;
&lt;p&gt;Pour surmonter cette barrière, &lt;strong&gt;Docling&lt;/strong&gt; applique une approche hybride associant des parseurs de formats bureautiques (prenant en charge 35 formats différents via &lt;code&gt;python-docx&lt;/code&gt;, &lt;code&gt;openpyxl&lt;/code&gt;, &lt;code&gt;BeautifulSoup&lt;/code&gt;) et des modèles d&amp;#39;IA de vision spécialisés dans l&amp;#39;analyse de mise en page (&lt;em&gt;Document Layout Analysis&lt;/em&gt;).&lt;/p&gt;
&lt;p&gt;Pour le traitement des PDF :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Segmentation par modèle de vision :&lt;/strong&gt; Docling utilise un réseau neuronal entraîné sur plus de 150 000 documents annotés (tel que &lt;code&gt;docling-layout-heron&lt;/code&gt;) pour prédire les boîtes englobantes (&lt;em&gt;bounding boxes&lt;/em&gt;) de chaque composant et lui assigner une étiquette sémantique (&lt;code&gt;[section_header]&lt;/code&gt;, &lt;code&gt;[text]&lt;/code&gt;, &lt;code&gt;[table]&lt;/code&gt;, &lt;code&gt;[caption]&lt;/code&gt;, &lt;code&gt;[furniture]&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Projection géométrique inverse :&lt;/strong&gt; Les coordonnées vectorielles des opérateurs d&amp;#39;impression &lt;code&gt;Tm&lt;/code&gt; du PDF sont projetées et réassociées à leurs boîtes englobantes parentes, restaurant fidèlement l&amp;#39;ordre de lecture original.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Représentation intermédiaire &lt;code&gt;DoclingDocument&lt;/code&gt; :&lt;/strong&gt; La structure résultante est matérialisée dans un modèle objet Python/Pydantic hiérarchique. Ce modèle encapsule la liste ordonnée des éléments textuels (&lt;code&gt;TextItem&lt;/code&gt;) et préserve l&amp;#39;arbre hiérarchique du document (corps, sections, sous-sections).&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Cette représentation intermédiaire est ensuite exportée en &lt;strong&gt;Markdown propre et structuré&lt;/strong&gt;, fournissant une matière première exploitable par les modèles de fondation sans bruit de mise en forme.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;3. Extraction de données structurées : Décodage guidé vs Guardrails défensifs&lt;/h3&gt;
&lt;p&gt;Une fois le document converti en Markdown, l&amp;#39;étape suivante consiste à extraire un schéma JSON strictement typé via un LLM compact et performant, tel qu&amp;#39;&lt;strong&gt;IBM Granite 3.1&lt;/strong&gt; ou &lt;strong&gt;Granite 4:3B&lt;/strong&gt;. Deux stratégies d&amp;#39;ingénierie s&amp;#39;affrontent pour garantir la conformité du schéma :&lt;/p&gt;
&lt;h4&gt;Approche A : Le décodage guidé (Guided Decoding) au runtime d&amp;#39;inférence&lt;/h4&gt;
&lt;p&gt;Supporté nativement par les moteurs d&amp;#39;inférence modernes comme &lt;strong&gt;vLLM&lt;/strong&gt; via les bibliothèques &lt;code&gt;llguidance&lt;/code&gt; et &lt;code&gt;xgrammar&lt;/code&gt;, le décodage guidé applique un masque de logits à chaque étape de génération de token. Les tokens qui violeraient la grammaire formelle du JSON Schema sont purement et simplement exclus de la distribution de probabilité.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Avantage :&lt;/strong&gt; 100% de conformité syntaxique garantie en sortie de modèle sans post-traitement.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Écueil critique en production (L&amp;#39;hallucination forcée) :&lt;/strong&gt; Si une propriété déclarée comme obligatoire dans le schéma (par exemple &lt;code&gt;years_of_experience&lt;/code&gt;) est totalement absente du document source, le décodage guidé interdit syntaxiquement au modèle d&amp;#39;omettre la clé ou d&amp;#39;émettre une valeur hors-domaine. Le modèle est alors contraint par la grammaire d&amp;#39;&lt;strong&gt;inventer une valeur plausible&lt;/strong&gt; pour respecter le contrat d&amp;#39;API, provoquant une hallucination silencieuse mais structurellement valide.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Approche B : Les guardrails défensifs et boucle de remédiation&lt;/h4&gt;
&lt;p&gt;L&amp;#39;approche retenue par les architectures résilientes (comme le projet PeopleMesh décrit par Red Hat) privilégie la souplesse de génération suivie de filtres de validation déterministes :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Nettoyage automatique des balises Markdown de code (```json).&lt;/li&gt;
&lt;li&gt;Déduplication des listes de compétences et normalisation des chaînes (suppression des espaces superflus).&lt;/li&gt;
&lt;li&gt;Clamping strict sur des vocabulaires contrôlés (mapping des niveaux de séniorité non reconnus vers des valeurs par défaut).&lt;/li&gt;
&lt;li&gt;Validation sémantique par schéma Pydantic : si une information critique manque, l&amp;#39;absence est explicitée (valeur &lt;code&gt;null&lt;/code&gt; ou tableau vide) plutôt qu&amp;#39;hallucinée. En cas d&amp;#39;erreur de structure, une boucle de relance ciblée (&lt;em&gt;retry loop&lt;/em&gt;) renvoie l&amp;#39;erreur au LLM pour correction.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;4. Vectorisation ciblée et évitement de la dilution d&amp;#39;embedding&lt;/h3&gt;
&lt;p&gt;Une erreur fréquente dans les pipelines RAG consiste à calculer un vecteur d&amp;#39;embedding global sur l&amp;#39;ensemble d&amp;#39;un profil ou d&amp;#39;un document complet. Cette pratique conduit au phénomène de &lt;strong&gt;dilution d&amp;#39;embedding&lt;/strong&gt; (&lt;em&gt;Embedding Dilution&lt;/em&gt;) : en moyennant mathématiquement des dizaines de compétences, d&amp;#39;intérêts et d&amp;#39;expériences hétérogènes dans un même vecteur dense (ex. 1536 dimensions), les signaux distinctifs s&amp;#39;annulent mutuellement dans l&amp;#39;espace latent. Le point résultant dérive vers une zone médiane peu différenciée.&lt;/p&gt;
&lt;p&gt;Pour maximiser la précision des recherches sémantiques :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;L&amp;#39;architecture segmente les entités en sous-facettes sémantiques cohérentes (rôle principal, compétences techniques, domaine d&amp;#39;activité).&lt;/li&gt;
&lt;li&gt;Chaque facette génère un vecteur dédié ou s&amp;#39;appuie sur une recherche hybride (recherche vectorielle combinée à des filtres scalaires et de la recherche lexicale BM25) orchestrée sur &lt;strong&gt;PostgreSQL avec pgvector&lt;/strong&gt; ou sur une base vectorielle distribuée comme &lt;strong&gt;Milvus&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;5. Opérationnalisation sur Red Hat OpenShift AI (RHOAI)&lt;/h3&gt;
&lt;p&gt;L&amp;#39;industrialisation de cette chaîne sur &lt;strong&gt;Red Hat OpenShift&lt;/strong&gt; mobilise plusieurs composants natifs de la plateforme :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;NVIDIA GPU Operator &amp;amp; Accélération matérielle :&lt;/strong&gt; Déploiement des conteneurs d&amp;#39;ingestion Docling avec accès direct aux GPU pour exécuter en parallèle les modèles de vision de layout à haut débit.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ServingRuntimes vLLM &amp;amp; KServe :&lt;/strong&gt; Déploiement managé des modèles IBM Granite sous OpenShift AI avec support des backends d&amp;#39;inférence haute performance, allocation optimisée du KV-cache et configuration fine des endpoints d&amp;#39;inférence.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Orchestration de pipelines avec Data Science Pipelines (Kubeflow Pipelines v2) :&lt;/strong&gt; Automatisation du flux continu d&amp;#39;ingestion documentaire, de validation des schémas et de mise à jour des index vectoriels.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Persistance souveraine sur OpenShift Data Foundation (ODF) :&lt;/strong&gt; Stockage des documents sources sur NooBaa (Object Storage S3) et persistance des bases vectorielles sur volumes Ceph RBD chiffrés.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;6. Compétences &amp;amp; Cursus Aperta Scientia&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cursus AS300 (AI Platform Engineer — 399h) :&lt;/strong&gt; Ce cas d&amp;#39;usage illustre parfaitement l&amp;#39;ingénierie des pipelines de données pour l&amp;#39;IA — ingestion multimodale avec &lt;strong&gt;Docling&lt;/strong&gt;, déploiement et configuration des ServingRuntimes &lt;strong&gt;vLLM&lt;/strong&gt; avec &lt;strong&gt;IBM Granite&lt;/strong&gt; sur &lt;strong&gt;Red Hat OpenShift AI (RHOAI)&lt;/strong&gt;, arbitrage opérationnel entre &lt;em&gt;Guided Decoding&lt;/em&gt; (&lt;code&gt;llguidance&lt;/code&gt;) et guardrails déterministes, conception d&amp;#39;architectures RAG évitant l&amp;#39;embedding dilution, et persistance vectorielle sur &lt;strong&gt;Milvus / ODF&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cursus AS200 (DevOps Platform Engineer — 399h) :&lt;/strong&gt; Industrialisation GitOps des manifestes de ServingRuntime via &lt;strong&gt;OpenShift GitOps (ArgoCD)&lt;/strong&gt;, gestion du cycle de vie du &lt;strong&gt;GPU Operator&lt;/strong&gt;, isolation multi-tenant des workloads d&amp;#39;ingestion documentaire et sécurisation des flux d&amp;#39;API d&amp;#39;inférence.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;7. Sources &amp;amp; Références Techniques&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Red Hat Developer Blog — &lt;em&gt;Build an AI matching engine with Docling, Granite &amp;amp; OpenShift AI&lt;/em&gt; :&lt;/strong&gt; &lt;a href=&quot;https://developers.redhat.com/articles/2026/10/12/build-ai-matching-engine-docling-granite-openshift-ai&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;developers.redhat.com/articles/2026/10/12/build-ai-matching-engine-docling-granite-openshift-ai&lt;/a&gt; (consulté le 13 octobre 2026)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Docling Layout Analysis Research Paper (arXiv:2509.11720) :&lt;/strong&gt; &lt;a href=&quot;https://arxiv.org/abs/2509.11720&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;arxiv.org/abs/2509.11720&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Docling Project &amp;amp; Model Repository :&lt;/strong&gt; &lt;a href=&quot;https://github.com/DS4SD/docling&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;github.com/DS4SD/docling&lt;/a&gt; — modèles : &lt;a href=&quot;https://huggingface.co/docling-project/docling-layout-heron&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;huggingface.co/docling-project/docling-layout-heron&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;vLLM Documentation — &lt;em&gt;Structured Outputs (llguidance &amp;amp; xgrammar)&lt;/em&gt; :&lt;/strong&gt; &lt;a href=&quot;https://docs.vllm.ai/en/stable/features/structured_outputs/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;docs.vllm.ai/en/stable/features/structured_outputs/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Red Hat OpenShift AI (RHOAI) Overview :&lt;/strong&gt; &lt;a href=&quot;https://www.redhat.com/en/technologies/cloud-computing/openshift/openshift-ai&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;redhat.com/en/technologies/cloud-computing/openshift/openshift-ai&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><media:content url="https://aperta.io/images/technologies/granite.png" medium="image" type="image/png"/><media:thumbnail url="https://aperta.io/images/technologies/granite.png"/><webfeeds:featuredImage>https://aperta.io/images/technologies/granite.png</webfeeds:featuredImage><category>Tech Radar</category><category>AI Infrastructure</category><category>OpenShift AI</category><author>Aperta Intelligence Lab</author><enclosure url="https://aperta.io/images/technologies/granite.png" length="0" type="image/png"/></item><item><title>ODF &amp; Metro-DR : Résilience Multi-Cluster RPO=0 et Stockage Synchrone sur OpenShift</title><link>https://aperta.io/fr/radar/2026-10-08-odf-rook-ceph-metro-dr-resilience-multicluster-openshift/</link><guid isPermaLink="true">https://aperta.io/fr/radar/2026-10-08-odf-rook-ceph-metro-dr-resilience-multicluster-openshift/</guid><description>Architecture OpenShift Data Foundation Metro-DR : réplication synchrone Rook-Ceph RBD, orchestration déclarative RamenDR et RHACM pour une résilience RPO=0 des workloads stateful et IA.</description><pubDate>Thu, 08 Oct 2026 08:30:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://aperta.io/images/technologies/openshift.png&quot; alt=&quot;ODF &amp; Metro-DR : Résilience Multi-Cluster RPO=0 et Stockage Synchrone sur OpenShift&quot; style=&quot;max-width: 100%; height: auto; border-radius: 12px; margin-bottom: 20px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;En production cloud-native, la haute disponibilité des architectures sans état (stateless) est largement maîtrisée grâce à la répartition des pods sur plusieurs zones de disponibilité. En revanche, pour les services &lt;strong&gt;stateful critiques&lt;/strong&gt; — bases relationnelles transactionnelles, brokers Kafka, disques virtuels de machines &lt;strong&gt;KubeVirt&lt;/strong&gt;, ou bases vectorielles de serving IA (&lt;strong&gt;Milvus, Qdrant&lt;/strong&gt;) —, la perte soudaine d&amp;#39;un datacenter complet constitue le pire cauchemar de l&amp;#39;ingénieur de plateforme : corruption d&amp;#39;état, perte irréversible de transactions (&lt;em&gt;RPO &amp;gt; 0&lt;/em&gt;) ou indisponibilité prolongée (&lt;em&gt;RTO élevé&lt;/em&gt;).&lt;/p&gt;
&lt;p&gt;Si les sauvegardes asynchrones par snapshots périodiques (CSI / OADP / Velero) sont adaptées à la reprise sur sinistre régionale distante, elles ne répondent pas aux exigences de continuité d&amp;#39;activité stricte à l&amp;#39;échelle métropolitaine. C&amp;#39;est précisément le périmètre d&amp;#39;&lt;strong&gt;OpenShift Data Foundation (ODF)&lt;/strong&gt; dans sa topologie &lt;strong&gt;Metro-DR&lt;/strong&gt; : combiner le moteur de stockage distribué &lt;strong&gt;Rook-Ceph&lt;/strong&gt;, la réplication synchrone au niveau bloc (&lt;strong&gt;Ceph RBD Mirroring&lt;/strong&gt;) et l&amp;#39;opérateur d&amp;#39;orchestration multi-cluster &lt;strong&gt;RamenDR&lt;/strong&gt; sous l&amp;#39;égide de &lt;strong&gt;Red Hat Advanced Cluster Management (RHACM)&lt;/strong&gt; pour garantir un &lt;strong&gt;RPO = 0&lt;/strong&gt; et un basculement automatisé en quelques minutes.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;1. Les deux architectures de reprise après sinistre ODF : Metro-DR vs Regional-DR&lt;/h3&gt;
&lt;p&gt;Pour concevoir une stratégie de résilience robuste, il convient de distinguer clairement les deux modes de Disaster Recovery proposés par OpenShift Data Foundation :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Regional-DR (Asynchrone — RPO &amp;gt; 0) :&lt;/strong&gt; Déployé sur deux clusters OpenShift séparés par de grandes distances géographiques (plusieurs centaines de kilomètres), où la latence réseau interdit la synchronisation synchrone. La réplication RBD s&amp;#39;effectue par snapshots différentiels à intervalles programmés (ex. toutes les 5 à 15 minutes). En cas de sinistre, les données écrites entre le dernier snapshot et le crash sont perdues.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Metro-DR (Synchrone — RPO = 0) :&lt;/strong&gt; Déployé à l&amp;#39;échelle d&amp;#39;une aire métropolitaine (deux datacenters interconnectés par fibre noire avec une latence réseau aller-retour &lt;strong&gt;RTT &amp;lt; 10 ms&lt;/strong&gt;). Chaque écriture bloc est confirmée simultanément sur les deux sites avant acquittement au niveau applicatif. En cas d&amp;#39;effondrement intégral du datacenter primaire, &lt;strong&gt;aucune donnée n&amp;#39;est perdue (RPO = 0)&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Dans le modèle Metro-DR bi-clusters d&amp;#39;entreprise, deux clusters OpenShift indépendants hébergent chacun une instance locale d&amp;#39;ODF/Ceph, reliées en miroir synchrone par l&amp;#39;intermédiaire du réseau inter-cluster chiffré &lt;strong&gt;Submariner&lt;/strong&gt;. Un troisième site neutre héberge le plan de contrôle RHACM pour éviter tout scénario de split-brain.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;2. Le cœur mécanique : Rook-Ceph RBD Mirroring et Submariner&lt;/h3&gt;
&lt;p&gt;Au niveau de la couche de stockage sous-jacente, ODF s&amp;#39;appuie sur l&amp;#39;opérateur open source &lt;strong&gt;Rook-Ceph&lt;/strong&gt; :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Daemon rbd-mirror synchrone :&lt;/strong&gt; Les pools de blocs Ceph (RADOS Block Device - RBD) dédiés aux Persistent Volume Claims (PVC) sont configurés en mode miroir journalisé synchrone. Chaque requête d&amp;#39;écriture I/O traverse le journal Ceph et est répliquée sur le cluster pair avant validation de l&amp;#39;opération POSIX.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Interconnexion réseau avec Submariner :&lt;/strong&gt; Les flux de réplication de stockage entre les deux clusters OpenShift transitent via des tunnels sécurisés IPSec/WireGuard établis au niveau de la couche réseau (CNI OVN-Kubernetes) par l&amp;#39;opérateur &lt;strong&gt;Submariner&lt;/strong&gt;, éliminant tout besoin d&amp;#39;exposer publiquement les démons OSD/MON Ceph.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cohérence et isolation :&lt;/strong&gt; Contrairement à un cluster étiré unique (&lt;em&gt;Stretch Cluster&lt;/em&gt;), le modèle Metro-DR bi-clusters isole totalement les plans de contrôle Kubernetes et etcd. Un incident de réseau ou un dysfonctionnement de l&amp;#39;API Server sur le site A n&amp;#39;a aucun impact sur la stabilité du cluster B.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;3. Orchestration déclarative avec RamenDR et RHACM&lt;/h3&gt;
&lt;p&gt;La force de la solution réside dans l&amp;#39;automatisation déclarative pilotée par les Custom Resource Definitions (CRDs) du projet open source &lt;strong&gt;RamenDR&lt;/strong&gt;, intégré nativement dans &lt;strong&gt;Red Hat Advanced Cluster Management (RHACM)&lt;/strong&gt; :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CRD &lt;code&gt;DRPolicy&lt;/code&gt; :&lt;/strong&gt; Définit la politique de protection, la planification de synchronisation (synchrone pour Metro-DR) et les clusters pairs cibles :&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;apiVersion: ramendr.openshift.io/v1alpha1
kind: DRPolicy
metadata:
  name: metro-dr-sync-policy
spec:
  drClusters:
    - ocp-cluster-primary
    - ocp-cluster-secondary
  schedulingInterval: 0m # Mode synchrone strict (RPO=0)
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CRD &lt;code&gt;DRPlacementControl&lt;/code&gt; (DRPC) :&lt;/strong&gt; Associe une application (déployée via un &lt;code&gt;Placement&lt;/code&gt; RHACM ou un &lt;code&gt;ApplicationSet&lt;/code&gt; ArgoCD) à la politique &lt;code&gt;DRPolicy&lt;/code&gt;. Le contrôleur Ramen surveille en continu la santé de la réplication des PVCs associées au namespace.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Failover vs Relocate :&lt;/strong&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Relocate (Maintenance planifiée) :&lt;/strong&gt; L&amp;#39;administrateur bascule l&amp;#39;application vers le second cluster. RamenDR met en pause l&amp;#39;application source, draine les pods, vide les tampons I/O, détache les PVCs Ceph, bascule le statut du miroir RBD en primaire sur le cluster cible et redémarre les workloads. Zéro perte de données, interruption minimale.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Failover (Crash imprévu) :&lt;/strong&gt; Lorsque le cluster primaire cesse de répondre, RHACM initie un failover d&amp;#39;urgence. RamenDR promeut unilatéralement les volumes RBD secondaires en lecture/écriture et déploie instantanément les pods applicatifs sur le cluster survivant.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;4. Cas d&amp;#39;usage critiques : KubeVirt et AI Vector Databases&lt;/h3&gt;
&lt;p&gt;Cette architecture de stockage résiliente répond aux deux défis majeurs de l&amp;#39;ingénierie de plateforme moderne :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Machines virtuelles KubeVirt (OpenShift Virtualization) :&lt;/strong&gt; Les disques virtuels de VM sont matérialisés par des PVCs de type Block en StorageClass RBD. Grâce à Metro-DR, une machine virtuelle legacy critique exécutée dans KubeVirt peut basculer d&amp;#39;un datacenter à l&amp;#39;autre sans réinstallation, en conservant l&amp;#39;intégrité intégrale de son système de fichiers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pipelines IA et bases vectorielles RAG (Milvus / Qdrant) :&lt;/strong&gt; Les bases vectorielles servant les applications LLM d&amp;#39;entreprise nécessitent une persistance d&amp;#39;index à haute performance. Metro-DR sécurise le stockage persistant de l&amp;#39;index vectoriel et des métadonnées, garantissant que l&amp;#39;inférence générative d&amp;#39;entreprise reste opérationnelle même en cas de panne d&amp;#39;infrastructure majeure.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h3&gt;5. Alignement Cursus Aperta Scientia&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cursus AS200 (DevOps Platform Engineer — 399h) :&lt;/strong&gt; Modules avancés DO380 (OpenShift Automation and Integration) et DO370 (Enterprise Storage with OpenShift Data Foundation) — conception et déploiement de pools &lt;strong&gt;Rook-Ceph&lt;/strong&gt;, configuration des StorageClasses RBD/CephFS, interconnexion multi-cluster avec &lt;strong&gt;Submariner&lt;/strong&gt;, et automatisation des basculements de reprise après sinistre via &lt;strong&gt;RHACM&lt;/strong&gt; et les CRDs &lt;strong&gt;RamenDR&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cursus AS300 (AI Platform Engineer — 399h) :&lt;/strong&gt; Architecture de résilience pour plateformes de données IA et serving LLM — persistance des bases vectorielles (&lt;strong&gt;Milvus&lt;/strong&gt;, &lt;strong&gt;Qdrant&lt;/strong&gt;), gestion de la disponibilité des volumes de cache et des checkpoints de modèles distribués en environnement multi-zone souverain.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;Sources &amp;amp; Références Techniques&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Red Hat Developer Blog&lt;/strong&gt; — &lt;em&gt;Disaster recovery for stateful applications on OpenShift&lt;/em&gt; : &lt;a href=&quot;https://developers.redhat.com/articles/2025/08/14/disaster-recovery-stateful-applications-openshift&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;developers.redhat.com/articles/2025/08/14/disaster-recovery-stateful-applications-openshift&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Red Hat Documentation&lt;/strong&gt; — &lt;em&gt;Configuring OpenShift Data Foundation Disaster Recovery for OpenShift Workloads (Metro-DR)&lt;/em&gt; : &lt;a href=&quot;https://docs.redhat.com/en/documentation/red_hat_openshift_data_foundation/4.16/html/configuring_openshift_data_foundation_disaster_recovery_for_openshift_workloads/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;docs.redhat.com/en/documentation/red_hat_openshift_data_foundation/4.16/html/configuring_openshift_data_foundation_disaster_recovery_for_openshift_workloads/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rook-Ceph Documentation&lt;/strong&gt; — &lt;em&gt;Ceph Cluster CRD &amp;amp; Synchronous Mirroring&lt;/em&gt; : &lt;a href=&quot;https://rook.io/docs/rook/latest-release/CRDs/Cluster/ceph-cluster-crd/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;rook.io/docs/rook/latest-release/CRDs/Cluster/ceph-cluster-crd/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RamenDR Project (CNCF Sandbox)&lt;/strong&gt; — &lt;em&gt;Disaster Recovery for Kubernetes Stateful Applications&lt;/em&gt; : &lt;a href=&quot;https://ramendr.github.io/ramen/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;ramendr.github.io/ramen/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Red Hat Advanced Cluster Management (RHACM)&lt;/strong&gt; — &lt;em&gt;Multi-Cluster Application Lifecycle &amp;amp; DRPolicy Automation&lt;/em&gt; : &lt;a href=&quot;https://access.redhat.com/documentation/en-us/red_hat_advanced_cluster_management_for_kubernetes/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;access.redhat.com/documentation/en-us/red_hat_advanced_cluster_management_for_kubernetes/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><media:content url="https://aperta.io/images/technologies/openshift.png" medium="image" type="image/png"/><media:thumbnail url="https://aperta.io/images/technologies/openshift.png"/><webfeeds:featuredImage>https://aperta.io/images/technologies/openshift.png</webfeeds:featuredImage><category>Tech Radar</category><category>Cloud &amp; DevOps</category><category>Storage &amp; Resilience</category><author>Aperta Intelligence Lab</author><enclosure url="https://aperta.io/images/technologies/openshift.png" length="0" type="image/png"/></item><item><title>OpenShift Data Foundation : Rook-Ceph, CSI et chiffrement par tenant</title><link>https://aperta.io/fr/radar/2026-10-08-openshift-data-foundation-rook-ceph-chiffrement-tenant/</link><guid isPermaLink="true">https://aperta.io/fr/radar/2026-10-08-openshift-data-foundation-rook-ceph-chiffrement-tenant/</guid><description>ANALYSE — OpenShift Data Foundation (Rook-Ceph) : architecture operator + démons Ceph + drivers CSI, StorageClasses ceph-rbd / cephfs, chiffrement cluster-wide ou par StorageClass avec HashiCorp Vault comme KMS, et isolation multi-tenant par namespace.</description><pubDate>Thu, 08 Oct 2026 08:30:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://aperta.io/images/technologies/openshift.png&quot; alt=&quot;OpenShift Data Foundation : Rook-Ceph, CSI et chiffrement par tenant&quot; style=&quot;max-width: 100%; height: auto; border-radius: 12px; margin-bottom: 20px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Sur une plateforme Kubernetes, on dimensionne le CPU, on plafonne la mémoire, on surveille la latence réseau — et on découvre les vrais problèmes le jour où un PersistentVolumeClaim reste en &lt;strong&gt;Pending&lt;/strong&gt;. Le stockage est la couche la plus sous-estimée du Platform Engineering : il décide de la résilience, de la portabilité et, de plus en plus, de la conformité. Sur OpenShift, cette couche porte un nom : &lt;strong&gt;OpenShift Data Foundation (ODF)&lt;/strong&gt;, l&amp;#39;opérateur qui transforme des disques bruts en un cluster &lt;strong&gt;Ceph&lt;/strong&gt; consommable par l&amp;#39;API Kubernetes.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;1. ODF : un cluster Ceph gouverné par un operator&lt;/h3&gt;
&lt;p&gt;ODF n&amp;#39;invente pas un stockage : il industrialise &lt;strong&gt;Rook&lt;/strong&gt;, l&amp;#39;operator qui déploie et réconcilie &lt;strong&gt;Ceph&lt;/strong&gt; sur Kubernetes (voir la &lt;a href=&quot;https://rook.io/docs/rook/latest-release/Getting-Started/intro/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;documentation Rook Ceph&lt;/a&gt;). Trois familles de démons composent le cœur :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MON (Monitor)&lt;/strong&gt; — garde le &lt;em&gt;cluster map&lt;/em&gt; (topologie, état des OSD, placement groups) ; le quorum des MON est le point de décision unique du cluster.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MGR (Manager)&lt;/strong&gt; — expose les métriques, le dashboard et les modules d&amp;#39;administration.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OSD (Object Storage Daemon)&lt;/strong&gt; — un processus par disque : c&amp;#39;est lui qui stocke réellement les données, réplique et répare.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Là où un SAN classique demande un administrateur stockage dédié, ODF offre des &lt;strong&gt;CRDs Kubernetes&lt;/strong&gt; : on déclare un &lt;code&gt;StorageCluster&lt;/code&gt;, Rook fait converger l&amp;#39;état réel. C&amp;#39;est le même contrat déclaratif que le reste de la plateforme — et donc le même pipeline GitOps.&lt;/p&gt;
&lt;h3&gt;2. Un seul cluster, trois interfaces de consommation&lt;/h3&gt;
&lt;p&gt;Le stockage Ceph est exposé au cluster via des &lt;strong&gt;drivers CSI&lt;/strong&gt; qui provisionnent dynamiquement les volumes :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ocs-storagecluster-ceph-rbd&lt;/code&gt; — volumes &lt;strong&gt;bloc RBD&lt;/strong&gt; (RADOS Block Device), accès &lt;strong&gt;RWO&lt;/strong&gt; (ReadWriteOnce). Le choix par défaut pour les bases de données, les états applicatifs et les &lt;em&gt;StatefulSets&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ocs-storagecluster-cephfs&lt;/code&gt; — &lt;strong&gt;CephFS&lt;/strong&gt;, système de fichiers partagé en accès &lt;strong&gt;RWX&lt;/strong&gt; (ReadWriteMany). Indispensable pour les volumes partagés par plusieurs Pods (artefacts de build, modèles, pipelines).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;S3 / Object Storage&lt;/strong&gt; via &lt;strong&gt;NooBaa (Multicloud Object Gateway)&lt;/strong&gt; — une API S3 compatible pour les sauvegardes, les &lt;em&gt;data lakes&lt;/em&gt; et les backends d&amp;#39;entraînement.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Vu de la plateforme, ce sont des &lt;strong&gt;StorageClasses&lt;/strong&gt; standard : un PVC + un nom de classe, et CSI provisionne le volume. C&amp;#39;est cette abstraction qui rend le stockage portable — et testable en CI comme n&amp;#39;importe quel manifeste.&lt;/p&gt;
&lt;h3&gt;3. Chiffrement : deux granularités, une seule clé de décision&lt;/h3&gt;
&lt;p&gt;C&amp;#39;est ici qu&amp;#39;ODF dépasse le SAN boîte-noire. Le chiffrement Ceph repose sur une &lt;strong&gt;enveloppe à deux clés&lt;/strong&gt; : chaque volume possède une &lt;strong&gt;DEK&lt;/strong&gt; (Data Encryption Key) qui chiffre les données, elle-même chiffrée par une &lt;strong&gt;KEK&lt;/strong&gt; (Key Encryption Key) détenue par un &lt;strong&gt;KMS externe&lt;/strong&gt;. ODF s&amp;#39;intègre à &lt;strong&gt;HashiCorp Vault&lt;/strong&gt; comme KMS.&lt;/p&gt;
&lt;p&gt;Deux niveaux coexistent :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Chiffrement cluster-wide&lt;/strong&gt; — toutes les données au repos sont chiffrées, une seule politique. C&amp;#39;est le socle, décrit pas-à-pas dans l&amp;#39;article &lt;em&gt;&lt;a href=&quot;https://developers.redhat.com/articles/2025/04/10/openshift-data-foundation-cluster-wide-encryption-hashicorp-vault&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;OpenShift Data Foundation and HashiCorp Vault securing data&lt;/a&gt;&lt;/em&gt; du &lt;strong&gt;Red Hat Developer Blog&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Chiffrement par-PV (StorageClass)&lt;/strong&gt; — souvent &lt;strong&gt;insuffisant&lt;/strong&gt; en environnement multi-tenant : une conformité peut exiger &lt;strong&gt;une clé distincte par projet, tenant ou niveau de sensibilité&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;4. Le cas multi-tenant : isoler les frontières de chiffrement par namespace&lt;/h3&gt;
&lt;p&gt;L&amp;#39;article &lt;em&gt;&lt;a href=&quot;https://developers.redhat.com/articles/2025/07/15/enhance-data-security-openshift-data-foundation&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;Enhance data security in OpenShift Data Foundation&lt;/a&gt;&lt;/em&gt; (Red Hat Developer Blog, 15 juillet 2025) déroule exactement ce scénario. En activant &lt;strong&gt;StorageClass encryption&lt;/strong&gt; dans l&amp;#39;assistant d&amp;#39;installation ODF, le cluster obtient une &lt;strong&gt;StorageClass chiffrée supplémentaire&lt;/strong&gt; :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ oc get sc
NAME                                              PROVISIONER                        RECLAIMPOLICY
ocs-storagecluster-ceph-rbd                       openshift-storage.rbd.csi.ceph.com Delete
ocs-storagecluster-ceph-rbd-encrypted (default)   openshift-storage.rbd.csi.ceph.com Delete
ocs-storagecluster-cephfs                         openshift-storage.cephfs.csi.ceph.com Delete
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;L&amp;#39;isolation se construit en quatre gestes, chacun mappé sur une primitive Kubernetes :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Un rôle et une ACL Vault par tenant&lt;/strong&gt; — chaque namespace obtient son propre chemin (&lt;code&gt;kv/tenant-a/&lt;/code&gt;), donc sa propre frontière cryptographique.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Un ConfigMap dans le namespace&lt;/strong&gt; — surcharge la configuration CSI pour pointer le volume vers le bon chemin Vault.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Un ServiceAccount dédié&lt;/strong&gt;, lié au rôle Vault via &lt;strong&gt;Kubernetes Auth&lt;/strong&gt; (&lt;code&gt;bound_service_account_namespaces&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Des PVC dans le namespace&lt;/strong&gt; consommant la StorageClass chiffrée — chaque volume est scellé par la KEK du tenant.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Point d&amp;#39;ingénierie souvent raté : &lt;strong&gt;Kubernetes déconseille les tokens de ServiceAccount longue durée&lt;/strong&gt; (depuis v1.22) ; le bon réflexe est un &lt;strong&gt;TTL court&lt;/strong&gt; dans la policy Vault, avec rotation automatique via la &lt;strong&gt;TokenRequest API&lt;/strong&gt;. Le secret ne vit plus dans un Secret éternel, il vit dans le temps.&lt;/p&gt;
&lt;h3&gt;5. Pourquoi c&amp;#39;est structurant pour les plateformes IA (AS300)&lt;/h3&gt;
&lt;p&gt;Le stockage n&amp;#39;est pas un sujet &lt;em&gt;DevOps&lt;/em&gt; périphérique : c&amp;#39;est le substrat de l&amp;#39;IA d&amp;#39;entreprise.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Entraînement distribué&lt;/strong&gt; — les datasets doivent être montés en &lt;strong&gt;RWX&lt;/strong&gt; par plusieurs workers ; CephFS devient le point de rendez-vous des jobs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RAG et bases vectorielles&lt;/strong&gt; — un backend comme &lt;strong&gt;Milvus&lt;/strong&gt; s&amp;#39;appuie sur des volumes bloc &lt;strong&gt;RBD&lt;/strong&gt; pour ses index persistants, avec snapshots CSI.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Model store &amp;amp; registre&lt;/strong&gt; — les artefacts de modèles et les checkpoints sont des volumes &lt;em&gt;stateful&lt;/em&gt; : &lt;strong&gt;snapshots et clones CSI&lt;/strong&gt; permettent de versionner un état sans copie complète.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Souveraineté&lt;/strong&gt; — chiffrement at-rest à clés maîtrisées (&lt;strong&gt;KMS Vault&lt;/strong&gt;) et S3 interne (&lt;strong&gt;NooBaa&lt;/strong&gt;) : les données d&amp;#39;entraînement ne quittent pas le périmètre.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;6. Sources &amp;amp; Références Techniques&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Red Hat Developer Blog — Enhance data security in OpenShift Data Foundation :&lt;/strong&gt; &lt;a href=&quot;https://developers.redhat.com/articles/2025/07/15/enhance-data-security-openshift-data-foundation&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;developers.redhat.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Red Hat Developer Blog — OpenShift Data Foundation and HashiCorp Vault securing data :&lt;/strong&gt; &lt;a href=&quot;https://developers.redhat.com/articles/2025/04/10/openshift-data-foundation-cluster-wide-encryption-hashicorp-vault&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;developers.redhat.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Red Hat — OpenShift Data Foundation (page produit) :&lt;/strong&gt; &lt;a href=&quot;https://www.redhat.com/en/technologies/cloud-computing/openshift-data-foundation&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;redhat.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Red Hat Documentation — OpenShift Data Foundation 4.22 :&lt;/strong&gt; &lt;a href=&quot;https://docs.redhat.com/en/documentation/red_hat_openshift_data_foundation&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;docs.redhat.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rook — Rook Ceph Documentation :&lt;/strong&gt; &lt;a href=&quot;https://rook.io/docs/rook/latest-release/Getting-Started/intro/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;rook.io&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ceph Documentation :&lt;/strong&gt; &lt;a href=&quot;https://docs.ceph.com/en/latest/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;docs.ceph.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kubernetes CSI Developer Documentation :&lt;/strong&gt; &lt;a href=&quot;https://kubernetes-csi.github.io/docs/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;kubernetes-csi.github.io&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><media:content url="https://aperta.io/images/technologies/openshift.png" medium="image" type="image/png"/><media:thumbnail url="https://aperta.io/images/technologies/openshift.png"/><webfeeds:featuredImage>https://aperta.io/images/technologies/openshift.png</webfeeds:featuredImage><category>Tech Radar</category><category>Stockage</category><category>OpenShift</category><author>Aperta Intelligence Lab</author><enclosure url="https://aperta.io/images/technologies/openshift.png" length="0" type="image/png"/></item><item><title>Sécurité des conteneurs : pourquoi votre conteneur non-root perd ses capabilities (SCC, CRI-O, kernel)</title><link>https://aperta.io/fr/radar/2026-10-06-container-security-non-root-capabilities-scc-crio-kernel/</link><guid isPermaLink="true">https://aperta.io/fr/radar/2026-10-06-container-security-non-root-capabilities-scc-crio-kernel/</guid><description>ANALYSE — CAP_NET_RAW absent d&apos;un conteneur non-root : pipeline SCC → CRI-O → kernel, cinq jeux de capabilities (Bnd/Prm/Eff/Inh/Amb), transition UID 0 → non-root et remèdes (file capabilities, capabilities ambiantes KEP 2763).</description><pubDate>Tue, 06 Oct 2026 08:30:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://aperta.io/images/technologies/openshift.png&quot; alt=&quot;Sécurité des conteneurs : pourquoi votre conteneur non-root perd ses capabilities (SCC, CRI-O, kernel)&quot; style=&quot;max-width: 100%; height: auto; border-radius: 12px; margin-bottom: 20px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Un sidecar de supervision tourne en non-root et doit exécuter des sondes ICMP : il lui faut &lt;code&gt;CAP_NET_RAW&lt;/code&gt;. La SecurityContextConstraint (SCC) autorise la capability, le PodSpec la demande (&lt;code&gt;capabilities.add: [NET_RAW]&lt;/code&gt;), CRI-O démarre le conteneur sans erreur — et pourtant &lt;code&gt;ping&lt;/code&gt; échoue :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ ping -c 1 10.0.0.1
ping: Operation not permitted
$ cat /proc/1/status | grep Cap
CapPrm: 0000000000000000
CapEff: 0000000000000000
CapBnd: 0000000000002000
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Rien à voir avec un bug. Ce cas, documenté par le &lt;strong&gt;Red Hat Developer Blog&lt;/strong&gt; le 5 octobre 2026, est la rencontre de trois systèmes qui ne se parlent pas : l&amp;#39;admission &lt;strong&gt;SCC&lt;/strong&gt; côté API server, la traduction de la requête CRI par &lt;strong&gt;CRI-O&lt;/strong&gt; en spec OCI, et la &lt;strong&gt;sémantique des capabilities&lt;/strong&gt; dans le noyau Linux. Comprendre où s&amp;#39;arrête la SCC et où commence le kernel est la clé de tout débogage de privilèges conteneurisés.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;1. La SCC est un portail d&amp;#39;admission, pas un moteur d&amp;#39;exécution&lt;/h3&gt;
&lt;p&gt;Une SCC détermine uniquement si une configuration de sécurité est &lt;strong&gt;autorisée à entrer&lt;/strong&gt; dans le cluster (capabilities autorisées, plages d&amp;#39;UID, types de volumes, escalade de privilèges, contexte SELinux). Elle est évaluée par le contrôleur d&amp;#39;admission de l&amp;#39;API server OpenShift au moment de la création du Pod. Une fois le Pod admis, &lt;strong&gt;le travail de la SCC est terminé&lt;/strong&gt; : elle n&amp;#39;a aucune composante runtime, ne parle pas à CRI-O, n&amp;#39;écrit aucune règle iptables et ne configure aucune capability de processus.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;À l&amp;#39;échelle du cluster :&lt;/strong&gt; la SCC est plus granulaire que Pod Security Admission (PSA) — PSA raisonne en 3 niveaux grossiers (privileged, baseline, restricted) là où la SCC contrôle champ par champ.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;2. CRI-O : de la SCC au spec OCI, là où tout se joue&lt;/h3&gt;
&lt;p&gt;CRI-O n&amp;#39;a aucune notion de SCC : il reçoit un &lt;code&gt;CreateContainerRequest&lt;/code&gt; et le traduit en spec OCI. Les champs simples (hostNetwork, hostPID, hostIPC) se mappent directement en modes de namespaces. Les capabilities, elles, passent par &lt;code&gt;SpecSetPrivileges()&lt;/code&gt; et divergent selon le mode :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Conteneurs privilégiés :&lt;/strong&gt; &lt;code&gt;SetupPrivileged(true)&lt;/code&gt; remplit les &lt;strong&gt;cinq jeux&lt;/strong&gt; de capabilities (41 capabilities connues). À noter : le champ &lt;code&gt;dropCapabilities&lt;/code&gt; du PodSpec est alors &lt;strong&gt;ignoré&lt;/strong&gt; — la logique add/drop est entièrement court-circuitée.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Conteneurs non privilégiés :&lt;/strong&gt; CRI-O part d&amp;#39;une liste puis fusionne &lt;strong&gt;9 capabilities par défaut&lt;/strong&gt; (&lt;code&gt;CHOWN&lt;/code&gt;, &lt;code&gt;DAC_OVERRIDE&lt;/code&gt;, &lt;code&gt;FSETID&lt;/code&gt;, &lt;code&gt;FOWNER&lt;/code&gt;, &lt;code&gt;SETGID&lt;/code&gt;, &lt;code&gt;SETUID&lt;/code&gt;, &lt;code&gt;SETPCAP&lt;/code&gt;, &lt;code&gt;NET_BIND_SERVICE&lt;/code&gt;, &lt;code&gt;KILL&lt;/code&gt;), sauf si le PodSpec déclare &lt;code&gt;drop: ALL&lt;/code&gt;. C&amp;#39;est précisément pourquoi le motif &lt;code&gt;drop: ALL&lt;/code&gt; + &lt;code&gt;add: [une capability]&lt;/code&gt; est la bonne pratique de production : on repart d&amp;#39;un ensemble minimal maîtrisé.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;CRI-O écrit ensuite la capability finale dans &lt;strong&gt;Bounding, Effective et Permitted&lt;/strong&gt; — de façon &lt;strong&gt;identique&lt;/strong&gt; que le conteneur tourne en root ou non. Le résultat runtime, lui, sera radicalement différent.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;3. Kernel : cinq jeux de capabilities et une transition UID qui efface tout&lt;/h3&gt;
&lt;p&gt;Les capabilities décomposent le modèle superuser en unités distinctes, réparties en cinq jeux évalués différemment par le noyau :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Bounding (CapBnd)&lt;/strong&gt; — plafond absolu de ce qu&amp;#39;un processus peut acquérir.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Permitted (CapPrm)&lt;/strong&gt; — réservoir depuis lequel les capabilities effectives sont puisées.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Effective (CapEff)&lt;/strong&gt; — ce que le noyau vérifie réellement à l&amp;#39;exécution ; sans &lt;code&gt;CAP_NET_RAW&lt;/code&gt; ici, la création d&amp;#39;un socket brut est refusée quel que soit le contenu des autres jeux.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Inheritable (CapInh)&lt;/strong&gt; — capabilities transmises au travers d&amp;#39;&lt;code&gt;execve()&lt;/code&gt;, uniquement si le binaire porte les file capabilities correspondantes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ambient (CapAmb)&lt;/strong&gt; — introduites avec Linux 4.3 pour résoudre exactement le problème du non-root : elles repeuplent automatiquement Permitted et Effective après &lt;code&gt;execve()&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Le mécanisme fatal : le runtime OCI démarre le processus en &lt;strong&gt;root&lt;/strong&gt;, applique les jeux, &lt;strong&gt;puis bascule vers l&amp;#39;UID cible&lt;/strong&gt; (ex. 1000). Or, lors de cette transition UID 0 → non-zéro, &lt;strong&gt;le noyau efface CapPrm et CapEff&lt;/strong&gt;. Seuls Bounding subsiste. Et CRI-O ne positionne &lt;strong&gt;jamais&lt;/strong&gt; CapInh ni CapAmb.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;4. Pourquoi CRI-O n&amp;#39;active pas les capabilities ambiantes — décision assumée&lt;/h3&gt;
&lt;p&gt;Ce n&amp;#39;est pas un oubli : c&amp;#39;est un choix de sécurité documenté dans le code de CRI-O. Kubernetes suppose que &lt;code&gt;runAsNonRoot&lt;/code&gt; entraîne la perte des capabilities ; activer les capabilities ambiantes casserait ce contrat implicite. Une &lt;strong&gt;KEP (2763 – ambient capabilities)&lt;/strong&gt; existe pourtant côté SIG Security pour les rendre supportables de façon sélective — à suivre, car elle changerait la donne pour tous les sidecars non-root à besoin de privilège fin.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;5. Les remèdes, et leur coût réel&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;File capabilities (&lt;code&gt;setcap&lt;/code&gt;)&lt;/strong&gt; — l&amp;#39;approche la plus ciblée : &lt;code&gt;setcap &amp;#39;cap_net_raw=+ep&amp;#39; /usr/bin/ping&lt;/code&gt; lors du build. Le noyau promeut la capability dans Permitted et Effective à l&amp;#39;exécution, même en non-root, tant qu&amp;#39;elle reste dans le Bounding set. &lt;strong&gt;Coût :&lt;/strong&gt; modifier l&amp;#39;image ; les file capabilities sont stockées en attributs étendus, donc le pipeline de build et le driver de stockage doivent les préserver — et la confiance se déplace vers la &lt;strong&gt;provenance de l&amp;#39;image&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Exécution en root&lt;/strong&gt; — évite la transition UID. &lt;strong&gt;Coût :&lt;/strong&gt; la SCC de production la plus courante (&lt;code&gt;restricted-v2&lt;/code&gt;) l&amp;#39;interdit.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Conteneur privilégié&lt;/strong&gt; — remplit les cinq jeux, mais &lt;strong&gt;désactive SELinux, AppArmor et seccomp&lt;/strong&gt; et court-circuite tout le add/drop : « une masse pour écraser une punaise ». À proscrire hors debug.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;La leçon d&amp;#39;ingénierie :&lt;/strong&gt; la SCC, CRI-O et le noyau sont trois couches successives, chacune avec son propre modèle mental. Devant un &lt;code&gt;CapEff: 0000000000000000&lt;/code&gt; en non-root, on ne cherche pas un bug : on relit la transition UID et la sémantique des capabilities.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;6. Sources &amp;amp; Références Techniques&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Red Hat Developer Blog — Why your non-root container dropped its capabilities (and how to fix it) :&lt;/strong&gt; &lt;a href=&quot;https://developers.redhat.com/articles/2026/10/05/why-your-non-root-container-dropped-its-capabilities-and-how-to-fix-it&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;developers.redhat.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Linux man-pages — capabilities(7) :&lt;/strong&gt; &lt;a href=&quot;https://man7.org/linux/man-pages/man7/capabilities.7.html&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;man7.org&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kubernetes Enhancement Proposal 2763 — Ambient Capabilities :&lt;/strong&gt; &lt;a href=&quot;https://github.com/kubernetes/enhancements/blob/master/keps/sig-security/2763-ambient-capabilities/README.md&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;github.com/kubernetes/enhancements&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Red Hat Blog — Managing SCCs in OpenShift :&lt;/strong&gt; &lt;a href=&quot;https://www.redhat.com/en/blog/managing-sccs-in-openshift&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;redhat.com&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><media:content url="https://aperta.io/images/technologies/openshift.png" medium="image" type="image/png"/><media:thumbnail url="https://aperta.io/images/technologies/openshift.png"/><webfeeds:featuredImage>https://aperta.io/images/technologies/openshift.png</webfeeds:featuredImage><category>Tech Radar</category><category>Sécurité</category><category>Conteneurs &amp; Linux</category><author>Aperta Intelligence Lab</author><enclosure url="https://aperta.io/images/technologies/openshift.png" length="0" type="image/png"/></item><item><title>llm-d &amp; Inférence Distribuée sur OpenShift : Découplage Prefill / Decode et Routage Cache-Aware</title><link>https://aperta.io/fr/radar/2026-10-06-llm-d-inference-distribuee-disaggregation-prefill-decode-vllm-openshift/</link><guid isPermaLink="true">https://aperta.io/fr/radar/2026-10-06-llm-d-inference-distribuee-disaggregation-prefill-decode-vllm-openshift/</guid><description>Architecture llm-d sur Red Hat OpenShift et vLLM : désagrégation Prefill/Decode, transfert KV-cache via RDMA et routage intelligent Gateway API pour l&apos;inférence d&apos;entreprise.</description><pubDate>Tue, 06 Oct 2026 08:30:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://aperta.io/images/technologies/llm-d.png&quot; alt=&quot;llm-d &amp; Inférence Distribuée sur OpenShift : Découplage Prefill / Decode et Routage Cache-Aware&quot; style=&quot;max-width: 100%; height: auto; border-radius: 12px; margin-bottom: 20px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Le passage à l&amp;#39;échelle de l&amp;#39;inférence générative en entreprise se heurte aujourd&amp;#39;hui à un goulot d&amp;#39;étranglement fondamental : l&amp;#39;inadéquation entre les profils de calcul de l&amp;#39;étape de &lt;strong&gt;Prefill&lt;/strong&gt; (ingestion du prompt et calcul du Key-Value cache) et de l&amp;#39;étape de &lt;strong&gt;Decode&lt;/strong&gt; (génération séquentielle de tokens). Dans un déploiement vLLM monolithique standard, ces deux phases partagent le même GPU, provoquant des congestions massives sur les requêtes à contexte long et une gigue inacceptable sur l&amp;#39;Inter-Token Latency (ITL).&lt;/p&gt;
&lt;p&gt;L&amp;#39;architecture &lt;strong&gt;llm-d&lt;/strong&gt;, projet open source porté au sein de la CNCF et soutenu par &lt;strong&gt;Red Hat&lt;/strong&gt;, &lt;strong&gt;IBM Research&lt;/strong&gt;, &lt;strong&gt;Google Cloud&lt;/strong&gt;, &lt;strong&gt;CoreWeave&lt;/strong&gt; et &lt;strong&gt;NVIDIA&lt;/strong&gt;, standardise l&amp;#39;orchestration Kubernetes de l&amp;#39;inférence distribuée désagrégée (&lt;em&gt;Prefill/Decode Disaggregation&lt;/em&gt;) et le routage sensible au cache (&lt;em&gt;KV-cache-aware routing&lt;/em&gt;) sur &lt;strong&gt;Red Hat OpenShift AI&lt;/strong&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;1. Le défi du déploiement monolithique : Conflit de phases de calcul&lt;/h3&gt;
&lt;p&gt;L&amp;#39;inférence d&amp;#39;un Large Language Model (LLM) s&amp;#39;articule autour de deux régimes d&amp;#39;exécution diamétralement opposés :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Phase de Prefill (Compute-Bound) :&lt;/strong&gt; Traitement parallèle de la séquence d&amp;#39;entrée pour calculer les matrices d&amp;#39;attention initiales et construire le KV-cache. Cette phase sature les cœurs de calcul Tensor Cores et requiert une puissance de calcul brute (TFLOPS) maximale.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Phase de Decode (Memory-Bandwidth-Bound) :&lt;/strong&gt; Génération autorégressive token par token. Chaque nouveau token ne nécessite qu&amp;#39;une fraction du calcul matriciel, mais contraint la bande passante mémoire VRAM (HBM) pour charger l&amp;#39;intégralité des poids du modèle et du KV-cache à chaque étape.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Dans un modèle monolithique, l&amp;#39;arrivée d&amp;#39;un prompt volumineux (ex. 64k ou 128k tokens dans un pipeline RAG d&amp;#39;entreprise) monopolise le GPU et interrompt le flux de décodage des sessions actives. Le &lt;strong&gt;Time-To-First-Token (TTFT)&lt;/strong&gt; explose et l&amp;#39;&lt;strong&gt;Inter-Token Latency (ITL)&lt;/strong&gt; devient imprévisible.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;2. Désagrégation Prefill / Decode (P/D Disaggregation) avec vLLM&lt;/h3&gt;
&lt;p&gt;L&amp;#39;inférence désagrégée scinde le pipeline en deux pools de calcul distincts et indépendamment scalables :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Pool de Prefill (Instances vLLM optimisées pour le calcul) :&lt;/strong&gt; Absorbe les requêtes entrantes, calcule le KV-cache initial à pleine vitesse et transmet instantanément l&amp;#39;état mémoire sans générer de tokens.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pool de Decode (Instances vLLM optimisées pour la bande passante mémoire) :&lt;/strong&gt; Reçoit le tenseur de KV-cache déjà calculé et exécute la génération de tokens en continu avec une latence ultra-faible et stable.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Le transfert du KV-cache entre les nœuds s&amp;#39;effectue via des connecteurs haute performance (&lt;strong&gt;vLLM NIXL / UCX / RDMA over Converged Ethernet&lt;/strong&gt;), éliminant tout coût de recalcul sur le nœud de décodage.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;3. Le rôle de llm-d : Ordonnancement intelligent et Extension Gateway API&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;llm-d&lt;/strong&gt; apporte le plan de contrôle Kubernetes natif pour orchestrer cette complexité :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CRD &lt;code&gt;InferencePool&lt;/code&gt; et &lt;code&gt;InferenceObjective&lt;/code&gt; :&lt;/strong&gt; Définition déclarative des pools de calcul spécialisés (accélérateurs NVIDIA H100/A100, AMD Instinct ou L40S) et des contraintes de SLO (TTFT cible, latence p99 par token).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Routage Prefix-Cache-Aware :&lt;/strong&gt; La passerelle d&amp;#39;inférence (basée sur la &lt;strong&gt;Kubernetes Gateway API Inference Extension&lt;/strong&gt;) maintient un index global distribué des préfixes de KV-cache. Les requêtes partageant un contexte commun (ex. system prompt, documents RAG indexés) sont automatiquement dirigées vers les nœuds détenant déjà ces blocs en cache mémoire, réduisant le TTFT jusqu&amp;#39;à 90%.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Équilibrage de charge intelligent :&lt;/strong&gt; Analyse en temps réel de la saturation de la VRAM et de la charge de travail des pods vLLM plutôt qu&amp;#39;un round-robin aveugle.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;4. Déploiement et Opérationnalisation sur Red Hat OpenShift AI&lt;/h3&gt;
&lt;p&gt;L&amp;#39;intégration de llm-d dans l&amp;#39;écosystème &lt;strong&gt;Red Hat OpenShift&lt;/strong&gt; s&amp;#39;appuie sur des briques d&amp;#39;infrastructure éprouvées :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;KServe &amp;amp; ServingRuntime :&lt;/strong&gt; Déploiement déclaratif des instances vLLM sous forme de services cloud-native avec gestion fine du cycle de vie.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Autoscaling découplé via KEDA :&lt;/strong&gt; Mise à l&amp;#39;échelle autonome du pool de Prefill en fonction du volume de requêtes et de la taille des contextes entrants, sans impacter la taille du pool de Decode.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Topologie réseau SR-IOV / RoCE :&lt;/strong&gt; Configuration des interfaces réseau haut débit pour garantir le transfert du KV-cache à débit maximal (400 Gbps+) entre les pods d&amp;#39;un même cluster.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Observabilité OpenTelemetry &amp;amp; Prometheus :&lt;/strong&gt; Suivi granulaire des métriques clés d&amp;#39;inférence (&lt;code&gt;vllm:time_to_first_token_seconds&lt;/code&gt;, &lt;code&gt;vllm:time_per_output_token_seconds&lt;/code&gt;, ratio de cache hit).&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;5. Compétences &amp;amp; Cursus Aperta Scientia&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cursus AS300 (AI Platform Engineer — 399h) :&lt;/strong&gt; Ce sujet est au cœur de l&amp;#39;ingénierie des plateformes d&amp;#39;inférence distribuée — configuration avancée de &lt;strong&gt;vLLM&lt;/strong&gt;, mise en place des ServingRuntimes &lt;strong&gt;KServe&lt;/strong&gt; sous &lt;strong&gt;Red Hat OpenShift AI (RHOAI)&lt;/strong&gt;, gestion du KV-cache distribué, implémentation des CRDs &lt;code&gt;InferencePool&lt;/code&gt; de &lt;strong&gt;llm-d&lt;/strong&gt;, et benchmarking comparatif (GuideLLM / lm_eval) sur architectures désagrégées.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cursus AS200 (DevOps Platform Engineer — 399h) :&lt;/strong&gt; Déploiement et sécurisation des passerelles &lt;strong&gt;Kubernetes Gateway API&lt;/strong&gt;, politiques de routage avancées, configuration du réseau haute performance (SR-IOV / RoCE), monitoring temps réel via &lt;strong&gt;Prometheus / Grafana&lt;/strong&gt;, et automatisation GitOps multi-environnements avec &lt;strong&gt;OpenShift GitOps (ArgoCD)&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;6. Sources &amp;amp; Références Techniques&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Red Hat Developer Blog — &lt;em&gt;Intelligent inference scheduling with llm-d on Red Hat AI&lt;/em&gt; :&lt;/strong&gt; &lt;a href=&quot;https://developers.redhat.com/articles/2026/06/11/intelligent-inference-scheduling-llm-d-red-hat-ai&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;developers.redhat.com/articles/2026/06/11/intelligent-inference-scheduling-llm-d-red-hat-ai&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Red Hat Developer Blog — &lt;em&gt;Introduction to distributed inference with llm-d&lt;/em&gt; :&lt;/strong&gt; &lt;a href=&quot;https://developers.redhat.com/articles/2025/11/21/introduction-distributed-inference-llm-d&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;developers.redhat.com/articles/2025/11/21/introduction-distributed-inference-llm-d&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Red Hat Blog — &lt;em&gt;Demystifying llm-d and vLLM: The race to production&lt;/em&gt; :&lt;/strong&gt; &lt;a href=&quot;https://www.redhat.com/en/blog/demystifying-llm-d-and-vllm-race-production&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;redhat.com/en/blog/demystifying-llm-d-and-vllm-race-production&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CNCF / llm-d Project Repository :&lt;/strong&gt; &lt;a href=&quot;https://github.com/llm-d/llm-d&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;github.com/llm-d/llm-d&lt;/a&gt; — documentation : &lt;a href=&quot;https://llm-d.ai&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;llm-d.ai&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;vLLM Documentation — &lt;em&gt;Disaggregated Prefill &amp;amp; Decode Architecture&lt;/em&gt; :&lt;/strong&gt; &lt;a href=&quot;https://docs.vllm.ai/en/stable/features/disagg_prefill/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;docs.vllm.ai/en/stable/features/disagg_prefill/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kubernetes Gateway API — &lt;em&gt;Inference Extension Working Group&lt;/em&gt; :&lt;/strong&gt; &lt;a href=&quot;https://gateway-api.sigs.k8s.io&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;gateway-api.sigs.k8s.io&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><media:content url="https://aperta.io/images/technologies/llm-d.png" medium="image" type="image/png"/><media:thumbnail url="https://aperta.io/images/technologies/llm-d.png"/><webfeeds:featuredImage>https://aperta.io/images/technologies/llm-d.png</webfeeds:featuredImage><category>Tech Radar</category><category>AI Infrastructure</category><category>Cloud &amp; DevOps</category><author>Aperta Intelligence Lab</author><enclosure url="https://aperta.io/images/technologies/llm-d.png" length="0" type="image/png"/></item><item><title>Tech Radar Hebdo : AMD ROCm, Argo CD 4.0, Guardrails Kyverno, OpenClaw Enterprise &amp; CI augmentée</title><link>https://aperta.io/fr/radar/2026-10-02-tech-radar-amd-gpu-agents-argocd-kyverno-ai-ci/</link><guid isPermaLink="true">https://aperta.io/fr/radar/2026-10-02-tech-radar-amd-gpu-agents-argocd-kyverno-ai-ci/</guid><description>Synthèse hebdomadaire de la veille technologique Aperta : inférence LLM sur GPU AMD (ROCm) en Podman rootless, vision Argo CD 4.0, policy Kubernetes comme guardrail, plan de contrôle pour agents d&apos;entreprise et IA encadrée dans la CI.</description><pubDate>Fri, 02 Oct 2026 15:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://aperta.io/images/technologies/openshift.png&quot; alt=&quot;Tech Radar Hebdo : AMD ROCm, Argo CD 4.0, Guardrails Kyverno, OpenClaw Enterprise &amp; CI augmentée&quot; style=&quot;max-width: 100%; height: auto; border-radius: 12px; margin-bottom: 20px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Retrouvez les faits marquants de la veille technologique menée par le laboratoire d&amp;#39;intelligence d&amp;#39;Aperta Scientia pour les cursus &lt;strong&gt;AS200 (DevOps Platform Engineer)&lt;/strong&gt; et &lt;strong&gt;AS300 (AI Platform Engineer)&lt;/strong&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;1. Inférence LLM sur GPU AMD — Red Hat AI Inference 3.5 (ROCm) + Podman rootless&lt;/h3&gt;
&lt;p&gt;Benchmark pas-à-pas d&amp;#39;un serveur d&amp;#39;inférence compatible OpenAI exécuté sur un GPU AMD Radeon, servi par &lt;strong&gt;Red Hat AI Inference&lt;/strong&gt; (stack vLLM + llm-d) dans un conteneur &lt;strong&gt;Podman rootless&lt;/strong&gt; et instrumenté par &lt;strong&gt;GuideLLM&lt;/strong&gt; (méthodologie PSAP, paliers de concurrence de 1 à 650).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Points clés :&lt;/strong&gt; Vérification de la pile ROCm (amd-smi, modules amdgpu, /dev/kfd et /dev/dri), exposition GPU maîtrisée via --device et --group-add=keep-groups (runtime OCI &lt;strong&gt;crun&lt;/strong&gt; requis), image registry.redhat.io/rhaii/vllm-rocm-rhel9:3.5.0. Signal fort : l&amp;#39;inférence d&amp;#39;entreprise n&amp;#39;est plus mono-constructeur, AMD devient un chemin de production supporté aux côtés de NVIDIA.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Impact Cursus AS300 :&lt;/strong&gt; Module &lt;em&gt;Serving LLM &amp;amp; Inférence Distribuée (AI267)&lt;/em&gt; — hétérogénéité matérielle (NVIDIA / AMD ROCm), images d&amp;#39;inférence supportées, méthodologie de benchmark GuideLLM et densité GPU.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;2. CI augmentée par l&amp;#39;IA — Pipeline Failure Analyzer (1 étape sur 5)&lt;/h3&gt;
&lt;p&gt;Retour d&amp;#39;expérience Red Hat sur le triage d&amp;#39;échecs de CI : 80 jobs en échec et jusqu&amp;#39;à 50 000 lignes de logs par job, réduits en quelques minutes à quelques causes racines.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Points clés :&lt;/strong&gt; Architecture volontairement contrainte — &lt;strong&gt;seule l&amp;#39;étape « Analyze » mobilise un LLM&lt;/strong&gt;, les quatre autres (nettoyage déterministe des logs, assemblage du rapport, création de tickets, publication wiki) restent du code Python. Résultat : coût d&amp;#39;inférence borné, sorties reproductibles, non-déterminisme confiné au raisonnement causal.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Impact Cursus AS200 :&lt;/strong&gt; Module &lt;em&gt;Construction, CI/CD &amp;amp; Automatisation (DO288)&lt;/em&gt; — pipelines robustes et introduction d&amp;#39;un usage LLM encadré (garde-fous déterministes, coût, non-déterminisme).&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;3. Argo CD 4.0 — la communauté Argo dessine l&amp;#39;avenir du GitOps&lt;/h3&gt;
&lt;p&gt;À l&amp;#39;occasion d&amp;#39;ArgoCon North America 2026, la communauté Argo (Argo CD, Workflows, Rollouts, Events) a ouvert le &lt;strong&gt;processus de vision pour Argo CD 4.0&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Points clés :&lt;/strong&gt; Retours terrain mis en avant — Argo CD &lt;strong&gt;au-delà de 60 000 applications&lt;/strong&gt;, Argo CD « on satellites », et &lt;strong&gt;Argo Workflows pour le machine learning&lt;/strong&gt; sur de gros volumes de données. Les quatre projets Argo restent des briques composables, chacune utilisable indépendamment.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Impact Cursus AS200 :&lt;/strong&gt; Module &lt;em&gt;GitOps &amp;amp; Delivery Déclaratif (DO288 / DO380)&lt;/em&gt; — Argo CD à grande échelle, Argo Rollouts (progressive delivery) et Argo Workflows pour les pipelines data/ML.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;4. « Guardrails, not gates » — la policy comme primitive de plateforme (Kyverno)&lt;/h3&gt;
&lt;p&gt;Article de fond CNCF : la policy doit &lt;strong&gt;accompagner&lt;/strong&gt; (guardrail) plutôt que &lt;strong&gt;bloquer&lt;/strong&gt; (gate). Les quatre métiers de la policy — validate, mutate, generate, verify — sont rééquilibrés.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Points clés :&lt;/strong&gt; La plupart des parcs Kubernetes sont « 90 % validation » alors que &lt;strong&gt;mutation et generation&lt;/strong&gt; portent l&amp;#39;essentiel du levier d&amp;#39;expérience développeur. Recommandations : messages de refus actionnables, déploiement progressif des politiques (audit → warn → enforce) et policy traitée comme un &lt;strong&gt;produit&lt;/strong&gt; versionné plutôt qu&amp;#39;une configuration figée.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Impact Cursus AS200 :&lt;/strong&gt; Module &lt;em&gt;Gouvernance de Plateforme &amp;amp; Admission (DO280 / DO380)&lt;/em&gt; — Kyverno (validate/mutate/generate/verify), conception de guardrails et rollout progressif des politiques.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;5. OpenClaw Enterprise — un plan de contrôle ouvert pour les agents d&amp;#39;entreprise&lt;/h3&gt;
&lt;p&gt;Red Hat, NVIDIA, OpenAI et la communauté contribuent en open source à &lt;strong&gt;OpenClaw Enterprise&lt;/strong&gt;, un plan de contrôle d&amp;#39;entreprise pour déployer et opérer des &lt;strong&gt;agents persistants&lt;/strong&gt; multi-utilisateurs et multi-équipes.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Points clés :&lt;/strong&gt; Sandboxing d&amp;#39;agents, AI gateways, AgentOps/traçage et évaluation. En complément, une méthode de &lt;strong&gt;testabilité des « skills »&lt;/strong&gt; d&amp;#39;agents est formalisée : auteur assisté (skill-creator), évaluation du déclenchement (promptfoo, assertion skill-used) et exécution en intégration continue.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Impact Cursus AS300 :&lt;/strong&gt; Module &lt;em&gt;Agents IA &amp;amp; Gouvernance (AI267)&lt;/em&gt; — runtimes d&amp;#39;agents, plans de contrôle ouverts, évaluation de comportement et tests de « skills » en CI.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;6. Sources &amp;amp; Références Techniques&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Red Hat Emerging Technologies — Benchmarking enterprise LLMs on AMD GPUs with Red Hat AI Inference and Podman :&lt;/strong&gt; &lt;a href=&quot;https://next.redhat.com/2026/09/28/benchmarking-enterprise-llms-on-amd-gpus-with-red-hat-ai-inference/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;next.redhat.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Red Hat Developer Blog — How we cut CI failure triage from hours to minutes using AI :&lt;/strong&gt; &lt;a href=&quot;https://developers.redhat.com/articles/2026/09/29/how-we-cut-ci-failure-triage-from-hours-to-minutes-using-ai&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;developers.redhat.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Red Hat Developer Blog — Master your skills: Building skills you can trust :&lt;/strong&gt; &lt;a href=&quot;https://developers.redhat.com/articles/2026/10/01/master-your-skills-building-skills-you-can-trust&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;developers.redhat.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Red Hat Blog — OpenClaw Enterprise, an open foundation for enterprise agents :&lt;/strong&gt; &lt;a href=&quot;https://www.redhat.com/en/blog/why-red-hat-building-open-foundation-enterprise-agents-openclaw-enterprise&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;redhat.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CNCF — ArgoCon North America 2026: the Argo community looks toward CD 4.0 :&lt;/strong&gt; &lt;a href=&quot;https://www.cncf.io/blog/2026/09/30/argocon-north-america-2026-what-to-expect-as-the-argo-community-looks-toward-cd-4-0/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;cncf.io&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CNCF — Guardrails, not gates: rethinking policy in platform teams :&lt;/strong&gt; &lt;a href=&quot;https://www.cncf.io/blog/2026/10/01/guardrails-not-gates-rethinking-policy-in-platform-teams/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;cncf.io&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><media:content url="https://aperta.io/images/technologies/openshift.png" medium="image" type="image/png"/><media:thumbnail url="https://aperta.io/images/technologies/openshift.png"/><webfeeds:featuredImage>https://aperta.io/images/technologies/openshift.png</webfeeds:featuredImage><category>Tech Radar</category><category>Cloud &amp; DevOps</category><category>AI Infrastructure</category><author>Aperta Intelligence Lab</author><enclosure url="https://aperta.io/images/technologies/openshift.png" length="0" type="image/png"/></item><item><title>Event-Driven Ansible : remédiation fermée et auto-guérison des plateformes OpenShift</title><link>https://aperta.io/fr/radar/2026-10-01-event-driven-ansible-remediation-fermee-alertmanager-openshift/</link><guid isPermaLink="true">https://aperta.io/fr/radar/2026-10-01-event-driven-ansible-remediation-fermee-alertmanager-openshift/</guid><description>Rulebooks source/rule/action, ansible.eda et Decision Environments, remédiation fermée Prometheus/Alertmanager sur OpenShift, et l&apos;arrivée de l&apos;MCP server dans Ansible Automation Platform 2.7 : l&apos;automatisation réactive comme compétence d&apos;ingénierie de plateforme.</description><pubDate>Thu, 01 Oct 2026 08:30:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://aperta.io/images/technologies/ansible.png&quot; alt=&quot;Event-Driven Ansible : remédiation fermée et auto-guérison des plateformes OpenShift&quot; style=&quot;max-width: 100%; height: auto; border-radius: 12px; margin-bottom: 20px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Un playbook Ansible lancé à la main à 02h00 pendant un incident n&amp;#39;est pas de l&amp;#39;automatisation : c&amp;#39;est un script humain avec de la latence humaine. Le vrai changement de nature, c&amp;#39;est de transformer un signal — une alerte Prometheus, un événement Kubernetes, un message Kafka, un log journald — en décision et en action, sans réveiller personne. C&amp;#39;est exactement le périmètre d&amp;#39;&lt;strong&gt;Event-Driven Ansible (EDA)&lt;/strong&gt; : le triptyque &lt;code&gt;source → rule → action&lt;/code&gt;, matérialisé dans un &lt;strong&gt;rulebook&lt;/strong&gt; versionné.&lt;/p&gt;
&lt;p&gt;Avec l&amp;#39;arrivée d&amp;#39;&lt;strong&gt;Ansible Automation Platform 2.7&lt;/strong&gt; et de son &lt;strong&gt;serveur MCP&lt;/strong&gt;, EDA sort du registre du gadget de démonstration pour devenir une brique de plateforme : le plan de contrôle qui relie l&amp;#39;observabilité à la remédiation, et désormais un agent conversationnel au même plan de contrôle.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;1. Le modèle source / rule / action&lt;/h3&gt;
&lt;p&gt;Un rulebook est un artefact YAML, versionnable et revu en pull request, dont la structure est volontairement minimale :&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;---
- name: Listen for events on a webhook
  hosts: localhost
  sources:
    - ansible.eda.webhook:
        host: 0.0.0.0
        port: 5000
  rules:
    - name: Say Hello
      condition: event.payload.message == &amp;quot;Ansible is super cool&amp;quot;
      action:
        run_playbook:
          name: say-what.yml
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Trois blocs, trois responsabilités :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;sources&lt;/code&gt;&lt;/strong&gt; : une source d&amp;#39;événements fournie par la collection &lt;code&gt;ansible.eda&lt;/code&gt; — &lt;code&gt;webhook&lt;/code&gt;, &lt;code&gt;alertmanager&lt;/code&gt;, &lt;code&gt;kafka&lt;/code&gt;, &lt;code&gt;file&lt;/code&gt;, &lt;code&gt;journald&lt;/code&gt;, &lt;code&gt;pg_listen&lt;/code&gt;, &lt;code&gt;range&lt;/code&gt; pour les tests, plus les intégrations éditeurs (Splunk, ServiceNow, etc.). Chaque source expose un flux d&amp;#39;événements normalisés.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;rules&lt;/code&gt; / &lt;code&gt;condition&lt;/code&gt;&lt;/strong&gt; : le filtrage, exprimé dans le DSL de conditions d&amp;#39;EDA sur l&amp;#39;objet &lt;code&gt;event&lt;/code&gt; (accès par attributs, opérateurs de comparaison et logiques, tests d&amp;#39;appartenance). C&amp;#39;est ici que vit la logique métier — et donc la dette de maintenance.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;action&lt;/code&gt;&lt;/strong&gt; : &lt;code&gt;run_playbook&lt;/code&gt;, &lt;code&gt;run_module&lt;/code&gt;, &lt;code&gt;run_job_template&lt;/code&gt; (déclenchement d&amp;#39;un Job Template du contrôleur AAP, donc réutilisation du RBAC et de l&amp;#39;inventaire existants), ou &lt;code&gt;debug&lt;/code&gt;/&lt;code&gt;print_event&lt;/code&gt; pour l&amp;#39;observation.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Point d&amp;#39;architecture important : &lt;strong&gt;la condition est évaluée sur l&amp;#39;événement, pas sur l&amp;#39;état du système&lt;/strong&gt;. Un rulebook mal écrit rejoue donc la même remédiation en boucle sur une alerte qui oscille. La maîtrise du &lt;em&gt;blast radius&lt;/em&gt; n&amp;#39;est pas optionnelle.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;2. Du CLI au plan de contrôle : EDA Controller et Decision Environments&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;ansible-rulebook&lt;/code&gt; est un exécutable local, utile pour le prototypage et le débogage. En production, EDA est opéré par le &lt;strong&gt;EDA Controller&lt;/strong&gt; (&lt;code&gt;ansible/eda-server&lt;/code&gt;, Apache-2.0) intégré à Ansible Automation Platform : les rulebooks deviennent des &lt;strong&gt;activations&lt;/strong&gt; (activer / désactiver / redémarrer), adossées à un projet Git et à un inventaire.&lt;/p&gt;
&lt;p&gt;Le socle d&amp;#39;exécution est la &lt;strong&gt;Decision Environment&lt;/strong&gt; : une image de conteneur (EE) qui embarque &lt;code&gt;ansible-rulebook&lt;/code&gt;, Python et les collections requises. C&amp;#39;est le pendant, pour la décision, de l&amp;#39;Execution Environment pour l&amp;#39;exécution.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Reproductibilité&lt;/strong&gt; : la même DE buildée, versionnée et poussée dans un registre (Quay, Automation Hub) garantit que la décision prise en recette est identique à celle prise en production.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cloisonnement&lt;/strong&gt; : une DE par domaine (réseau, sécurité, plateforme) limite les collections accessibles, donc la surface d&amp;#39;action d&amp;#39;une règle compromise.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Traçabilité&lt;/strong&gt; : chaque activation produit un historique exécutable — quel événement, quelle règle, quelle action, quel résultat. C&amp;#39;est la matière première de l&amp;#39;audit et du post-mortem.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Un rulebook ne se teste pas en production. La collection &lt;code&gt;ansible.eda&lt;/code&gt; fournit des sources synthétiques (&lt;code&gt;range&lt;/code&gt;) qui permettent de rejouer un flux d&amp;#39;événements en CI avant toute activation.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;3. Remédiation fermée : Alertmanager comme déclencheur&lt;/h3&gt;
&lt;p&gt;Le cas d&amp;#39;usage canonique sur OpenShift est la boucle &lt;strong&gt;Prometheus → Alertmanager → EDA → action sur le cluster&lt;/strong&gt; : le &lt;code&gt;PrometheusRule&lt;/code&gt; déclenche, Alertmanager route et notifie via un &lt;code&gt;receiver&lt;/code&gt; webhook, la source &lt;code&gt;ansible.eda.alertmanager&lt;/code&gt; ingère la charge utile, la règle filtre sur le nom de l&amp;#39;alerte et les labels, l&amp;#39;action exécute le playbook de remédiation.&lt;/p&gt;
&lt;p&gt;Un exemple d&amp;#39;implémentation de référence, documenté par le &lt;strong&gt;Red Hat Developer Blog&lt;/strong&gt;, déploie une application Quarkus instrumentée, un &lt;code&gt;ServiceMonitor&lt;/code&gt;, Alertmanager avec sa &lt;code&gt;AlertmanagerConfig&lt;/code&gt;, Prometheus, et un Pod EDA portant le rulebook et le playbook d&amp;#39;action — le tout purement déclaratif en &lt;code&gt;oc apply&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Ce qui fait la différence entre une démo et un système exploitable :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Idempotence&lt;/strong&gt; : la remédiation doit être sans effet si l&amp;#39;état est déjà correct. Un redémarrage de Pod en boucle est un incident, pas un remède.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fenêtre et anti-rebond&lt;/strong&gt; : ne pas réagir à une alerte &lt;code&gt;firing&lt;/code&gt; sur un symptôme transitoire ; exiger une durée minimale ou un &lt;code&gt;for:&lt;/code&gt; dans la règle Prometheus.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Escalade graduée&lt;/strong&gt; : auto-correction pour les cas connus et sûrs, création de ticket ou notification sinon. EDA n&amp;#39;est pas « tout automatiser », c&amp;#39;est automatiser ce qui est décidable.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RBAC minimal&lt;/strong&gt; : le ServiceAccount qui porte la remédiation ne doit pouvoir que ce qu&amp;#39;il doit pouvoir (&lt;code&gt;drain&lt;/code&gt; d&amp;#39;un nœud n&amp;#39;est pas la suppression d&amp;#39;un PVC).&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;4. Cas d&amp;#39;usage plateforme qui passent l&amp;#39;épreuve de la production&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cycle de vie des nœuds&lt;/strong&gt; : cordonner et drainer un nœud détecté dégradé par ses métriques, avant que le kubelet ne le fasse pour vous, avec éviction respectant les PDB applicatives.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Certificats et secrets&lt;/strong&gt; : détection d&amp;#39;un certificat proche de l&amp;#39;expiration, rotation et reload des composants concernés — un classique qui ne devrait jamais dépendre d&amp;#39;un humain.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Élasticité&lt;/strong&gt; : mise à l&amp;#39;échelle automatique guidée par un signal métier, y compris sur les charges virtualisées (le Red Hat Developer Blog documente le scaling CPU automatique de machines OpenShift Virtualization piloté par EDA).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sécurité (SOAR)&lt;/strong&gt; : isolement d&amp;#39;un workload suspect sur détection, quarantaine, enrichissement et ouverture de ticket. Le rapprochement entre détection et confinement reste la principale source de réduction du temps d&amp;#39;exposition.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AIOps&lt;/strong&gt; : chaînage des signaux d&amp;#39;observabilité et d&amp;#39;ITSM (Instana, Splunk, ServiceNow) vers une remédiation outillée — le sujet des solution guides publiés pour AAP 2.7.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;5. AAP 2.7 : EDA à l&amp;#39;ère agentique&lt;/h3&gt;
&lt;p&gt;Ansible Automation Platform 2.7 change l&amp;#39;ergonomie et l&amp;#39;intégration d&amp;#39;EDA plus qu&amp;#39;il n&amp;#39;en change le cœur :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Serveur MCP pour AAP (Technology Preview)&lt;/strong&gt; : les agents IA externes (Claude, Cursor, etc.) interrogent l&amp;#39;état des jobs, collectent des faits et lancent des workflows d&amp;#39;automatisation en langage naturel. Le plan de contrôle devient une capacité appelable par un agent — et donc un objet de sécurité à part entière.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Automation intelligent assistant avec « bring your own knowledge »&lt;/strong&gt; : le pipeline RAG de l&amp;#39;assistant peut être étendu avec la documentation interne de l&amp;#39;organisation (politiques, runbooks, terminologie), ce qui rapproche l&amp;#39;assistant du contexte réel d&amp;#39;exploitation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OIDC identity provider pour HashiCorp Vault (Technology Preview)&lt;/strong&gt; : AAP émet des JWT à courte durée de vie, scopés au job, à l&amp;#39;utilisateur et à l&amp;#39;organisation, en remplacement des comptes de service à longue durée de vie. C&amp;#39;est exactement le modèle qu&amp;#39;il faut pour qu&amp;#39;un rulebook accède à un secret sans secret stocké.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Execution Environment builder &amp;amp; content catalog&lt;/strong&gt; : l&amp;#39;environnement de décision se construit dans l&amp;#39;UI, à partir de collections découvertes automatiquement — la barrière d&amp;#39;entrée à EDA baisse, le risque de dérive augmente d&amp;#39;autant.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ansible development workspaces&lt;/strong&gt; : environnement de développement navigateur standardisé (VS Code, &lt;code&gt;ansible-core&lt;/code&gt;, &lt;code&gt;ansible-creator&lt;/code&gt;, &lt;code&gt;ansible-lint&lt;/code&gt;, Molecule).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La lecture d&amp;#39;ingénieur : donner à un agent LLM la capacité de &lt;em&gt;lancer&lt;/em&gt; une remédiation n&amp;#39;a de sens que si les garde-fous — RBAC, revue de rulebook, DE immuable, idempotence — sont déjà en place. L&amp;#39;agent amplifie la qualité du socle, il ne la remplace pas.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;6. Ce qu&amp;#39;il faut enseigner : EDA comme discipline d&amp;#39;exploitation&lt;/h3&gt;
&lt;p&gt;Event-Driven Ansible n&amp;#39;est pas un produit à ajouter au catalogue : c&amp;#39;est la jonction entre l&amp;#39;observabilité, la gestion de configuration et la sécurité opérationnelle. La compétence qui manque sur le marché n&amp;#39;est pas « écrire un rulebook », c&amp;#39;est &lt;strong&gt;concevoir une boucle de décision bornée&lt;/strong&gt; : quel événement, quel seuil, quelle action, quel retour arrière, quel journal.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;7. Compétences &amp;amp; Cursus Aperta Scientia&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cursus AS200 (DevOps Platform Engineer — 399h) :&lt;/strong&gt; ce sujet alimente directement l&amp;#39;automatisation d&amp;#39;infrastructure et l&amp;#39;exploitation à l&amp;#39;échelle — écriture de rulebooks EDA et d&amp;#39;activations côté &lt;strong&gt;DO374 / AAP&lt;/strong&gt;, intégration à l&amp;#39;observabilité Prometheus/Alertmanager et aux politiques de sécurité, exploitation et durcissement multi-cluster côté &lt;strong&gt;DO380&lt;/strong&gt;, et maîtrise des environnements d&amp;#39;exécution et de décision (Execution / Decision Environments) comme artefacts de chaîne de livraison. Préparation aux certifications &lt;strong&gt;EX188&lt;/strong&gt;, &lt;strong&gt;EX280&lt;/strong&gt; et &lt;strong&gt;EX288&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cursus AS300 (AI Platform Engineer — 399h) :&lt;/strong&gt; transposition du modèle au plan de contrôle IA — remédiation réactive sur les &lt;code&gt;InferenceService&lt;/code&gt; KServe et les &lt;code&gt;ServingRuntime&lt;/code&gt; vLLM (éviction d&amp;#39;un GPU en erreur, réduction de charge sur un ServingRuntime dégradé, redémarrage contrôlé d&amp;#39;un pipeline MLOps), et interaction avec le &lt;strong&gt;serveur MCP&lt;/strong&gt; d&amp;#39;AAP comme point d&amp;#39;intégration entre agents et automatisation. L&amp;#39;auto-guérison d&amp;#39;une plateforme d&amp;#39;inférence est une compétence d&amp;#39;exploitation, pas une option.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;8. Sources &amp;amp; Références Techniques&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Red Hat Developer Blog — &lt;em&gt;Event-Driven Ansible rulebook for automation&lt;/em&gt; :&lt;/strong&gt; &lt;a href=&quot;https://developers.redhat.com/articles/2024/04/12/event-driven-ansible-rulebook-automation&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;developers.redhat.com/articles/2024/04/12/event-driven-ansible-rulebook-automation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Red Hat Developer Blog — &lt;em&gt;OpenShift application monitoring with Event-Driven Ansible &amp;amp; Alertmanager&lt;/em&gt; :&lt;/strong&gt; &lt;a href=&quot;https://developers.redhat.com/articles/2024/01/08/openshift-application-monitoring-event-driven-ansible-alertmanager&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;developers.redhat.com/articles/2024/01/08/openshift-application-monitoring-event-driven-ansible-alertmanager&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Red Hat Developer Blog — &lt;em&gt;5 ways to leverage Event-Driven Ansible for your platform&lt;/em&gt; :&lt;/strong&gt; &lt;a href=&quot;https://developers.redhat.com/articles/2024/10/25/5-ways-leverage-event-driven-ansible-your-platform&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;developers.redhat.com/articles/2024/10/25/5-ways-leverage-event-driven-ansible-your-platform&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Red Hat Developer Blog — &lt;em&gt;Implement remediation strategies with Event-Driven Ansible&lt;/em&gt; :&lt;/strong&gt; &lt;a href=&quot;https://developers.redhat.com/articles/2025/01/09/implement-remediation-strategies-event-driven-ansible&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;developers.redhat.com/articles/2025/01/09/implement-remediation-strategies-event-driven-ansible&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Red Hat Developer Blog — &lt;em&gt;Leveraging Ansible Event-Driven Automation for Automatic CPU Scaling in OpenShift Virtualization&lt;/em&gt; :&lt;/strong&gt; &lt;a href=&quot;https://developers.redhat.com/blog/2025/05/07/leveraging-ansible-event-driven-automation-automatic-cpu-scaling-openshift&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;developers.redhat.com/blog/2025/05/07/leveraging-ansible-event-driven-automation-automatic-cpu-scaling-openshift&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Red Hat Developer Blog — &lt;em&gt;What&amp;#39;s new in Red Hat Ansible Automation Platform 2.7&lt;/em&gt; :&lt;/strong&gt; &lt;a href=&quot;https://developers.redhat.com/articles/2026/06/10/whats-new-red-hat-ansible-automation-platform-2-7&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;developers.redhat.com/articles/2026/06/10/whats-new-red-hat-ansible-automation-platform-2-7&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;ansible-rulebook&lt;/code&gt; (GitHub, Apache-2.0) :&lt;/strong&gt; &lt;a href=&quot;https://github.com/ansible/ansible-rulebook&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;github.com/ansible/ansible-rulebook&lt;/a&gt; — documentation : &lt;a href=&quot;https://docs.ansible.com/projects/rulebook/en/latest/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;docs.ansible.com/projects/rulebook&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;EDA Controller / &lt;code&gt;eda-server&lt;/code&gt; (GitHub, Apache-2.0) :&lt;/strong&gt; &lt;a href=&quot;https://github.com/ansible/eda-server&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;github.com/ansible/eda-server&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Red Hat — Documentation Ansible Automation Platform 2.7 :&lt;/strong&gt; &lt;a href=&quot;https://docs.redhat.com/en/documentation/red_hat_ansible_automation_platform/2.7&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;docs.redhat.com/en/documentation/red_hat_ansible_automation_platform/2.7&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><media:content url="https://aperta.io/images/technologies/ansible.png" medium="image" type="image/png"/><media:thumbnail url="https://aperta.io/images/technologies/ansible.png"/><webfeeds:featuredImage>https://aperta.io/images/technologies/ansible.png</webfeeds:featuredImage><category>Tech Radar</category><category>Cloud &amp; DevOps</category><category>Automation</category><author>Aperta Intelligence Lab</author><enclosure url="https://aperta.io/images/technologies/ansible.png" length="0" type="image/png"/></item><item><title>Sécurité de la Software Supply Chain sur OpenShift : Tekton Chains, Sigstore (RHTAS) et SBOM/VEX</title><link>https://aperta.io/fr/radar/2026-09-30-software-supply-chain-security-tekton-chains-sigstore-sbom-openshift/</link><guid isPermaLink="true">https://aperta.io/fr/radar/2026-09-30-software-supply-chain-security-tekton-chains-sigstore-sbom-openshift/</guid><description>Provenance SLSA signée par Tekton Chains, signature keyless Sigstore (Red Hat Trusted Artifact Signer), SBOM/VEX avec Trusted Profile Analyzer et politique de release Enterprise Contract (Conforma) : la chaîne de build OpenShift comme frontière de confiance.</description><pubDate>Wed, 30 Sep 2026 08:30:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://aperta.io/images/technologies/tekton.png&quot; alt=&quot;Sécurité de la Software Supply Chain sur OpenShift : Tekton Chains, Sigstore (RHTAS) et SBOM/VEX&quot; style=&quot;max-width: 100%; height: auto; border-radius: 12px; margin-bottom: 20px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;SolarWinds (2020), Log4Shell (CVE-2021-44228), la porte dérobée XZ Utils (CVE-2024-3094) ou les campagnes de typosquatting sur npm et PyPI convergent vers un même constat d&amp;#39;ingénierie : &lt;strong&gt;l&amp;#39;artefact exécuté en production n&amp;#39;est plus le code que l&amp;#39;on croit avoir écrit&lt;/strong&gt;. La question n&amp;#39;est plus &amp;quot;mon application est-elle vulnérable ?&amp;quot; mais &amp;quot;puis-je prouver d&amp;#39;où vient ce binaire, qui l&amp;#39;a construit, avec quelles dépendances, et qu&amp;#39;il est resté intact entre le commit et le Pod ?&amp;quot;.&lt;/p&gt;
&lt;p&gt;C&amp;#39;est précisément le rôle d&amp;#39;une chaîne d&amp;#39;approvisionnement logicielle outillée. Sur OpenShift, l&amp;#39;assemblage est désormais mature : &lt;strong&gt;OpenShift Pipelines (Tekton)&lt;/strong&gt; pour l&amp;#39;exécution déclarative, &lt;strong&gt;Tekton Chains&lt;/strong&gt; pour la provenance SLSA signée, &lt;strong&gt;Sigstore / Red Hat Trusted Artifact Signer (RHTAS)&lt;/strong&gt; pour la signature keyless, &lt;strong&gt;Red Hat Trusted Profile Analyzer (TPA)&lt;/strong&gt; pour les SBOM et VEX, et &lt;strong&gt;Enterprise Contract (désormais Conforma)&lt;/strong&gt; comme porte de release.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;1. Le pipeline comme frontière de confiance : Pipelines-as-Code&lt;/h3&gt;
&lt;p&gt;La première rupture avec les pratiques historiques consiste à retirer toute construction d&amp;#39;image des postes de travail :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Exécution conteneurisée par construction :&lt;/strong&gt; Une &lt;code&gt;Task&lt;/code&gt; Tekton s&amp;#39;exécute dans un Pod dédié, avec son ServiceAccount, ses Workspaces et ses limites de ressources. Il n&amp;#39;existe plus de &lt;code&gt;docker build&lt;/code&gt; local non traçable ni de tag &lt;code&gt;latest&lt;/code&gt; flottant sur un laptop.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pipelines-as-Code (PaC) :&lt;/strong&gt; les définitions de &lt;code&gt;PipelineRun&lt;/code&gt; vivent dans le dépôt applicatif, sous &lt;code&gt;.tekton/&lt;/code&gt;, et sont déclenchées par des webhooks Git (push, pull request) via la CRD &lt;code&gt;Repository&lt;/code&gt; et un filtrage CEL sur les événements. Le pipeline devient un artefact revu en &lt;em&gt;pull request&lt;/em&gt;, au même titre que le code.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Traçabilité native :&lt;/strong&gt; chaque exécution produit un &lt;code&gt;TaskRun&lt;/code&gt;/&lt;code&gt;PipelineRun&lt;/code&gt; immuable, horodaté, référençant l&amp;#39;image exacte du builder (buildah, git-clone), les paramètres et le commit SHA. C&amp;#39;est la matière première de la provenance SLSA.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Point d&amp;#39;attention terrain : sans politique de &lt;em&gt;pinning&lt;/em&gt; des &lt;code&gt;taskRef&lt;/code&gt; (bundles OCI versionnés, digests plutôt que tags), un pipeline &amp;quot;sécurisé&amp;quot; peut exécuter une Task modifiée en amont. C&amp;#39;est un vecteur d&amp;#39;attaque direct sur la chaîne de build.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;2. Provenance SLSA signée par Tekton Chains&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Tekton Chains&lt;/strong&gt; est un contrôleur qui observe les &lt;code&gt;TaskRun&lt;/code&gt; et &lt;code&gt;PipelineRun&lt;/code&gt; du cluster et transforme leurs résultats en attestations de provenance &lt;strong&gt;in-toto&lt;/strong&gt;, au format &lt;strong&gt;SLSA v1.0&lt;/strong&gt; :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Attestation automatique :&lt;/strong&gt; Chains capture les entrées (images de base, sources, paramètres) et les sorties (digests d&amp;#39;images, artefacts) puis produit un document de provenance signé, sans intervention du développeur.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Backends de signature :&lt;/strong&gt; x509 &lt;em&gt;keyless&lt;/em&gt; (OIDC → Fulcio, certificat à courte durée de vie), KMS managé (AWS KMS, GCP KMS, HashiCorp Vault) ou clé Kubernetes. Ce choix conditionne le niveau SLSA atteignable.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Publication OCI :&lt;/strong&gt; par défaut, l&amp;#39;attestation et sa signature sont poussées dans le registre sous forme d&amp;#39;artefacts OCI au format attendu par &lt;code&gt;cosign&lt;/code&gt;, en parallèle de l&amp;#39;entrée correspondante dans le journal de transparence. L&amp;#39;image porte alors l&amp;#39;annotation &lt;code&gt;chains.tekton.dev/signed: &amp;quot;true&amp;quot;&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lecture SLSA :&lt;/strong&gt; L1 = provenance générée ; L2 = build hébergé + provenance signée ; L3 = build isolé, provenance non falsifiable. Tekton Chains sur OpenShift fournit les briques L2/L3, à condition de durcir l&amp;#39;isolation des builders.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;3. Signature keyless : Sigstore et Red Hat Trusted Artifact Signer&lt;/h3&gt;
&lt;p&gt;Le modèle Sigstore résout le problème historique de gestion des clés de signature (émission, rotation, révocation) :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Fulcio&lt;/strong&gt; émet un certificat x509 éphémère à durée de vie très courte, lié à l&amp;#39;identité OIDC de l&amp;#39;opérateur ou du workload.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rekor&lt;/strong&gt; enregistre chaque signature dans un journal de transparence append-only à arbre de Merkle : la preuve d&amp;#39;existence est publique et vérifiable, la compromission devient détectable.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RHTAS&lt;/strong&gt; est la distribution entreprise supportée par Red Hat de Sigstore (Fulcio, Rekor, Trillian, TUF pour la distribution de la racine de confiance, &lt;code&gt;cosign&lt;/code&gt;, &lt;code&gt;gitsign&lt;/code&gt;, et le binaire &lt;code&gt;ec&lt;/code&gt;). &lt;code&gt;gitsign&lt;/code&gt; permet de signer les commits Git par simple authentification OIDC, sans clé locale.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Vérification en ligne de commande :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cosign verify ghcr.io/org/app@sha256:&amp;lt;digest&amp;gt; \
  --certificate-identity-regexp &amp;#39;^https://github.com/org/.*&amp;#39; \
  --certificate-oidc-issuer https://token.actions.githubusercontent.com
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Application à l&amp;#39;admission :&lt;/strong&gt; le &lt;em&gt;Sigstore Policy Controller&lt;/em&gt; (CRD &lt;code&gt;ClusterImagePolicy&lt;/code&gt;) refuse tout déploiement dont l&amp;#39;image n&amp;#39;est pas signée par une identité approuvée et journalisée dans Rekor. RHACS propose également la vérification de signature Cosign dans son contrôleur d&amp;#39;admission. La conformité n&amp;#39;est plus un rapport, c&amp;#39;est un &lt;code&gt;deny&lt;/code&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;4. SBOM et VEX : Red Hat Trusted Profile Analyzer&lt;/h3&gt;
&lt;p&gt;Un SBOM n&amp;#39;est utile que s&amp;#39;il est exploitable :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Formats :&lt;/strong&gt; SPDX 2.3 et CycloneDX 1.6 couvrent désormais la quasi-totalité des outils de génération ; le contenu doit être attaché à l&amp;#39;image (attestation) plutôt que stocké hors chaîne.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TPA (Trustify)&lt;/strong&gt; centralise les SBOM produits par vos builds &lt;em&gt;et&lt;/em&gt; ceux fournis par les éditeurs, puis les corrèle en continu avec les bases de vulnérabilités et les avis de sécurité (dont ceux de Red Hat).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;VEX (Vulnerability Exploitability eXchange)&lt;/strong&gt; est la pièce manquante : un composant peut être présent dans l&amp;#39;image sans être atteignable (&lt;code&gt;vulnerable_code_not_in_execute_path&lt;/code&gt;) ni même compilé (&lt;code&gt;vulnerable_code_not_present&lt;/code&gt;). Sans VEX, une équipe noie ses développeurs sous des CVE non exploitables ; avec VEX, elle hiérarchise ce qui est réellement dans la surface d&amp;#39;attaque et répond factuellement à &amp;quot;&lt;em&gt;quel est le rayon d&amp;#39;impact&lt;/em&gt; d&amp;#39;une nouvelle CVE ?&amp;quot;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Interrogation par PURL :&lt;/strong&gt; la corrélation par &lt;code&gt;pkg:npm/...&lt;/code&gt;, &lt;code&gt;pkg:maven/log4j-core@2.14.1&lt;/code&gt; permet de lister en quelques secondes toutes les images concernées par une alerte critique, y compris dans les registres distants.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;5. Enterprise Contract (Conforma) : la politique comme porte de release&lt;/h3&gt;
&lt;p&gt;La vérification doit être bloquante et identique partout :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;ec validate image&lt;/code&gt; / &lt;code&gt;ec verify&lt;/code&gt;&lt;/strong&gt; s&amp;#39;exécute dans le pipeline avant toute promotion, et refuse la release si une règle échoue.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Règles typiques :&lt;/strong&gt; signature vérifiée, provenance SLSA d&amp;#39;un niveau minimal, SBOM présent et attaché, absence de CVE de sévérité critique, et liste blanche des Task bundles Tekton autorisés.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Politiques Rego/OPA packagées en bundles OCI :&lt;/strong&gt; versionnées, revues, diffusable de manière incrémentale — du poste de développement (shift-left) jusqu&amp;#39;à l&amp;#39;admission cluster et au registre. Les mêmes règles peuvent être réutilisées par Quay (immuabilité, scan Clair, signature) pour verrouiller le registre.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;6. Chaîne complète de référence&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Commit signé (gitsign, identité OIDC).&lt;/li&gt;
&lt;li&gt;Déclenchement PaC sur webhook Git → &lt;code&gt;PipelineRun&lt;/code&gt; versionné.&lt;/li&gt;
&lt;li&gt;Build d&amp;#39;image (Buildah, rootless) + scan de vulnérabilités.&lt;/li&gt;
&lt;li&gt;Génération SBOM et attestation.&lt;/li&gt;
&lt;li&gt;Tekton Chains → provenance SLSA signée (Fulcio) + entrée Rekor + poussée OCI vers Quay.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ec validate image&lt;/code&gt; : porte de release bloquante.&lt;/li&gt;
&lt;li&gt;Admission ClusterImagePolicy : refus de tout artefact non signé ou non conforme.&lt;/li&gt;
&lt;li&gt;Corrélation SBOM/CVE/VEX continue dans TPA.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h3&gt;7. Compétences &amp;amp; Cursus Aperta Scientia&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cursus AS200 (DevOps Platform Engineer — 399h) :&lt;/strong&gt; construction d&amp;#39;applications conteneurisées et de pipelines CI/CD (module &lt;strong&gt;DO288&lt;/strong&gt;), exploitation et durcissement de plateforme à l&amp;#39;échelle (module &lt;strong&gt;DO380&lt;/strong&gt;), sécurisation des conteneurs et d&amp;#39;OpenShift incluant SCC, RBAC, scan d&amp;#39;images, signature et contrôle d&amp;#39;admission (module &lt;strong&gt;DO430&lt;/strong&gt;). Préparation aux certifications &lt;strong&gt;EX188&lt;/strong&gt;, &lt;strong&gt;EX280&lt;/strong&gt; et &lt;strong&gt;EX288&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cursus AS300 (AI Platform Engineer — 399h) :&lt;/strong&gt; extension de la démarche à la chaîne IA — provenance des images de base embarquant CUDA/PyTorch, signature d&amp;#39;artefacts de modèles avant déploiement d&amp;#39;un &lt;code&gt;InferenceService&lt;/code&gt; KServe ou d&amp;#39;un &lt;code&gt;ServingRuntime&lt;/code&gt; vLLM, et refus à l&amp;#39;admission de modèles non vérifiés issus de registres externes. Un SBOM de stack IA est aussi un inventaire de licences et une carte des dépendances GPU.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;8. Sources &amp;amp; Références Techniques&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Red Hat Developer — &lt;em&gt;Red Hat Trusted Software Supply Chain is now available&lt;/em&gt; :&lt;/strong&gt; &lt;a href=&quot;https://developers.redhat.com/articles/2024/04/18/red-hat-trusted-software-supply-chain-now-available&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;developers.redhat.com/articles/2024/04/18/red-hat-trusted-software-supply-chain-now-available&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Red Hat Developer — Trusted Software Supply Chain :&lt;/strong&gt; &lt;a href=&quot;https://developers.redhat.com/products/trusted-software-supply-chain/overview&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;developers.redhat.com/products/trusted-software-supply-chain/overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Red Hat Developer — Trusted Artifact Signer (RHTAS) :&lt;/strong&gt; &lt;a href=&quot;https://developers.redhat.com/products/trusted-artifact-signer/overview&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;developers.redhat.com/products/trusted-artifact-signer/overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Red Hat Developer — Trusted Profile Analyzer (TPA) :&lt;/strong&gt; &lt;a href=&quot;https://developers.redhat.com/products/trusted-profile-analyzer/overview&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;developers.redhat.com/products/trusted-profile-analyzer/overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tekton Chains — Documentation :&lt;/strong&gt; &lt;a href=&quot;https://tekton.dev/docs/chains/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;tekton.dev/docs/chains&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sigstore — Documentation :&lt;/strong&gt; &lt;a href=&quot;https://docs.sigstore.dev/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;docs.sigstore.dev&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SLSA — Supply-chain Levels for Software Artifacts :&lt;/strong&gt; &lt;a href=&quot;https://slsa.dev/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;slsa.dev&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enterprise Contract / Conforma :&lt;/strong&gt; &lt;a href=&quot;https://enterprisecontract.dev/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;enterprisecontract.dev&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CycloneDX / SPDX :&lt;/strong&gt; &lt;a href=&quot;https://cyclonedx.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;cyclonedx.org&lt;/a&gt; — &lt;a href=&quot;https://spdx.dev/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;spdx.dev&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><media:content url="https://aperta.io/images/technologies/tekton.png" medium="image" type="image/png"/><media:thumbnail url="https://aperta.io/images/technologies/tekton.png"/><webfeeds:featuredImage>https://aperta.io/images/technologies/tekton.png</webfeeds:featuredImage><category>Tech Radar</category><category>Cloud &amp; DevOps</category><category>Security</category><author>Aperta Intelligence Lab</author><enclosure url="https://aperta.io/images/technologies/tekton.png" length="0" type="image/png"/></item><item><title>Kubeflow Pipelines v2 &amp; Data Science Pipelines sur RHOAI : Orchestration Déclarative et Reproductibilité MLOps</title><link>https://aperta.io/fr/radar/2026-09-29-kubeflow-pipelines-v2-rhoai-reproducible-mlops/</link><guid isPermaLink="true">https://aperta.io/fr/radar/2026-09-29-kubeflow-pipelines-v2-rhoai-reproducible-mlops/</guid><description>Découvrez l&apos;orchestration de pipelines MLOps avec Kubeflow Pipelines v2 (KFP) et Data Science Pipelines sur Red Hat OpenShift AI : exécution conteneurisée, tracking d&apos;artefacts S3 et automatisation du cycle de vie des modèles.</description><pubDate>Tue, 29 Sep 2026 08:30:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://aperta.io/images/technologies/kubeflow.png&quot; alt=&quot;Kubeflow Pipelines v2 &amp; Data Science Pipelines sur RHOAI : Orchestration Déclarative et Reproductibilité MLOps&quot; style=&quot;max-width: 100%; height: auto; border-radius: 12px; margin-bottom: 20px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Dans les initiatives d&amp;#39;intelligence artificielle en entreprise, la transition des expérimentations en notebooks Jupyter vers des flux de production automatisés constitue un défi majeur d&amp;#39;ingénierie. Sans chaîne d&amp;#39;orchestration standardisée, les équipes se heurtent rapidement à des problèmes critiques de reproductibilité des entraînements, de traçabilité des jeux de données, de gestion hétérogène des ressources de calcul (CPU/GPU) et de dépendances complexes entre étapes.&lt;/p&gt;
&lt;p&gt;Avec l&amp;#39;intégration native de &lt;strong&gt;Kubeflow Pipelines v2 (KFP)&lt;/strong&gt; au sein de &lt;strong&gt;Data Science Pipelines&lt;/strong&gt; sur &lt;strong&gt;Red Hat OpenShift AI (RHOAI)&lt;/strong&gt;, les ingénieurs de plateformes disposent d&amp;#39;un framework déclaratif d&amp;#39;orchestration MLOps d&amp;#39;entreprise, conçu pour unifier et automatiser l&amp;#39;intégralité du cycle de vie des modèles.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;1. Architecture Déclarative &amp;amp; Data Science Pipelines Operator&lt;/h3&gt;
&lt;p&gt;Sous OpenShift AI, l&amp;#39;orchestration repose sur le &lt;strong&gt;Data Science Pipelines Operator (DSPO)&lt;/strong&gt;, qui déploie et administre l&amp;#39;infrastructure de pipelines par namespace projet :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Spécification Python KFP v2 :&lt;/strong&gt; Les pipelines sont définis sous forme de code Python via le SDK &lt;code&gt;kfp&lt;/code&gt; v2, puis compilés en spécifications déclaratives YAML (Intermediary Representation - IR) standardisées et auditables.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Exécution Conteneurisée Modulaire :&lt;/strong&gt; Chaque étape (&lt;em&gt;component&lt;/em&gt;) du workflow s&amp;#39;exécute dans son propre conteneur Pod OpenShift isolé, garantissant un cloisonnement strict des dépendances logicielles (CUDA, PyTorch, scikit-learn, bibliothèques de transformation de données).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Isolation et Multi-Tenancy :&lt;/strong&gt; Chaque projet Data Science dispose de son propre serveur de pipelines dédié, isolant les secrets, les configurations d&amp;#39;accès au stockage et les ressources de calcul sans risque de collision entre équipes.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;2. Gestion des Artefacts, Stockage S3 &amp;amp; Traçabilité (Lineage)&lt;/h3&gt;
&lt;p&gt;Un pipeline d&amp;#39;apprentissage robuste nécessite un suivi immuable des flux de données et des modèles produits :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Stockage d&amp;#39;Artefacts Object Storage (S3 / ODF) :&lt;/strong&gt; Les Data Science Pipelines s&amp;#39;interfacent directement avec des buckets S3 compatibles (fournis par &lt;strong&gt;OpenShift Data Foundation / Ceph RGW&lt;/strong&gt; ou MinIO) pour stocker les datasets versionnés, checkpoints de modèles et métriques d&amp;#39;évaluation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lineage &amp;amp; Metadata Tracking :&lt;/strong&gt; Chaque exécution (&lt;em&gt;run&lt;/em&gt;) enregistre automatiquement les métadonnées d&amp;#39;entrée et de sortie (hyperparamètres, courbes d&amp;#39;apprentissage, artefacts de validation). Cette traçabilité complète répond aux exigences de gouvernance et d&amp;#39;auditabilité réglementaire (comme l&amp;#39;EU AI Act).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mécanisme de Caching Intelligent :&lt;/strong&gt; KFP v2 analyse les empreintes cryptographiques des inputs et composants. Si une étape précédente a déjà été exécutée avec les mêmes paramètres et données d&amp;#39;entrée, son résultat en cache est instantanément réutilisé (&lt;code&gt;enable_caching=True&lt;/code&gt;), divisant par dix le temps d&amp;#39;exécution et les coûts GPU des pipelines itératifs.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;3. Allocation Granulaire des Ressources &amp;amp; Orchestration GPU&lt;/h3&gt;
&lt;p&gt;L&amp;#39;exécution de pipelines d&amp;#39;IA exige un dimensionnement précis des nœuds de calcul :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Requêtes et Limites GPU / CPU Déclaratives :&lt;/strong&gt; Chaque composant peut solliciter dynamiquement des ressources accélérées via l&amp;#39;API Kubernetes (&lt;code&gt;kubernetes.add_resource_limit(task, &amp;#39;nvidia.com/gpu&amp;#39;, &amp;#39;1&amp;#39;)&lt;/code&gt;) ou cibler des nœuds spécifiques via des &lt;em&gt;node selectors&lt;/em&gt; et des &lt;em&gt;tolerations&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contrôle de Flux Avancé :&lt;/strong&gt; Support natif des boucles parallèles (&lt;code&gt;dsl.ParallelFor&lt;/code&gt;), des conditions logiques (&lt;code&gt;dsl.Condition&lt;/code&gt;) et des gestionnaires d&amp;#39;exception (&lt;em&gt;Exit Handlers&lt;/em&gt;) pour nettoyer les ressources temporaires ou envoyer des alertes webhook en cas de défaillance d&amp;#39;un run.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;4. Continuité MLOps : Du Pipeline au Serving KServe / vLLM&lt;/h3&gt;
&lt;p&gt;La valeur d&amp;#39;un pipeline réside dans sa capacité à boucler la chaîne de valeur jusqu&amp;#39;au déploiement :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Enregistrement dans le Model Registry :&lt;/strong&gt; À l&amp;#39;issue de l&amp;#39;entraînement et de la validation des seuils de performance, le pipeline enregistre automatiquement la nouvelle version du modèle dans le registre d&amp;#39;entreprise RHOAI.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mise à Jour Automatisée de l&amp;#39;InferenceService :&lt;/strong&gt; Le composant final déclenche ou met à jour de façon déclarative l&amp;#39;InferenceService &lt;strong&gt;KServe&lt;/strong&gt; ou le moteur &lt;strong&gt;vLLM&lt;/strong&gt;, assurant un déploiement continu et sans interruption de service vers la production.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Synergie GitOps &amp;amp; CI/CD :&lt;/strong&gt; Les définitions de pipelines peuvent être intégrées dans des dépôts Git audités et déclenchées par des webhooks Tekton / OpenShift Pipelines lors de la mise à jour des datasets ou du code applicatif.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;5. Compétences &amp;amp; Cursus Aperta Scientia&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cursus AS300 (AI Platform Engineer — 399h) :&lt;/strong&gt; Conception de pipelines MLOps de bout en bout avec Kubeflow Pipelines v2 et Data Science Pipelines sur RHOAI, orchestration de jobs d&amp;#39;entraînement GPU distribués, tracking de métadonnées et automatisation du serving KServe/vLLM (module &lt;strong&gt;AI267&lt;/strong&gt; Red Hat OpenShift AI and MLOps).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cursus AS200 (DevOps Platform Engineer — 399h) :&lt;/strong&gt; Administration de l&amp;#39;infrastructure sous-jacente, configuration des StorageClasses ODF (Ceph S3/RBD), sécurisation RBAC des projets et intégration continue via OpenShift Pipelines et GitOps (modules &lt;strong&gt;DO280&lt;/strong&gt; et &lt;strong&gt;DO380&lt;/strong&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;6. Sources &amp;amp; Références Techniques&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Red Hat OpenShift AI Documentation :&lt;/strong&gt; &lt;a href=&quot;https://docs.redhat.com/en/documentation/red_hat_openshift_ai_self-managed/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;Red Hat Product Documentation - Working with Data Science Pipelines&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kubeflow Pipelines Project :&lt;/strong&gt; &lt;a href=&quot;https://www.kubeflow.org/docs/components/pipelines/v2/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;Kubeflow Pipelines v2 SDK &amp; Architecture Guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CNCF Cloud Native AI Working Group :&lt;/strong&gt; &lt;a href=&quot;https://github.com/cncf/tag-runtime&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;CNCF AI/ML Whitepaper &amp; Reference Architectures&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><media:content url="https://aperta.io/images/technologies/kubeflow.png" medium="image" type="image/png"/><media:thumbnail url="https://aperta.io/images/technologies/kubeflow.png"/><webfeeds:featuredImage>https://aperta.io/images/technologies/kubeflow.png</webfeeds:featuredImage><category>Tech Radar</category><category>AI &amp; Machine Learning</category><category>Cloud &amp; DevOps</category><author>Aperta Intelligence Lab</author><enclosure url="https://aperta.io/images/technologies/kubeflow.png" length="0" type="image/png"/></item><item><title>RHACM Governance as Code : Déploiement Déclaratif de Politiques Zero-Trust et Remédiation Multi-Cluster</title><link>https://aperta.io/fr/radar/2026-09-28-rhacm-governance-as-code-zero-trust-multicluster/</link><guid isPermaLink="true">https://aperta.io/fr/radar/2026-09-28-rhacm-governance-as-code-zero-trust-multicluster/</guid><description>Découvrez le Policy Framework de Red Hat Advanced Cluster Management (RHACM) : gouvernance déclarative, audit de conformité continu et auto-guérison Zero-Trust sur flottes Kubernetes hétérogènes.</description><pubDate>Mon, 28 Sep 2026 08:30:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://aperta.io/images/technologies/acm.png&quot; alt=&quot;RHACM Governance as Code : Déploiement Déclaratif de Politiques Zero-Trust et Remédiation Multi-Cluster&quot; style=&quot;max-width: 100%; height: auto; border-radius: 12px; margin-bottom: 20px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Dans les architectures d&amp;#39;entreprise modernes, l&amp;#39;adoption massive de Kubernetes et d&amp;#39;OpenShift entraîne une prolifération des clusters répartis sur le baremetal, le multicloud et l&amp;#39;Edge. Garantir une posture de sécurité homogène, appliquer les standards de conformité (CIS Benchmarks, NIST, HIPAA) et prévenir la dérive de configuration (&lt;em&gt;configuration drift&lt;/em&gt;) sur des dizaines ou centaines de clusters devient impossible via des interventions manuelles.&lt;/p&gt;
&lt;p&gt;Avec le &lt;strong&gt;Policy Framework&lt;/strong&gt; de &lt;strong&gt;Red Hat Advanced Cluster Management for Kubernetes (RHACM)&lt;/strong&gt; (issu du projet open source upstream &lt;strong&gt;Open Cluster Management&lt;/strong&gt;), la gouvernance d&amp;#39;infrastructure franchit un cap décisif grâce au paradigme &lt;strong&gt;Governance as Code&lt;/strong&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;1. Architecture déclarative du Policy Framework&lt;/h3&gt;
&lt;p&gt;Le modèle de gouvernance de RHACM repose sur des Custom Resource Definitions (CRDs) modulaires et découplées :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CRD &lt;code&gt;Policy&lt;/code&gt; &amp;amp; &lt;code&gt;PolicySet&lt;/code&gt; :&lt;/strong&gt; Définition déclarative des règles de conformité techniques regroupées en jeux de politiques fonctionnels (sécurité du kernel, chiffrement, RBAC, quotas).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Placement &amp;amp; PlacementBinding :&lt;/strong&gt; Ciblage dynamique des flottes de clusters managés via des sélecteurs de labels d&amp;#39;infrastructure (&lt;code&gt;environment=production&lt;/code&gt;, &lt;code&gt;region=emea&lt;/code&gt;, &lt;code&gt;compliance=pci-dss&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Propagation Hub-to-Spoke sécurisée :&lt;/strong&gt; Le Hub RHACM distribue les définitions de politiques vers les contrôleurs locaux des clusters managés (&lt;em&gt;ManagedCluster&lt;/em&gt;), garantissant une exécution décentralisée et résiliente même en cas de coupure réseau temporaire avec le control plane central.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;2. Configuration Policy Controller &amp;amp; Auto-Guérison&lt;/h3&gt;
&lt;p&gt;Le moteur de politiques évalue en temps réel l&amp;#39;état du cluster managé selon des opérateurs précis (&lt;code&gt;musthave&lt;/code&gt;, &lt;code&gt;mustnothave&lt;/code&gt;, &lt;code&gt;mustonlyhave&lt;/code&gt;) avec deux modes d&amp;#39;action :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Mode &lt;code&gt;remediationAction: inform&lt;/code&gt; (Audit &amp;amp; Observabilité) :&lt;/strong&gt; Détecte et signale instantanément toute non-conformité dans la console centrale et via les métriques Prometheus sans modifier l&amp;#39;état existant (idéal pour les phases d&amp;#39;évaluation ou d&amp;#39;audit).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mode &lt;code&gt;remediationAction: enforce&lt;/code&gt; (Auto-Guérison Proactive) :&lt;/strong&gt; Corrige immédiatement toute dérive en recréant ou patchant automatiquement la ressource non conforme pour la forcer vers l&amp;#39;état cible désiré, interdisant de fait les altérations manuelles non autorisées.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;3. Cas d&amp;#39;Usage Zero-Trust &amp;amp; Durcissement Opérationnel&lt;/h3&gt;
&lt;p&gt;Le Policy Framework de RHACM permet d&amp;#39;industrialiser les contrôles de sécurité les plus critiques :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Chiffrement de la base etcd :&lt;/strong&gt; Application automatique du chiffrement des secrets au repos sur l&amp;#39;ensemble de la flotte via l&amp;#39;opérateur OpenShift API Server.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sécurisation des Pods et SCC :&lt;/strong&gt; Enforcement strict des &lt;em&gt;Security Context Constraints&lt;/em&gt; (SCC) et des &lt;em&gt;Pod Security Standards&lt;/em&gt; (PSS) pour bannir les conteneurs privilégiés et l&amp;#39;escalade de privilèges (&lt;code&gt;allowPrivilegeEscalation: false&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Distribution et rotation de certificats / Secrets :&lt;/strong&gt; Déploiement sécurisé de certificats d&amp;#39;autorité (CA racines d&amp;#39;entreprise), d&amp;#39;identités SPIFFE/SPIRE ou de configurations RBAC transverses sans exposer de credentials en clair.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Interopérabilité ouverte :&lt;/strong&gt; Intégration native avec les contrôleurs tiers tels que &lt;strong&gt;Gatekeeper OPA&lt;/strong&gt; et &lt;strong&gt;Kyverno&lt;/strong&gt; pour l&amp;#39;évaluation de règles de validation complexes.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;4. Convergence GitOps &amp;amp; Gouvernance Industrielle&lt;/h3&gt;
&lt;p&gt;En associant RHACM à &lt;strong&gt;OpenShift GitOps (ArgoCD)&lt;/strong&gt;, l&amp;#39;intégralité des politiques de sécurité devient versionnée dans des dépôts Git audités :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Pipelines de validation CI/CD :&lt;/strong&gt; Chaque modification de politique passe par une revue de code (Pull Request), des tests automatisés et une traçabilité cryptographique conforme aux exigences de conformité réglementaires.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Single Source of Truth :&lt;/strong&gt; L&amp;#39;état désiré de sécurité de l&amp;#39;ensemble du parc informatique est consigné de façon déclarative, garantissant une reproductibilité totale des environnements.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;5. Compétences &amp;amp; Cursus Aperta Scientia&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cursus AS200 (DevOps Platform Engineer — 399h) :&lt;/strong&gt; Maîtrise avancée de la gouvernance multi-cluster avec RHACM, déploiement déclaratif de politiques Zero-Trust et administration avancée de flottes Kubernetes (modules &lt;strong&gt;DO432&lt;/strong&gt; Multicluster Management with RHACM et &lt;strong&gt;DO380&lt;/strong&gt; Enterprise Kubernetes Operations).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cursus AS300 (AI Platform Engineer — 399h) :&lt;/strong&gt; Standardisation des configurations matérielles GPU, quotas et isolation réseau sur les clusters dédiés à l&amp;#39;entraînement et à l&amp;#39;inférence distribuée.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;6. Sources &amp;amp; Références Techniques&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Red Hat Advanced Cluster Management Documentation :&lt;/strong&gt; &lt;a href=&quot;https://docs.redhat.com/en/documentation/red_hat_advanced_cluster_management_for_kubernetes/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;Red Hat Product Documentation - RHACM Governance&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Open Cluster Management Project :&lt;/strong&gt; &lt;a href=&quot;https://open-cluster-management.io/concepts/policy/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;Open Cluster Management Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CNCF Policy Working Group :&lt;/strong&gt; &lt;a href=&quot;https://kubernetes.io/docs/concepts/security/pod-security-standards/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;CNCF Policy Working Group &amp; Governance&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><media:content url="https://aperta.io/images/technologies/acm.png" medium="image" type="image/png"/><media:thumbnail url="https://aperta.io/images/technologies/acm.png"/><webfeeds:featuredImage>https://aperta.io/images/technologies/acm.png</webfeeds:featuredImage><category>Tech Radar</category><category>Cloud &amp; DevOps</category><category>Security</category><author>Aperta Intelligence Lab</author><enclosure url="https://aperta.io/images/technologies/acm.png" length="0" type="image/png"/></item><item><title>Tech Radar &amp; Veille Hebdo : Istio Ambient Mode, vLLM Multi-LoRA, EDA 2.4, KubeVirt vGPU &amp; TrustyAI</title><link>https://aperta.io/fr/radar/2026-09-25-tech-radar-ambient-mesh-vllm-eda-kubevirt-trustyai/</link><guid isPermaLink="true">https://aperta.io/fr/radar/2026-09-25-tech-radar-ambient-mesh-vllm-eda-kubevirt-trustyai/</guid><description>Synthèse hebdomadaire de la veille technologique Aperta : architecture Service Mesh sans sidecar, serving Multi-LoRA haute densité, remédiation fermée Ansible, migration à chaud vGPU et gouvernance LLM TrustyAI.</description><pubDate>Fri, 25 Sep 2026 15:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://aperta.io/images/technologies/openshift.png&quot; alt=&quot;Tech Radar &amp; Veille Hebdo : Istio Ambient Mode, vLLM Multi-LoRA, EDA 2.4, KubeVirt vGPU &amp; TrustyAI&quot; style=&quot;max-width: 100%; height: auto; border-radius: 12px; margin-bottom: 20px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Retrouvez les faits marquants de la veille technologique menée par le laboratoire d&amp;#39;intelligence d&amp;#39;Aperta Scientia pour les cursus &lt;strong&gt;AS200 (DevOps Platform Engineer)&lt;/strong&gt; et &lt;strong&gt;AS300 (AI Platform Engineer)&lt;/strong&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;1. OpenShift Service Mesh 3 &amp;amp; Istio Ambient Mode — Architecture Sans Sidecar&lt;/h3&gt;
&lt;p&gt;Généralisation de l&amp;#39;architecture sans sidecar (Ambient Mode) au sein de Red Hat OpenShift Service Mesh 3.0 (Istio).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Points clés :&lt;/strong&gt; Séparation stricte entre la couche de transport sécurisée L4 (&lt;code&gt;ztunnel&lt;/code&gt; en DaemonSet par nœud pour mTLS automatique sans proxy applicatif) et la couche de routage applicatif L7 (&lt;code&gt;waypoint&lt;/code&gt; proxy dédié par namespace). Réduction de plus de 80% de l&amp;#39;empreinte mémoire/CPU globale et suppression totale des interruptions de services lors des montées de version du maillage.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Impact Cursus AS200 :&lt;/strong&gt; Module &lt;em&gt;Réseau Cloud-Native, Sécurité Zero Trust &amp;amp; Service Mesh (DO328 / DO380)&lt;/em&gt; pour former aux topologies réseau avancées et à l&amp;#39;isolation cryptographique inter-services.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;2. vLLM Multi-LoRA Serving &amp;amp; Dynamic Adapter Swapping — Haute Densité GPU&lt;/h3&gt;
&lt;p&gt;Évolution majeure de vLLM avec le support natif du Multi-LoRA Serving sous Kubernetes et Red Hat OpenShift AI (RHOAI).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Points clés :&lt;/strong&gt; Capacité de servir simultanément des dizaines d&amp;#39;adaptateurs LoRA métier (légal, finance, code) greffés dynamiquement sur un même modèle de fondation sans dupliquer les poids en VRAM. Batching unifié des requêtes cross-LoRA via des kernels CUDA optimisés (Punica / S-LoRA).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Impact Cursus AS300 :&lt;/strong&gt; Module &lt;em&gt;Serving LLM &amp;amp; Inférence Distribuée (AI267)&lt;/em&gt; pour maximiser le retour sur investissement des clusters GPU.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;3. Event-Driven Ansible (EDA) 2.4 &amp;amp; Alertmanager — Remédiation Autonome&lt;/h3&gt;
&lt;p&gt;Ansible Automation Platform (AAP) 2.4 / EDA avec connecteurs d&amp;#39;événements natifs pour Prometheus Alertmanager et Kubernetes Events.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Points clés :&lt;/strong&gt; Exécution de Rulebooks réactifs pour automatiser la remédiation en boucle fermée : drainage préventif de nœuds en dérive matérielle, rotation automatisée de certificats TLS et purge de volumes saturés sans intervention humaine.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Impact Cursus AS200 :&lt;/strong&gt; Module &lt;em&gt;Automatisation Avancée, Observabilité Active &amp;amp; Event-Driven Automation (DO374 / DO380)&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;4. KubeVirt v1.3 &amp;amp; Live Migration vGPU / HugePages — Convergence VM &amp;amp; IA&lt;/h3&gt;
&lt;p&gt;Nouvelles fonctionnalités de KubeVirt 1.3 et OpenShift Virtualization pour la prise en charge des GPU virtualisés (vGPU) avec migration à chaud (Live Migration).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Points clés :&lt;/strong&gt; Suspension/reprise de contexte mémoire sans interruption et allocation dynamique de 1Gi HugePages pour unifier la gestion des machines virtuelles d&amp;#39;ingestion analytique et des pods d&amp;#39;inférence sur le même socle baremetal.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Impact Cursus AS200 :&lt;/strong&gt; Module &lt;em&gt;OpenShift Virtualization, Gestion Mémoire Avancée &amp;amp; Hybridation (DO316 / DO380)&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;5. TrustyAI &amp;amp; LLM Guardrails sur RHOAI — Gouvernance &amp;amp; Conformité EU AI Act&lt;/h3&gt;
&lt;p&gt;Intégration de TrustyAI avec les frameworks de guardrails (NeMo Guardrails, Llama Guard) en sidecars sur les ServingRuntimes KServe / OpenShift AI.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Points clés :&lt;/strong&gt; Évaluation continue de l&amp;#39;équité des modèles (métriques SPD, Disparate Impact Ratio), détection du drift de données contextuelles, blocage des jailbreaks et masquage des données sensibles (PII).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Impact Cursus AS300 :&lt;/strong&gt; Module &lt;em&gt;Gouvernance IA, Sécurité des Systèmes Génératifs &amp;amp; MLOps Éthique (AI267)&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;6. Sources &amp;amp; Références Techniques&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Istio Ambient Mode :&lt;/strong&gt; &lt;a href=&quot;https://istio.io/latest/docs/ambient/overview/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;Istio Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;vLLM Multi-LoRA Serving :&lt;/strong&gt; &lt;a href=&quot;https://docs.vllm.ai/en/latest/features/lora.html&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;vLLM Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Event-Driven Ansible :&lt;/strong&gt; &lt;a href=&quot;https://ansible.readthedocs.io/projects/rulebook-cli/en/latest/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;Ansible Rulebook CLI Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;KubeVirt User Guide :&lt;/strong&gt; &lt;a href=&quot;https://kubevirt.io/user-guide/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;KubeVirt Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TrustyAI Explainability :&lt;/strong&gt; &lt;a href=&quot;https://trustyai.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;TrustyAI Project&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><media:content url="https://aperta.io/images/technologies/openshift.png" medium="image" type="image/png"/><media:thumbnail url="https://aperta.io/images/technologies/openshift.png"/><webfeeds:featuredImage>https://aperta.io/images/technologies/openshift.png</webfeeds:featuredImage><category>Tech Radar</category><category>Cloud &amp; DevOps</category><category>AI Infrastructure</category><author>Aperta Intelligence Lab</author><enclosure url="https://aperta.io/images/technologies/openshift.png" length="0" type="image/png"/></item><item><title>OpenShift Service Mesh 3 &amp; Istio Ambient Mode : Architecture Sidecarless, ztunnel L4 et Waypoint Proxies L7</title><link>https://aperta.io/fr/radar/2026-09-25-openshift-service-mesh-3-istio-ambient-mode-sidecarless/</link><guid isPermaLink="true">https://aperta.io/fr/radar/2026-09-25-openshift-service-mesh-3-istio-ambient-mode-sidecarless/</guid><description>Découvrez l&apos;architecture sans sidecar d&apos;OpenShift Service Mesh 3 : chiffrement mTLS L4 transparent via ztunnel Rust, proxies Waypoint L7 à la demande et réduction drastique de l&apos;overhead mémoire.</description><pubDate>Fri, 25 Sep 2026 08:30:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://aperta.io/images/technologies/openshift.png&quot; alt=&quot;OpenShift Service Mesh 3 &amp; Istio Ambient Mode : Architecture Sidecarless, ztunnel L4 et Waypoint Proxies L7&quot; style=&quot;max-width: 100%; height: auto; border-radius: 12px; margin-bottom: 20px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;L&amp;#39;adoption historique des maillages de services (&lt;em&gt;service meshes&lt;/em&gt;) s&amp;#39;est longtemps heurtée à une contrainte opérationnelle majeure : l&amp;#39;injection systématique d&amp;#39;un conteneur sidecar Envoy dans chaque Pod applicatif. Cette approche traditionnelle générait une surconsommation de mémoire VRAM/RAM, des complexités de cycle de vie (séquencement d&amp;#39;initialisation, terminaison des jobs éphémères) et imposait un redémarrage complet de tous les pods lors des montées de version du mesh.&lt;/p&gt;
&lt;p&gt;Avec &lt;strong&gt;OpenShift Service Mesh 3&lt;/strong&gt; (fondé sur &lt;strong&gt;Istio Ambient Mode&lt;/strong&gt;), l&amp;#39;architecture réseau franchit un cap décisif grâce au paradigme &lt;em&gt;sidecarless&lt;/em&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;1. Séparation des couches et mTLS transparent via ztunnel (L4)&lt;/h3&gt;
&lt;p&gt;Le modèle Ambient découple strictement le transport sécurisé L4 des fonctionnalités applicatives L7 :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;DaemonSet ztunnel ultra-léger :&lt;/strong&gt; Déployé par nœud et écrit en Rust, le &lt;em&gt;Zero Trust Tunnel&lt;/em&gt; (&lt;code&gt;ztunnel&lt;/code&gt;) intercepte le trafic local au niveau du sous-système réseau du noyau Linux sans modifier les manifestes applicatifs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Protocole HBONE (HTTP-Based Overlay Network) :&lt;/strong&gt; Le chiffrement mutuel mTLS et l&amp;#39;authentification cryptographique SPIFFE/SPIRE sont établis nativement et de manière transparente entre nœuds via des tunnels encapsulés L4 (port 15008).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Zéro redémarrage applicatif :&lt;/strong&gt; L&amp;#39;activation du chiffrement Zero-Trust sur un namespace s&amp;#39;effectue par simple étiquetage (&lt;code&gt;istio.io/dataplane-mode=ambient&lt;/code&gt;), sans aucune interruption des charges de travail en production.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;2. Proxies Waypoint déclaratifs à la demande (L7)&lt;/h3&gt;
&lt;p&gt;Le traitement applicatif avancé de couche 7 n&amp;#39;est plus imposé partout :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Isolation ciblée :&lt;/strong&gt; Les proxies Envoy L7 (nommés &lt;em&gt;Waypoint&lt;/em&gt;) ne sont instanciés que pour les services nécessitant des règles avancées : routage fin, injection de fautes, analyse HTTP/gRPC, rate limiting ou politiques d&amp;#39;autorisation RBAC granulaires.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Périmètre personnalisable :&lt;/strong&gt; Un proxy Waypoint peut être partagé à l&amp;#39;échelle d&amp;#39;un namespace ou dédié à un &lt;code&gt;ServiceAccount&lt;/code&gt; spécifique, simplifiant la maintenance et la gestion des accès sans compromettre la sécurité.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;3. Réduction drastique de l&amp;#39;empreinte &amp;amp; compatibilité IA / MLOps&lt;/h3&gt;
&lt;p&gt;L&amp;#39;architecture sans sidecar élimine les frictions majeures sur les clusters hybrides :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Économie de ressources massive :&lt;/strong&gt; Suppression de l&amp;#39;allocation mémoire fixe de 50 à 100 Mo par Pod, libérant des dizaines de gigaoctets sur les clusters à forte densité de microservices.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fluidité pour les pipelines IA &amp;amp; Jobs MLOps :&lt;/strong&gt; Les tâches éphémères (Kubeflow Pipelines, Ray Jobs, workers PyTorch) et les gros ServingRuntimes (vLLM, KServe) ne souffrent plus de blocages à la fermeture liés à l&amp;#39;attente du conteneur sidecar.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;4. Compétences &amp;amp; Cursus Aperta Scientia&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cursus AS200 (DevOps Platform Engineer — 399h) :&lt;/strong&gt; Maîtrise des architectures réseau Cloud-Native, sécurité Zero-Trust avec OpenShift Service Mesh 3 et intégration GitOps (modules &lt;strong&gt;DO380&lt;/strong&gt; et &lt;strong&gt;DO280&lt;/strong&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cursus AS300 (AI Platform Engineer — 399h) :&lt;/strong&gt; Sécurisation et observabilité des flux d&amp;#39;inférence distribuée multi-modèles sans dégradation de la latence réseau.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;5. Sources &amp;amp; Références Techniques&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Istio Ambient Mode Architecture :&lt;/strong&gt; &lt;a href=&quot;https://istio.io/latest/docs/ambient/overview/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;Istio Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Red Hat OpenShift Service Mesh Documentation :&lt;/strong&gt; &lt;a href=&quot;https://docs.openshift.com/container-platform/latest/service_mesh/v2x/ossm-about.html&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;Red Hat Service Mesh Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CNCF Istio Project :&lt;/strong&gt; &lt;a href=&quot;https://www.cncf.io/projects/istio/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;Cloud Native Computing Foundation - Istio&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><media:content url="https://aperta.io/images/technologies/openshift.png" medium="image" type="image/png"/><media:thumbnail url="https://aperta.io/images/technologies/openshift.png"/><webfeeds:featuredImage>https://aperta.io/images/technologies/openshift.png</webfeeds:featuredImage><category>Tech Radar</category><category>Cloud &amp; DevOps</category><category>Security</category><author>Aperta Intelligence Lab</author><enclosure url="https://aperta.io/images/technologies/openshift.png" length="0" type="image/png"/></item><item><title>OpenShift Virtualization &amp; KubeVirt : Live Migration vGPU et 1Gi HugePages sur Baremetal</title><link>https://aperta.io/fr/radar/2026-09-24-kubevirt-openshift-virtualization-live-migration-vgpu-hugepages/</link><guid isPermaLink="true">https://aperta.io/fr/radar/2026-09-24-kubevirt-openshift-virtualization-live-migration-vgpu-hugepages/</guid><description>Comment KubeVirt et OpenShift Virtualization unifient machines virtuelles et conteneurs : Live Migration vGPU sans coupure et allocation 1Gi HugePages.</description><pubDate>Thu, 24 Sep 2026 08:30:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://aperta.io/images/technologies/kubevirt.png&quot; alt=&quot;OpenShift Virtualization &amp; KubeVirt : Live Migration vGPU et 1Gi HugePages sur Baremetal&quot; style=&quot;max-width: 100%; height: auto; border-radius: 12px; margin-bottom: 20px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Face aux coûts croissants des hyperviseurs propriétaires et aux impératifs de modernisation applicative, les directions techniques font face à un dilemme récurrent : réécrire intégralement les architectures patrimoniales en conteneurs ou conserver deux infrastructures distinctes et silotées.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;OpenShift Virtualization&lt;/strong&gt; (fondé sur le projet open source amont &lt;strong&gt;KubeVirt&lt;/strong&gt;) résout ce compromis en intégrant les machines virtuelles comme des citoyens de premier ordre au sein du plan de contrôle Kubernetes.&lt;/p&gt;
&lt;p&gt;Sur le plan de l&amp;#39;ingénierie système, les avancées récentes transforment l&amp;#39;exploitation en production baremetal.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;1. Live Migration &amp;amp; Persistance d&amp;#39;état vGPU&lt;/h3&gt;
&lt;p&gt;La migration à chaud ne se limite plus aux charges CPU classiques :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Orchestration avec le GPU Operator et KubeVirt :&lt;/strong&gt; Déplacement dynamique de VMs exploitant des profils vGPU NVIDIA (vCS/vApps) entre nœuds baremetal lors des opérations de maintenance (&lt;code&gt;oc adm node drain&lt;/code&gt;), sans interruption de service ni perte de contexte mémoire.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Continuité des sessions :&lt;/strong&gt; Maintien transparent des charges de travail d&amp;#39;inférence et d&amp;#39;analyse hébergées sous VM lors des mises à jour logicielles de l&amp;#39;infrastructure sous-jacente.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;2. Performance mémoire brute avec 1Gi HugePages&lt;/h3&gt;
&lt;p&gt;Pour les bases de données transactionnelles lourdes (Oracle, PostgreSQL, SAP) et les moteurs d&amp;#39;inférence sous VM :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Élimination de l&amp;#39;overhead de pagination :&lt;/strong&gt; L&amp;#39;allocation statique de HugePages (2Mi et 1Gi) supprime les défauts de cache de traduction de pages (&lt;em&gt;TLB misses&lt;/em&gt;) du noyau Linux.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Performances équivalentes au baremetal :&lt;/strong&gt; Débit mémoire et latence d&amp;#39;accès direct comparables aux serveurs physiques dédiés.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;3. Stockage Ceph RBD &amp;amp; Réseau OVN-Kubernetes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Containerized Data Importer (CDI) &amp;amp; CSI ODF :&lt;/strong&gt; Les snapshots et clones de disques virtuels s&amp;#39;exécutent en quelques secondes via &lt;code&gt;ReadWriteMany&lt;/code&gt; (RWX) sur stockage Ceph RBD.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Réseau d&amp;#39;entreprise avancé :&lt;/strong&gt; Multus CNI et SR-IOV fournissent un rattachement direct aux VLANs existants sans friction d&amp;#39;architecture réseau.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;4. Compétences &amp;amp; Cursus Aperta Scientia&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cursus AS200 (DevOps Platform Engineer — 399h) :&lt;/strong&gt; Déploiement et administration avancée d&amp;#39;OpenShift Virtualization (modules &lt;strong&gt;DO316&lt;/strong&gt; et &lt;strong&gt;DO380&lt;/strong&gt;), orchestration GitOps de VMs et préparation à la certification officielle &lt;strong&gt;Red Hat Certified Specialist in OpenShift Virtualization (EX316)&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;5. Sources &amp;amp; Références Techniques&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;OpenShift Virtualization Documentation :&lt;/strong&gt; &lt;a href=&quot;https://docs.openshift.com/container-platform/latest/virt/about-virt.html&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;Red Hat OpenShift Virtualization Guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;KubeVirt Project Official Documentation :&lt;/strong&gt; &lt;a href=&quot;https://kubevirt.io/user-guide/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;KubeVirt Docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;NVIDIA vGPU with KubeVirt :&lt;/strong&gt; &lt;a href=&quot;https://docs.nvidia.com/datacenter/cloud-native/openshift/latest/openshift-virtualization.html&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;NVIDIA Cloud-Native Virtualization&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><media:content url="https://aperta.io/images/technologies/kubevirt.png" medium="image" type="image/png"/><media:thumbnail url="https://aperta.io/images/technologies/kubevirt.png"/><webfeeds:featuredImage>https://aperta.io/images/technologies/kubevirt.png</webfeeds:featuredImage><category>Tech Radar</category><category>Cloud &amp; DevOps</category><category>Virtualization</category><author>Aperta Intelligence Lab</author><enclosure url="https://aperta.io/images/technologies/kubevirt.png" length="0" type="image/png"/></item><item><title>Milvus Distribué &amp; OpenShift Data Foundation : Architecture Stockage Haute Performance pour le RAG Entreprise</title><link>https://aperta.io/fr/radar/2026-09-18-distributed-milvus-openshift-data-foundation-rag-storage/</link><guid isPermaLink="true">https://aperta.io/fr/radar/2026-09-18-distributed-milvus-openshift-data-foundation-rag-storage/</guid><description>Comment adosser une base vectorielle Milvus 2.4+ distribuée à Rook-Ceph et ODF sous OpenShift pour des requêtes sémantiques sous les 5 ms sur 10M+ de vecteurs.</description><pubDate>Fri, 18 Sep 2026 08:30:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://aperta.io/images/technologies/milvus.png&quot; alt=&quot;Milvus Distribué &amp; OpenShift Data Foundation : Architecture Stockage Haute Performance pour le RAG Entreprise&quot; style=&quot;max-width: 100%; height: auto; border-radius: 12px; margin-bottom: 20px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Dans les architectures RAG (Retrieval-Augmented Generation) d&amp;#39;entreprise, la scalabilité du pipeline s&amp;#39;arrête souvent là où le stockage vectoriel commence. Faire passer une base de connaissances métier de quelques milliers de documents à plus de 10 millions de vecteurs d&amp;#39;embeddings met sous tension critique la couche de persistance sous-jacente.&lt;/p&gt;
&lt;p&gt;L&amp;#39;association d&amp;#39;une base vectorielle distribuée comme &lt;strong&gt;Milvus 2.4+&lt;/strong&gt; et d&amp;#39;&lt;strong&gt;OpenShift Data Foundation (ODF / Rook-Ceph)&lt;/strong&gt; offre une architecture découplée, souveraine et hautement disponible, capable de garantir des temps de réponse sémantique sub-5ms en environnement bare-metal.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;1. Les limites des bases vectorielles monolithiques en production&lt;/h3&gt;
&lt;p&gt;Dans un déploiement RAG non découplé (base vectorielle standalone sur volume local) :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Goulot d&amp;#39;étranglement compute / storage :&lt;/strong&gt; Les nœuds de requêtes (&lt;em&gt;QueryNodes&lt;/em&gt;) et les nœuds d&amp;#39;ingestion (&lt;em&gt;DataNodes&lt;/em&gt;) se disputent les mêmes I/O disques et la même mémoire vive.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Absence de scalabilité élastique :&lt;/strong&gt; Impossible d&amp;#39;augmenter le débit de lecture sémantique indépendamment de la capacité de stockage brute des index HNSW/IVF-PQ.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Vulnérabilité aux pannes nœud :&lt;/strong&gt; La corruption ou la perte d&amp;#39;un nœud worker entraîne l&amp;#39;indisponibilité totale de l&amp;#39;index vectoriel et l&amp;#39;interruption des ServingRuntimes LLM associés.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;2. L&amp;#39;architecture distribuée Milvus adossée à OpenShift Data Foundation&lt;/h3&gt;
&lt;p&gt;Le déploiement de Milvus sous OpenShift repose sur une séparation stricte des plans de données et de stockage :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Couche de persistance Ceph RBD / CephFS :&lt;/strong&gt; ODF fournit des volumes blocs haute performance (Ceph RBD) avec CSI provisioner dynamique pour stocker les index vectoriels et les journaux de segments persistants.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Découplage des flux avec Pulsar/Kafka et MinIO/S3 :&lt;/strong&gt; L&amp;#39;ingestion des nouveaux embeddings transite par un broker d&amp;#39;événements distribué, tandis que le stockage objet ODF (Ceph RGW ou MinIO) conserve les snapshots immuables des collections vectorielles.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Isolation des QueryNodes bare-metal :&lt;/strong&gt; Les nœuds de calcul dédiés à la recherche vectorielle chargent les index en RAM sans bloquer les pipelines d&amp;#39;ingestion asynchrones, assurant une latence de similarité vectorielle inférieure à 5 ms.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;3. Alignement Pédagogique &amp;amp; Compétences dans le Cursus AS300&lt;/h3&gt;
&lt;p&gt;Chez Aperta Scientia, la conception d&amp;#39;usines IA d&amp;#39;entreprise intègre la maîtrise complète de la chaîne de données :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cursus AS300 (AI Platform Engineer — 399h) :&lt;/strong&gt; Déploiement de bases vectorielles distribuées (Milvus, Qdrant), interconnexion avec ODF et serving LLM KServe/vLLM sur clusters OpenShift bare-metal.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cursus AS200 (DevOps Platform Engineer) :&lt;/strong&gt; Administration et résilience du stockage logiciel avec OpenShift Data Foundation et monitoring granulaire sous Prometheus/Grafana.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;4. Sources &amp;amp; Références Techniques&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Milvus Distributed Architecture Documentation :&lt;/strong&gt; &lt;a href=&quot;https://milvus.io/docs/v2.4.x/architecture_overview.md&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;Milvus Docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OpenShift Data Foundation (ODF) Storage Architecture :&lt;/strong&gt; &lt;a href=&quot;https://docs.redhat.com/en/documentation/red_hat_openshift_data_foundation/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;Red Hat ODF Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rook-Ceph Storage Operator for Kubernetes :&lt;/strong&gt; &lt;a href=&quot;https://rook.io/docs/rook/latest/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;Rook Documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><media:content url="https://aperta.io/images/technologies/milvus.png" medium="image" type="image/png"/><media:thumbnail url="https://aperta.io/images/technologies/milvus.png"/><webfeeds:featuredImage>https://aperta.io/images/technologies/milvus.png</webfeeds:featuredImage><category>Tech Radar</category><category>AI Infrastructure</category><category>Storage &amp; RAG</category><author>Aperta Intelligence Lab</author><enclosure url="https://aperta.io/images/technologies/milvus.png" length="0" type="image/png"/></item><item><title>Sauvegarde &amp; PRA Stateful sur Kubernetes : OADP 1.4, CSI Data Mover et Reprise d&apos;Activité Déclarative</title><link>https://aperta.io/fr/radar/2026-09-17-oadp-velero-stateful-disaster-recovery-kubernetes-openshift/</link><guid isPermaLink="true">https://aperta.io/fr/radar/2026-09-17-oadp-velero-stateful-disaster-recovery-kubernetes-openshift/</guid><description>Comment OpenShift API for Data Protection (OADP / Velero) et les CSI Data Mover automatisent la sauvegarde déclarative hors-bande et la reprise d&apos;activité stateful.</description><pubDate>Thu, 17 Sep 2026 08:30:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://aperta.io/images/technologies/velero.png&quot; alt=&quot;Sauvegarde &amp; PRA Stateful sur Kubernetes : OADP 1.4, CSI Data Mover et Reprise d&apos;Activité Déclarative&quot; style=&quot;max-width: 100%; height: auto; border-radius: 12px; margin-bottom: 20px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Dans les architectures Kubernetes et OpenShift d&amp;#39;entreprise, le modèle GitOps garantit l&amp;#39;immutabilité et la reproductibilité des manifestes déclaratifs et des configurations d&amp;#39;infrastructure. Toutefois, en cas de sinistre majeur, d&amp;#39;incident de stockage ou d&amp;#39;attaque par ransomware, les dépôts Git ne restaurent pas l&amp;#39;état persistant des charges de travail critiques : bases de données distribuées, brokers d&amp;#39;événements Kafka, poids de modèles IA ou caches applicatifs.&lt;/p&gt;
&lt;p&gt;L&amp;#39;adoption d&amp;#39;&lt;strong&gt;OpenShift API for Data Protection (OADP 1.4)&lt;/strong&gt; adossé au moteur &lt;strong&gt;Velero&lt;/strong&gt; permet de faire évoluer la reprise après sinistre (PRA) d&amp;#39;un ensemble de scripts manuels vers une orchestration déclarative et reproductible.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;1. Les limites du GitOps face aux charges de travail avec état (Stateful)&lt;/h3&gt;
&lt;p&gt;Dans un cluster de production sans mécanisme de sauvegarde applicative unifié :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Déconnexion entre données et métadonnées :&lt;/strong&gt; Sauvegarder uniquement les disques ou baies de stockage sous-jacentes ne capture ni les &lt;code&gt;ConfigMaps&lt;/code&gt;, ni les &lt;code&gt;Secrets&lt;/code&gt;, ni les définitions de ressources personnalisées (&lt;code&gt;CRDs&lt;/code&gt;) associées aux opérateurs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Verrouillage et indisponibilité applicative :&lt;/strong&gt; Les méthodes traditionnelles de snapshot direct au niveau du stockage bloquent fréquemment les I/O applicatives et augmentent les temps d&amp;#39;indisponibilité.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Absence de protection immuable :&lt;/strong&gt; Les sauvegardes locales sur le même cluster ou sur le même contrôleur de stockage restent vulnérables aux corruptions de control plane ou aux ransomwares.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;2. Les innovations clés d&amp;#39;OADP 1.4 et des CSI Data Movers&lt;/h3&gt;
&lt;p&gt;OADP 1.4 introduit des avancées majeures pour fiabiliser la continuité d&amp;#39;activité :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CSI Data Mover hors-bande :&lt;/strong&gt; OADP orchestre la création de snapshots CSI standardisés (&lt;code&gt;VolumeSnapshot&lt;/code&gt;), puis instancie des pods de transfert éphémères pour décharger les différentiels de données directement vers un stockage objet S3 ou Ceph RGW distant, sans solliciter les contrôleurs de volumes applicatifs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Restauration granulaire par namespace :&lt;/strong&gt; Coordonne la sauvegarde et la restauration cohérente d&amp;#39;un namespace entier (objets Kubernetes, RBAC, volumes persistants et états d&amp;#39;opérateurs) pour la migration inter-clusters ou le PRA multi-cloud.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Immuabilité et protection contre les ransomwares :&lt;/strong&gt; Intégration native avec les politiques de rétention d&amp;#39;objets (AWS S3 Object Lock, Ceph WORM) garantissant des sauvegardes inviolables.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;3. Impact et Compétences dans les Cursus Aperta Scientia&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cursus AS200 (DevOps Platform Engineer — 399h) :&lt;/strong&gt; Pratique approfondie de la résilience du stockage (OpenShift Data Foundation / Rook-Ceph), automatisation des sauvegardes déclaratives avec OADP et simulation de PRA sur clusters bare-metal.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cursus AS300 (AI Platform Engineer) :&lt;/strong&gt; Sauvegarde et migration des index vectoriels (Milvus, Qdrant) et des volumes de modèles d&amp;#39;inférence.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;4. Sources &amp;amp; Références Techniques&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;OpenShift API for Data Protection Documentation :&lt;/strong&gt; &lt;a href=&quot;https://docs.openshift.com/container-platform/latest/backup_and_restore/application_backup_and_restore/oadp-intro.html&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;Red Hat OADP Guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Velero Project Official Documentation :&lt;/strong&gt; &lt;a href=&quot;https://velero.io/docs/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;Velero Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kubernetes Container Storage Interface (CSI) Snapshots :&lt;/strong&gt; &lt;a href=&quot;https://kubernetes.io/docs/concepts/storage/volume-snapshots/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;Kubernetes CSI Snapshotting&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><media:content url="https://aperta.io/images/technologies/velero.png" medium="image" type="image/png"/><media:thumbnail url="https://aperta.io/images/technologies/velero.png"/><webfeeds:featuredImage>https://aperta.io/images/technologies/velero.png</webfeeds:featuredImage><category>Tech Radar</category><category>Cloud &amp; DevOps</category><category>Resilience &amp; Storage</category><author>Aperta Intelligence Lab</author><enclosure url="https://aperta.io/images/technologies/velero.png" length="0" type="image/png"/></item><item><title>Orchestration GPU Kubernetes : Dynamic Resource Allocation (DRA) et Topologie NVLink sous OpenShift</title><link>https://aperta.io/fr/radar/2026-09-15-kubernetes-dra-nvidia-gpu-operator-nvlink-topology/</link><guid isPermaLink="true">https://aperta.io/fr/radar/2026-09-15-kubernetes-dra-nvidia-gpu-operator-nvlink-topology/</guid><description>Comment le standard Kubernetes DRA et le NVIDIA GPU Operator éliminent les redémarrages de nœuds pour le découpage MIG et optimisent l&apos;affinité NVLink.</description><pubDate>Tue, 15 Sep 2026 08:30:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://aperta.io/images/technologies/kubernetes.png&quot; alt=&quot;Orchestration GPU Kubernetes : Dynamic Resource Allocation (DRA) et Topologie NVLink sous OpenShift&quot; style=&quot;max-width: 100%; height: auto; border-radius: 12px; margin-bottom: 20px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Dans les architectures d&amp;#39;IA d&amp;#39;entreprise, la gestion des accélérateurs matériels s&amp;#39;est longtemps heurtée à un modèle rigide : l&amp;#39;approche historique par &lt;code&gt;DevicePlugin&lt;/code&gt; Kubernetes allouait les GPU comme des blocs discrets et statiques (&lt;code&gt;nvidia.com/gpu: 1&lt;/code&gt;), imposant des reconfigurations manuelles ou des interruptions de nœuds pour modifier le partitionnement MIG (Multi-Instance GPU).&lt;/p&gt;
&lt;p&gt;L&amp;#39;intégration du standard &lt;strong&gt;Dynamic Resource Allocation (DRA)&lt;/strong&gt; avec le &lt;strong&gt;NVIDIA GPU Operator&lt;/strong&gt; sous &lt;strong&gt;Red Hat OpenShift&lt;/strong&gt; transforme radicalement l&amp;#39;orchestration des accélérateurs pour l&amp;#39;entraînement distribué et le serving LLM.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;1. Les limites de l&amp;#39;allocation GPU traditionnelle&lt;/h3&gt;
&lt;p&gt;Dans un cluster Kubernetes standard sans DRA :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Gaspillage VRAM &amp;amp; Sur-allocation :&lt;/strong&gt; Assigner un GPU H100 ou L40S complet à un microservice d&amp;#39;embedding ou à un petit modèle de classification monopolise 80 Go de VRAM pour quelques gigaoctets utiles.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rigidité du partitionnement MIG :&lt;/strong&gt; Modifier les profils de découpage matériel (ex. basculer de 7x 1g.10gb à 1x 7g.80gb) exigeait de drainer et redémarrer le nœud worker bare-metal.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ignorance de la topologie NVLink :&lt;/strong&gt; Le scheduler Kubernetes classique ne garantit pas que les pods multi-GPU (vLLM Tensor Parallelism, Ray Train) soient placés sur des sockets reliés physiquement par des bus NVLink haute vitesse.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;2. Les apports clés du standard DRA et du CDI&lt;/h3&gt;
&lt;p&gt;Grâce aux objets déclaratifs Kubernetes DRA (&lt;code&gt;ResourceClaim&lt;/code&gt;, &lt;code&gt;ResourceClaimTemplate&lt;/code&gt;, &lt;code&gt;ResourceSlice&lt;/code&gt;) et à l&amp;#39;interface &lt;strong&gt;CDI (Container Device Interface)&lt;/strong&gt; :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Revendications de ressources fines :&lt;/strong&gt; Les pods expriment des critères précis (quantité exacte de VRAM requise, capacités de calcul spécifiques, interconnexions requises).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Partitionnement dynamique à chaud :&lt;/strong&gt; Allocation granulaire et à la volée des fractions GPU et des profils MIG sans redémarrage de nœuds.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Placement conscient de la topologie NVLink :&lt;/strong&gt; Le scheduler planifie les charges d&amp;#39;inférence distribuée multi-GPU sur des accélérateurs adjacents à haut débit, réduisant drastiquement les goulots d&amp;#39;étranglement inter-cartes.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;3. Alignement &amp;amp; Compétences dans les Cursus Aperta Scientia&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cursus AS300 (AI Platform Engineer — 399h) :&lt;/strong&gt; Maîtrise avancée du NVIDIA GPU Operator, configuration des profils DRA/MIG, optimisation du Tensor Parallelism sous vLLM et préparation à la certification officielle &lt;strong&gt;Red Hat Certified Specialist in AI/ML (EX267)&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cursus AS200 (DevOps Platform Engineer) :&lt;/strong&gt; Orchestration de nœuds workers bare-metal accélérés et monitoring matériel via Prometheus et DCGM exporter.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;4. Sources &amp;amp; Références Techniques&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Kubernetes Dynamic Resource Allocation (DRA) :&lt;/strong&gt; &lt;a href=&quot;https://kubernetes.io/docs/concepts/scheduling-eviction/dynamic-resource-allocation/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;Documentation Officielle Kubernetes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;NVIDIA GPU Operator Documentation :&lt;/strong&gt; &lt;a href=&quot;https://docs.nvidia.com/datacenter/cloud-native/gpu-operator/latest/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;NVIDIA Cloud-Native Docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Red Hat OpenShift AI Hardware Acceleration :&lt;/strong&gt; &lt;a href=&quot;https://docs.redhat.com/en/documentation/red_hat_openshift_ai/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;Red Hat OpenShift AI Documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><media:content url="https://aperta.io/images/technologies/kubernetes.png" medium="image" type="image/png"/><media:thumbnail url="https://aperta.io/images/technologies/kubernetes.png"/><webfeeds:featuredImage>https://aperta.io/images/technologies/kubernetes.png</webfeeds:featuredImage><category>Tech Radar</category><category>AI Infrastructure</category><category>Kubernetes &amp; GPU</category><author>Aperta Intelligence Lab</author><enclosure url="https://aperta.io/images/technologies/kubernetes.png" length="0" type="image/png"/></item><item><title>Multi-LoRA Serving à l&apos;Échelle avec vLLM et OpenShift AI : Servir des Centaines d&apos;Adaptateurs Métier sur un Seul Cluster GPU</title><link>https://aperta.io/fr/radar/2026-09-15-multi-lora-serving-vllm-openshift-ai/</link><guid isPermaLink="true">https://aperta.io/fr/radar/2026-09-15-multi-lora-serving-vllm-openshift-ai/</guid><description>Guide d&apos;ingénierie complet pour servir des dizaines d&apos;adaptateurs LoRA spécialisés sur un modèle de base unique avec vLLM et Red Hat OpenShift AI sans multiplier les GPU.</description><pubDate>Tue, 15 Sep 2026 08:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://aperta.io/images/technologies/vllm.png&quot; alt=&quot;Multi-LoRA Serving à l&apos;Échelle avec vLLM et OpenShift AI : Servir des Centaines d&apos;Adaptateurs Métier sur un Seul Cluster GPU&quot; style=&quot;max-width: 100%; height: auto; border-radius: 12px; margin-bottom: 20px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Dans les déploiements d&amp;#39;intelligence artificielle générative en entreprise, la personnalisation des modèles pour chaque département (Juridique, Finance, RH, Support Client, Ingénierie Logicielle) se heurte rapidement à une contrainte physique et financière critique : &lt;strong&gt;le coût et la rareté des ressources GPU&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Si chaque cas d&amp;#39;usage déploie son propre modèle complet fine-tuné (par exemple un modèle 70B ou 8B dupliqué 20 fois), l&amp;#39;infrastructure explose en nombre de nœuds GPU (NVIDIA H100, B200 ou L40S), générant un gaspillage massif de mémoire VRAM et des coûts d&amp;#39;exploitation insoutenables.&lt;/p&gt;
&lt;p&gt;La méthode &lt;strong&gt;LoRA (Low-Rank Adaptation)&lt;/strong&gt; permet d&amp;#39;entraîner des adaptateurs ultra-légers (quelques dizaines de mégaoctets) en ne modifiant qu&amp;#39;une fraction infime des poids d&amp;#39;un modèle de base gelé (&lt;em&gt;Frozen Base Model&lt;/em&gt;). Mais comment servir dynamiquement des centaines d&amp;#39;adaptateurs LoRA concurrents sur une seule flotte GPU partagée, sans interruption de service ni latence de rechargement ?&lt;/p&gt;
&lt;p&gt;Découvrez l&amp;#39;architecture du &lt;strong&gt;Multi-LoRA Serving&lt;/strong&gt; avec le moteur &lt;strong&gt;vLLM&lt;/strong&gt; et &lt;strong&gt;Red Hat OpenShift AI (RHOAI)&lt;/strong&gt;, permettant d&amp;#39;atteindre un taux de consolidation GPU sans précédent en production.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;1. Le Paradoxe du Multi-Tenant LLM en Entreprise&lt;/h3&gt;
&lt;p&gt;Lorsqu&amp;#39;une organisation déploie des modèles spécialisés pour différents métiers, deux approches s&amp;#39;opposent :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;┌─────────────────────────────────────────────────────────────────────────────┐
│                       Approche 1 : Modèles Dédiés Silotés                  │
├─────────────────────────────────────────────────────────────────────────────┤
│ • 1 Pod par Métier (Finance 8B, Juridique 8B, RH 8B, Support 8B...)        │
│ • VRAM consommée par pod : 16 Go de poids de base + KV-Cache                │
│ • 10 métiers = 10 GPU dédiés (160 Go VRAM totale)                           │
│ • Coût GPU : Élevé | Taux d&amp;#39;utilisation moyen : 15 % (sous-utilisation)     │
└─────────────────────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────────────────────┐
│                 Approche 2 : Multi-LoRA Serving Mutualisé                   │
├─────────────────────────────────────────────────────────────────────────────┤
│ • 1 Seul Pod vLLM avec le Modèle de Base en VRAM (ex. Granite 3.1 8B)       │
│ • Des dizaines d&amp;#39;adaptateurs LoRA stockés sur Ceph / S3 (30 Mo chacun)     │
│ • Chargement dynamique et multiplexage des adaptateurs dans le même batch   │
│ • 10 métiers = 1 seul GPU (24 Go VRAM totale pour Base + LoRA Pool)         │
│ • Coût GPU : Réduit de 85 % | Taux d&amp;#39;utilisation : 80 %+                   │
└─────────────────────────────────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Selon les études de référence de l&amp;#39;&lt;a href=&quot;https://arxiv.org/abs/2311.03285&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;Université de Californie à Berkeley (S-LoRA)&lt;/a&gt; et les benchmarks d&amp;#39;ingénierie &lt;a href=&quot;https://www.redhat.com/en/technologies/cloud-computing/openshift/openshift-ai&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;Red Hat&lt;/a&gt;, le Multi-LoRA Serving permet de multiplier par 4 à 8 la densité de services par nœud GPU tout en maintenant un débit d&amp;#39;inférence optimal.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;2. Mécanique Interne du Multi-LoRA dans vLLM : PagedLoRA et Batching Unifié&lt;/h3&gt;
&lt;p&gt;Le moteur &lt;strong&gt;vLLM&lt;/strong&gt; intègre nativement une gestion avancée du Multi-LoRA basée sur les principes de &lt;strong&gt;S-LoRA (Serving Thousands of Concurrent LoRA Adapters)&lt;/strong&gt; :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Base Model Invariable :&lt;/strong&gt; Les poids du modèle de fondation (ex. &lt;code&gt;granite-3.1-8b-instruct&lt;/code&gt; ou &lt;code&gt;Llama-3.3-70B&lt;/code&gt;) sont chargés une seule fois en VRAM et partagés entre toutes les requêtes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Unified Paging pour les Poids LoRA :&lt;/strong&gt; Tout comme &lt;strong&gt;PagedAttention&lt;/strong&gt; découpe le KV-Cache en blocs non contigus, vLLM gère la mémoire réservée aux matrices LoRA ($A$ et $B$) sous forme de pages dynamiques.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Multi-LoRA Batched GEMM (Pytorch / Triton Kernels) :&lt;/strong&gt; vLLM est capable de traiter au sein d&amp;#39;un &lt;strong&gt;même batch continu&lt;/strong&gt; une requête à destination de l&amp;#39;adaptateur Finance et une requête pour l&amp;#39;adaptateur Juridique, en appliquant les opérations matricielles LoRA correspondantes via des kernels optimisés.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LRU Cache &amp;amp; Hot-Swapping :&lt;/strong&gt; Les adaptateurs les plus sollicités restent chauds en VRAM. Si un adaptateur froid est requis, il est chargé en quelques millisecondes depuis la RAM hôte ou le stockage persistant partagé sans bloquer l&amp;#39;exécution des autres requêtes.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;                  ┌─────────────────────────────────────┐
                  │ Requêtes Utilisateurs / Agents IA  │
                  └──────────────────┬──────────────────┘
                                     │
           [Req A: model=&amp;quot;finance-lora&amp;quot;] [Req B: model=&amp;quot;legal-lora&amp;quot;]
                                     │
                                     ▼
                  ┌─────────────────────────────────────┐
                  │      vLLM Continuous Batching Engine │
                  ├─────────────────────────────────────┤
                  │ ┌─────────────────────────────────┐ │
                  │ │   Shared Frozen Base Model      │ │
                  │ └─────────────────────────────────┘ │
                  │ ┌─────────────────────────────────┐ │
                  │ │ PagedLoRA Memory Pool (VRAM)   │ │
                  │ │ [Finance LoRA]   [Legal LoRA]   │ │
                  │ └─────────────────────────────────┘ │
                  └──────────────────┬──────────────────┘
                                     │
                                     ▼
                     Tokens Générés (Sortie Inférence)
&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h3&gt;3. Déploiement Declaratif Multi-LoRA sur OpenShift AI avec KServe&lt;/h3&gt;
&lt;p&gt;Pour instancier un service Multi-LoRA haute disponibilité sur &lt;strong&gt;Red Hat OpenShift AI (RHOAI)&lt;/strong&gt;, nous configurons un &lt;code&gt;ServingRuntime&lt;/code&gt; vLLM exposant les adaptateurs hébergés sur un stockage objet compatible S3 (Red Hat OpenShift Data Foundation / Ceph).&lt;/p&gt;
&lt;h4&gt;Manifeste ServingRuntime Multi-LoRA vLLM (&lt;code&gt;servingruntime-vllm-multilora.yaml&lt;/code&gt;) :&lt;/h4&gt;
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;apiVersion: serving.kserve.io/v1alpha1
kind: ServingRuntime
metadata:
  name: vllm-multilora-runtime
  namespace: ai-inference-prod
  labels:
    opendatahub.io/dashboard: &amp;quot;true&amp;quot;
spec:
  annotations:
    prometheus.io/path: /metrics
    prometheus.io/port: &amp;quot;8000&amp;quot;
    prometheus.io/scrape: &amp;quot;true&amp;quot;
  supportedModelFormats:
    - name: vLLM
      version: &amp;quot;1&amp;quot;
      autoSelect: true
  containers:
    - name: kserve-container
      image: registry.redhat.io/rhoai/odh-vllm-rhel9:v2.16
      command: [&amp;quot;python3&amp;quot;, &amp;quot;-m&amp;quot;, &amp;quot;vllm.entrypoints.openai.api_server&amp;quot;]
      args:
        - &amp;quot;--model=/mnt/models/base-model&amp;quot;
        - &amp;quot;--served-model-name=granite-base&amp;quot;
        - &amp;quot;--enable-lora&amp;quot;
        - &amp;quot;--max-loras=16&amp;quot;
        - &amp;quot;--max-lora-rank=64&amp;quot;
        - &amp;quot;--lora-extra-vocab-size=256&amp;quot;
        - &amp;quot;--lora-modules&amp;quot;
        - &amp;quot;finance=/mnt/adapters/granite-finance-lora&amp;quot;
        - &amp;quot;legal=/mnt/adapters/granite-legal-lora&amp;quot;
        - &amp;quot;support=/mnt/adapters/granite-support-lora&amp;quot;
        - &amp;quot;--gpu-memory-utilization=0.90&amp;quot;
        - &amp;quot;--max-model-len=8192&amp;quot;
        - &amp;quot;--port=8000&amp;quot;
      ports:
        - containerPort: 8000
          name: http1
          protocol: TCP
      resources:
        limits:
          cpu: &amp;quot;8&amp;quot;
          memory: 32Gi
          nvidia.com/gpu: &amp;quot;1&amp;quot;
        requests:
          cpu: &amp;quot;4&amp;quot;
          memory: 16Gi
          nvidia.com/gpu: &amp;quot;1&amp;quot;
      volumeMounts:
        - name: base-model-volume
          mountPath: /mnt/models/base-model
          readOnly: true
        - name: lora-adapters-volume
          mountPath: /mnt/adapters
          readOnly: true
  volumes:
    - name: base-model-volume
      persistentVolumeClaim:
        claimName: pvc-granite-3-1-8b-base
    - name: lora-adapters-volume
      persistentVolumeClaim:
        claimName: pvc-lora-adapters-shared
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Paramètres Clés du Serving Multi-LoRA dans vLLM :&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--enable-lora&lt;/code&gt; : Active le sous-système PagedLoRA et les kernels d&amp;#39;exécution dynamique.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--max-loras&lt;/code&gt; : Nombre maximum d&amp;#39;adaptateurs LoRA pouvant être maintenus simultanément en VRAM (les adaptateurs excédentaires sont gérés via le cache LRU en RAM hôte).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--max-lora-rank&lt;/code&gt; : Rang maximum ($r$) supporté par les adaptateurs (ex. $r=16, 32, 64$).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--lora-modules&lt;/code&gt; : Déclaration statique ou chemins vers les répertoires d&amp;#39;adaptateurs pré-montés.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;4. Routage Dynamique des Requêtes et Invocations Métier&lt;/h3&gt;
&lt;p&gt;Une fois déployé, le serveur vLLM expose une API standard compatible OpenAI (&lt;code&gt;/v1/chat/completions&lt;/code&gt;). Pour interroger un adaptateur spécifique, l&amp;#39;application ou l&amp;#39;agent IA spécifie simplement le nom de l&amp;#39;adaptateur dans le champ &lt;code&gt;model&lt;/code&gt; de la requête :&lt;/p&gt;
&lt;h4&gt;Exemple de Requête vers l&amp;#39;Adaptateur Juridique :&lt;/h4&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;curl -X POST https://vllm-multilora.apps.cluster-prod.apertascientia.net/v1/chat/completions \
  -H &amp;quot;Content-Type: application/json&amp;quot; \
  -H &amp;quot;Authorization: Bearer ${RHOAI_API_TOKEN}&amp;quot; \
  -d &amp;#39;{
    &amp;quot;model&amp;quot;: &amp;quot;legal&amp;quot;,
    &amp;quot;messages&amp;quot;: [
      {
        &amp;quot;role&amp;quot;: &amp;quot;system&amp;quot;,
        &amp;quot;content&amp;quot;: &amp;quot;Vous êtes un juriste expert en droit des affaires et conformité RGPD.&amp;quot;
      },
      {
        &amp;quot;role&amp;quot;: &amp;quot;user&amp;quot;,
        &amp;quot;content&amp;quot;: &amp;quot;Quelles sont les clauses indispensables dans un contrat de sous-traitance de traitement de données ?&amp;quot;
      }
    ],
    &amp;quot;temperature&amp;quot;: 0.2,
    &amp;quot;max_tokens&amp;quot;: 1024
  }&amp;#39;
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Chargement Dynamique d&amp;#39;Adaptateurs à Chaud (Dynamic LoRA Loading) :&lt;/h4&gt;
&lt;p&gt;Sur les versions récentes de vLLM, les adaptateurs peuvent être téléchargés et enregistrés dynamiquement sans redémarrer le pod d&amp;#39;inférence via l&amp;#39;endpoint d&amp;#39;administration :&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;curl -X POST http://localhost:8000/v1/load_lora_adapter \
  -H &amp;quot;Content-Type: application/json&amp;quot; \
  -d &amp;#39;{
    &amp;quot;lora_name&amp;quot;: &amp;quot;hr-recruitment-v2&amp;quot;,
    &amp;quot;lora_path&amp;quot;: &amp;quot;/mnt/adapters/granite-hr-v2&amp;quot;
  }&amp;#39;
&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h3&gt;5. Comparatif de Performance et Rentabilité Économique&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th align=&quot;left&quot;&gt;Métrique d&amp;#39;Architecture&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;Déploiements Dédiés (1 Modèle / Métier)&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;Multi-LoRA vLLM sur OpenShift AI&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Nombre de GPU Requis (pour 10 Métiers 8B)&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;10x NVIDIA L40S (480 Go VRAM)&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;1x à 2x NVIDIA L40S (48-96 Go VRAM)&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Empreinte VRAM par Adaptateur Actif&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;~16 Go (Poids complets)&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;~35 Mo à 120 Mo (Matrices $A$ &amp;amp; $B$)&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Temps d&amp;#39;Ajout d&amp;#39;un Nouveau Métier&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;10 à 15 min (Création Pod, Init GPU)&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;&amp;lt; 2 secondes (Hot-load LoRA en RAM/VRAM)&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Débit Global (Tokens/sec par € investi)&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Faible (Ressources VRAM fragmentées)&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Optimal (+400 % d&amp;#39;efficience GPU)&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Complexité d&amp;#39;Exploitation Kubernetes&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;10 Déploiements, 10 HPA, 10 Services&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;1 Déploiement Unique, 1 Monitoring central&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;hr&gt;
&lt;h3&gt;6. Guide d&amp;#39;Ingénierie pour les Équipes Plateforme &amp;amp; MLOps&lt;/h3&gt;
&lt;p&gt;Pour réussir l&amp;#39;industrialisation du Multi-LoRA en entreprise :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Standardisez le Modèle de Base :&lt;/strong&gt; Fixez une architecture de référence unique (ex. IBM Granite 3.1 8B/70B ou Llama 3.3) pour l&amp;#39;ensemble des cas d&amp;#39;usage internes afin de maximiser la mutualisation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dimensionnez rigoureusement &lt;code&gt;--max-loras&lt;/code&gt; :&lt;/strong&gt; Ne réservez pas une mémoire excessive pour les LoRA au détriment du KV-Cache. Allouez 10 à 15 % de la VRAM pour le pool LoRA et 75 à 80 % pour le KV-Cache PagedAttention.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Implémentez un Registre Centralisé d&amp;#39;Adaptateurs :&lt;/strong&gt; Stockez vos poids LoRA versionnés dans un bucket S3 sécurisé connecté à votre registre ML (MLflow / RHOAI Model Registry).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Surveillez les Métriques Prometheus Dédiées :&lt;/strong&gt; Supervisez &lt;code&gt;vllm:num_loras_in_gpu&lt;/code&gt; et &lt;code&gt;vllm:num_loras_in_cpu&lt;/code&gt; pour anticiper le dimensionnement de vos réplicas.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h3&gt;Maîtrisez l&amp;#39;Ingénierie des Plateformes IA avec Aperta Scientia&lt;/h3&gt;
&lt;p&gt;L&amp;#39;optimisation des architectures d&amp;#39;inférence, le déploiement multi-tenant de LLM et la gestion fine des ressources GPU sont au cœur des compétences les plus recherchées du marché Cloud &amp;amp; IA.&lt;/p&gt;
&lt;p&gt;Aperta Scientia forme vos ingénieurs et architectes aux standards industriels les plus exigeants :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;/curriculums/as300&quot; &gt;AS300 — AI Platform Engineer&lt;/a&gt;&lt;/strong&gt; : Le cursus d&amp;#39;élite de 3 mois pour maîtriser le déploiement d&amp;#39;&lt;strong&gt;OpenShift AI (RHOAI)&lt;/strong&gt;, l&amp;#39;optimisation des moteurs &lt;strong&gt;vLLM / SGLang&lt;/strong&gt;, le serving &lt;strong&gt;Multi-LoRA&lt;/strong&gt;, le fine-tuning avec &lt;strong&gt;InstructLab&lt;/strong&gt;, l&amp;#39;orchestration GPU avancée avec &lt;strong&gt;DRA / MIG&lt;/strong&gt;, et la gouvernance avec &lt;strong&gt;TrustyAI&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;/curriculums/as200&quot; &gt;AS200 — New DevOps Platform Engineer&lt;/a&gt;&lt;/strong&gt; : Le cursus fondamental pour concevoir des clusters &lt;strong&gt;Red Hat OpenShift&lt;/strong&gt; résilients, automatiser vos déploiements en &lt;strong&gt;GitOps (ArgoCD)&lt;/strong&gt;, et opérer le stockage d&amp;#39;entreprise avec &lt;strong&gt;OpenShift Data Foundation (ODF)&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><media:content url="https://aperta.io/images/technologies/vllm.png" medium="image" type="image/png"/><media:thumbnail url="https://aperta.io/images/technologies/vllm.png"/><webfeeds:featuredImage>https://aperta.io/images/technologies/vllm.png</webfeeds:featuredImage><category>Tech Radar</category><category>AI Infrastructure</category><category>Kubernetes &amp; OpenShift</category><category>LLMOps</category><author>Aperta Intelligence Lab</author><enclosure url="https://aperta.io/images/technologies/vllm.png" length="0" type="image/png"/></item><item><title>Autoscaling Intelligent des LLM avec KEDA et vLLM sur OpenShift : Scaler sur le KV-Cache et la Latence ITL</title><link>https://aperta.io/fr/radar/2026-09-14-autoscaling-llm-keda-vllm-kv-cache-openshift/</link><guid isPermaLink="true">https://aperta.io/fr/radar/2026-09-14-autoscaling-llm-keda-vllm-kv-cache-openshift/</guid><description>Guide d&apos;ingénierie complet pour dimensionner dynamiquement vos serveurs LLM en production : pourquoi l&apos;HPA standard échoue et comment configurer KEDA avec les métriques vLLM.</description><pubDate>Mon, 14 Sep 2026 08:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://aperta.io/images/technologies/vllm.png&quot; alt=&quot;Autoscaling Intelligent des LLM avec KEDA et vLLM sur OpenShift : Scaler sur le KV-Cache et la Latence ITL&quot; style=&quot;max-width: 100%; height: auto; border-radius: 12px; margin-bottom: 20px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Dans les déploiements de modèles de langage (LLMs) en production, l&amp;#39;&lt;strong&gt;autoscaling d&amp;#39;infrastructure&lt;/strong&gt; représente un paradoxe économique et opérationnel majeur :
D&amp;#39;un côté, le sur-provisionnement de nœuds GPU (NVIDIA H100/H200, B200 ou L40S) génère des coûts d&amp;#39;infrastructure exorbitants pendant les heures creuses. De l&amp;#39;autre, un sous-dimensionnement entraîne une explosion de la file d&amp;#39;attente de requêtes, une saturation de la mémoire et des dégradations inacceptables du &lt;strong&gt;Time-To-First-Token (TTFT)&lt;/strong&gt; et de l&amp;#39;&lt;strong&gt;Inter-Token Latency (ITL)&lt;/strong&gt; pour les utilisateurs et agents IA.&lt;/p&gt;
&lt;p&gt;Le réflexe classique des équipes d&amp;#39;infrastructure consiste à déployer un &lt;strong&gt;Horizontal Pod Autoscaler (HPA)&lt;/strong&gt; Kubernetes basé sur l&amp;#39;utilisation CPU, mémoire RAM ou l&amp;#39;allocation GPU standard. Or, sur les moteurs d&amp;#39;inférence modernes comme &lt;strong&gt;vLLM&lt;/strong&gt; ou &lt;strong&gt;TGI&lt;/strong&gt;, cette approche est inefficace : la mémoire VRAM est préallouée à 90 % dès l&amp;#39;initialisation du moteur par &lt;strong&gt;PagedAttention&lt;/strong&gt;, rendant les métriques d&amp;#39;allocation mémoire plates et aveugles.&lt;/p&gt;
&lt;p&gt;Découvrez comment mettre en œuvre un &lt;strong&gt;autoscaling événementiel intelligent avec KEDA (Kubernetes Event-driven Autoscaling)&lt;/strong&gt; et &lt;strong&gt;Red Hat OpenShift AI (RHOAI)&lt;/strong&gt;, en pilotant le cycle de vie des réplicas d&amp;#39;inférence directement à partir de la pression du &lt;strong&gt;KV-Cache&lt;/strong&gt; et de la file d&amp;#39;attente vLLM.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;1. Pourquoi l&amp;#39;Autoscaling Traditionnel Échoue sur les LLM&lt;/h3&gt;
&lt;p&gt;Pour comprendre l&amp;#39;échec des mécanismes d&amp;#39;autoscaling traditionnels sur les charges de travail GenAI, il faut analyser le comportement interne du moteur vLLM :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;┌─────────────────────────────────────────────────────────────────────────────┐
│                    Pourquoi l&amp;#39;HPA Standard est Aveugle                      │
├─────────────────────────────────────────────────────────────────────────────┤
│ 1. Mémoire VRAM : vLLM préalloue le KV-Cache au boot (ex. gpu_memory_utilization=0.90). │
│    =&amp;gt; Métrique VRAM perçue par Kubernetes : 90 % en permanence (aucun signal de charge). │
│                                                                             │
│ 2. GPU Utilization (%) : Fluctue violemment entre les phases de Prefill et Decode.     │
│    =&amp;gt; Crée du &amp;quot;flapping&amp;quot; (oscillations rapides et destructrices de pods).    │
│                                                                             │
│ 3. Trafic Réseau HTTP (RPS) : Toutes les requêtes ne se valent pas !        │
│    =&amp;gt; Un prompt de 4000 tokens sature le KV-Cache 20x plus qu&amp;#39;un prompt court. │
└─────────────────────────────────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Pour déclencher un scaling prédictif et fluide, Kubernetes doit surveiller l&amp;#39;état interne de la boucle de batching continu (&lt;em&gt;Continuous Batching&lt;/em&gt;) via les métriques exposées par l&amp;#39;endpoint &lt;code&gt;/metrics&lt;/code&gt; de vLLM.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;2. Les Métriques Clés de vLLM pour l&amp;#39;Autoscaling&lt;/h3&gt;
&lt;p&gt;vLLM expose nativement au format Prometheus des indicateurs de performance haute fidélité. Trois métriques constituent les piliers du scaling automatisé :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;vllm:num_requests_waiting&lt;/code&gt; :&lt;/strong&gt; Le nombre de requêtes en attente dans la file d&amp;#39;ordonnancement interne de vLLM, faute de blocs KV-Cache disponibles. Tout chiffre supérieur à 0 indique une saturation immédiate.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;vllm:gpu_cache_usage_factor&lt;/code&gt; :&lt;/strong&gt; Le ratio de blocs mémoire du KV-Cache actuellement réservés pour les séquences en cours de décodage (valeur de &lt;code&gt;0.0&lt;/code&gt; à &lt;code&gt;1.0&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;vllm:time_to_first_token_seconds_bucket&lt;/code&gt; / &lt;code&gt;vllm:time_per_output_token_seconds&lt;/code&gt; :&lt;/strong&gt; La latence effective subie par les clients, idéale pour déclencher des alertes de dégradation SLA.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;                  ┌─────────────────────────────────────────────────────────┐
                  │   Trafic Ingress (Requêtes LLM / Prompts Entrants)     │
                  └────────────────────────────┬────────────────────────────┘
                                               │
                                               ▼
                  ┌─────────────────────────────────────────────────────────┐
                  │     OpenShift AI / KServe InferenceService (vLLM)       │
                  │   ┌─────────────────────────────────────────────────┐   │
                  │   │ Metrics Exporter: /metrics                      │   │
                  │   │ • vllm:gpu_cache_usage_factor                   │   │
                  │   │ • vllm:num_requests_waiting                     │   │
                  │   └────────────────────────┬────────────────────────┘   │
                  └────────────────────────────┼────────────────────────────┘
                                               │ Scrape (10s)
                                               ▼
                  ┌─────────────────────────────────────────────────────────┐
                  │             OpenShift User-Workload Monitoring          │
                  │                   (Prometheus / Thanos)                 │
                  └────────────────────────────┬────────────────────────────┘
                                               │ Query PromQL
                                               ▼
                  ┌─────────────────────────────────────────────────────────┐
                  │                 KEDA Autoscaling Operator               │
                  │  (ScaledObject: évalue seuil cache &amp;gt; 0.85 ou wait &amp;gt; 2)  │
                  └────────────────────────────┬────────────────────────────┘
                                               │ Scale Out / Scale In
                                               ▼
                  ┌─────────────────────────────────────────────────────────┐
                  │      Orchestrateur GPU OpenShift (DRA / Node AutoScaler)│
                  │      Allocation de nouveaux Pods vLLM sur nœuds GPU     │
                  └─────────────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h3&gt;3. Architecture Déclarative : Configuration KEDA &amp;amp; ScaledObject&lt;/h3&gt;
&lt;p&gt;Sur OpenShift, KEDA s&amp;#39;installe en un clic via l&amp;#39;OperatorHub. Il s&amp;#39;appuie sur le composant &lt;strong&gt;OpenShift User-Workload Monitoring&lt;/strong&gt; pour interroger les métriques Prometheus sans surcharger les pods d&amp;#39;inférence.&lt;/p&gt;
&lt;h4&gt;Étape 1 : Activer le ServiceMonitor pour vLLM&lt;/h4&gt;
&lt;p&gt;Ce manifeste indique à Prometheus de collecter les métriques du runtime vLLM toutes les 10 secondes :&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: vllm-metrics-monitor
  namespace: ai-inference-prod
  labels:
    app.kubernetes.io/name: vllm-granite-3b
spec:
  selector:
    matchLabels:
      serving.kserve.io/inferenceservice: granite-3b-instruct
  endpoints:
    - port: metrics
      path: /metrics
      interval: 10s
      scrapeTimeout: 5s
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Étape 2 : Définir l&amp;#39;Authentification KEDA avec Thanos Querier&lt;/h4&gt;
&lt;p&gt;Pour sécuriser l&amp;#39;accès de KEDA à l&amp;#39;API de métriques interne d&amp;#39;OpenShift :&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;apiVersion: keda.sh/v1alpha1
kind: TriggerAuthentication
metadata:
  name: keda-trigger-auth-prometheus
  namespace: ai-inference-prod
spec:
  secretTargetRef:
    - parameter: bearerToken
      name: thanos-querier-token
      key: token
    - parameter: ca
      name: thanos-querier-ca
      key: ca.crt
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Étape 3 : Déployer le ScaledObject KEDA Multi-Critères&lt;/h4&gt;
&lt;p&gt;Le &lt;code&gt;ScaledObject&lt;/code&gt; suivant ajuste le nombre de réplicas vLLM entre 1 et 8 pods selon deux règles combinées :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Si &lt;strong&gt;&lt;code&gt;vllm:num_requests_waiting&lt;/code&gt;&lt;/strong&gt; dépasse &lt;strong&gt;2&lt;/strong&gt; requêtes en attente.&lt;/li&gt;
&lt;li&gt;Si le &lt;strong&gt;&lt;code&gt;vllm:gpu_cache_usage_factor&lt;/code&gt;&lt;/strong&gt; moyen dépasse &lt;strong&gt;0.80&lt;/strong&gt; (80 % du KV-Cache alloué).&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
  name: vllm-granite-scaledobject
  namespace: ai-inference-prod
spec:
  scaleTargetRef:
    apiVersion: serving.kserve.io/v1beta1
    kind: InferenceService
    name: granite-3b-instruct
  minReplicaCount: 1
  maxReplicaCount: 8
  cooldownPeriod: 300   # Évite le scale-in trop rapide (cooldown de 5 min)
  pollingInterval: 15  # Fréquence d&amp;#39;évaluation
  advanced:
    horizontalPodAutoscalerConfig:
      behavior:
        scaleUp:
          stabilizationWindowSeconds: 0
          policies:
            - type: Percent
              value: 100
              periodSeconds: 15
        scaleDown:
          stabilizationWindowSeconds: 300
          policies:
            - type: Pods
              value: 1
              periodSeconds: 60
  triggers:
    - type: prometheus
      metadata:
        serverAddress: https://thanos-querier.openshift-monitoring.svc.cluster.local:9091
        metricName: vllm_waiting_requests_trigger
        threshold: &amp;#39;2&amp;#39;
        query: sum(vllm:num_requests_waiting{namespace=&amp;quot;ai-inference-prod&amp;quot;, model_name=&amp;quot;granite-3b-instruct&amp;quot;})
        authModes: bearer
      authenticationRef:
        name: keda-trigger-auth-prometheus

    - type: prometheus
      metadata:
        serverAddress: https://thanos-querier.openshift-monitoring.svc.cluster.local:9091
        metricName: vllm_kv_cache_pressure_trigger
        threshold: &amp;#39;0.80&amp;#39;
        query: avg(vllm:gpu_cache_usage_factor{namespace=&amp;quot;ai-inference-prod&amp;quot;, model_name=&amp;quot;granite-3b-instruct&amp;quot;})
        authModes: bearer
      authenticationRef:
        name: keda-trigger-auth-prometheus
&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h3&gt;4. Gérer le Défi du &amp;quot;Cold Start&amp;quot; GPU sur OpenShift&lt;/h3&gt;
&lt;p&gt;Si KEDA permet de déclencher l&amp;#39;instanciation de nouveaux pods en quelques millisecondes, le temps de démarrage effectif d&amp;#39;un pod vLLM (&lt;em&gt;Cold Start&lt;/em&gt;) peut atteindre 45 à 120 secondes en raison :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;De l&amp;#39;allocation dynamique du nœud GPU via le MachineSet OpenShift / Cluster Autoscaler.&lt;/li&gt;
&lt;li&gt;Du téléchargement des poids du modèle (10 à 70 Go) depuis le stockage objet S3/Ceph.&lt;/li&gt;
&lt;li&gt;De l&amp;#39;initialisation des kernels CUDA et du graphe d&amp;#39;exécution PyTorch.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;Bonnes Pratiques d&amp;#39;Ingénierie pour Réduire le Cold Start :&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Shared Model Cache via ReadWriteMany (CephFS / Lustre / ODF) :&lt;/strong&gt; Montez un cache local en lecture partagée (&lt;code&gt;PVC ReadWriteMany&lt;/code&gt;) pour que les nouveaux pods accèdent instantanément aux poids sans téléchargement réseau.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Warm Pool &amp;amp; Pre-warmed Nodes :&lt;/strong&gt; Conservez au moins un réplica actif (&lt;code&gt;minReplicaCount: 1&lt;/code&gt;) et des nœuds GPU prêts à l&amp;#39;emploi avec les images de conteneurs pré-téléchargées (&lt;em&gt;cached images&lt;/em&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Politique de Scale-In Conservatrice :&lt;/strong&gt; Utilisez un &lt;code&gt;cooldownPeriod&lt;/code&gt; d&amp;#39;au moins 300 secondes (5 minutes) pour empêcher de détruire des pods GPU qui ont mis du temps à chauffer alors qu&amp;#39;une nouvelle rafale de trafic peut survenir.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;5. Comparatif des Stratégies d&amp;#39;Autoscaling pour les LLM&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th align=&quot;left&quot;&gt;Critère d&amp;#39;Autoscaling&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;HPA Standard (CPU / RAM)&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;HPA Custom (GPU Memory Util)&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;KEDA + Métriques vLLM (KV-Cache &amp;amp; Waiting)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Précision du Signal&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Nulle (non corrélée à l&amp;#39;inférence)&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Trompeuse (VRAM préallouée à 90%)&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Maximale (pression réelle de calcul &amp;amp; file d&amp;#39;attente)&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Réactivité face aux Bursts&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Très lente&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Inefficace&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Instantanée (déclenchement dès &lt;code&gt;requests_waiting &amp;gt; 2&lt;/code&gt;)&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Gestion des Prompts Longs&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Aveugle&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Aveugle&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Native (mesure directe de l&amp;#39;occupation du KV-Cache)&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Optimisation des Coûts GPU&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Faible (risque de crash)&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Faible (sur-provisionnement permanent)&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Optimale (scale-in contrôlé et scale-out chirurgical)&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Intégration OpenShift&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Basique&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Nécessite NVIDIA GPU Operator&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Complète via KEDA Operator + OpenShift Monitoring&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;hr&gt;
&lt;h3&gt;6. Guide d&amp;#39;Implémentation pour les Équipes Plateforme &amp;amp; LLMOps&lt;/h3&gt;
&lt;p&gt;Pour industrialiser l&amp;#39;autoscaling de vos clusters d&amp;#39;inférence en production :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Exposez systématiquement les métriques vLLM :&lt;/strong&gt; Vérifiez que le flag &lt;code&gt;--disable-log-stats&lt;/code&gt; n&amp;#39;est pas activé et que le port de métriques est accessible par votre ServiceMonitor.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Combinez toujours deux déclencheurs :&lt;/strong&gt; Utilisez conjointement la pression de cache (&lt;code&gt;gpu_cache_usage_factor&lt;/code&gt;) pour absorber les prompts volumineux et la file d&amp;#39;attente (&lt;code&gt;num_requests_waiting&lt;/code&gt;) pour les rafales d&amp;#39;utilisateurs simultanés.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Paramétrez des alertes sur le temps de réponse (TTFT) :&lt;/strong&gt; Si la latence médiane au premier token dépasse 800 ms, ajustez les seuils de déclenchement du ScaledObject pour être plus agressif sur le scale-out.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Automatisez le déploiement via GitOps (ArgoCD) :&lt;/strong&gt; Déclarez vos &lt;code&gt;ScaledObject&lt;/code&gt; et &lt;code&gt;ServiceMonitor&lt;/code&gt; dans vos dépôts d&amp;#39;infrastructure pour un versioning rigoureux.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h3&gt;Maîtrisez l&amp;#39;Ingénierie des Systèmes d&amp;#39;Inférence IA avec Aperta Scientia&lt;/h3&gt;
&lt;p&gt;La mise en production de modèles de fondation à grande échelle exige une double expertise : la maîtrise de l&amp;#39;orchestration Cloud-Native Kubernetes et l&amp;#39;optimisation fine des moteurs d&amp;#39;inférence GenAI.&lt;/p&gt;
&lt;p&gt;Aperta Scientia prépare vos ingénieurs aux architectures d&amp;#39;IA les plus exigeantes :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;/curriculums/as300&quot; &gt;AS300 — AI Platform Engineer&lt;/a&gt;&lt;/strong&gt; : Le cursus d&amp;#39;élite de 3 mois pour maîtriser le déploiement d&amp;#39;&lt;strong&gt;OpenShift AI (RHOAI)&lt;/strong&gt;, l&amp;#39;optimisation des moteurs &lt;strong&gt;vLLM&lt;/strong&gt;, l&amp;#39;autoscaling avec &lt;strong&gt;KEDA&lt;/strong&gt;, le serving déclaratif avec &lt;strong&gt;KServe&lt;/strong&gt;, les bases vectorielles &lt;strong&gt;Milvus&lt;/strong&gt;, et la gouvernance avec &lt;strong&gt;TrustyAI&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;/curriculums/as200&quot; &gt;AS200 — New DevOps Platform Engineer&lt;/a&gt;&lt;/strong&gt; : Le cursus fondamental pour concevoir des clusters &lt;strong&gt;Red Hat OpenShift&lt;/strong&gt; résilients, automatiser en &lt;strong&gt;GitOps (ArgoCD)&lt;/strong&gt;, configurer l&amp;#39;observabilité &lt;strong&gt;Prometheus / Thanos&lt;/strong&gt;, et orchestrer le multi-cluster avec &lt;strong&gt;RHACM&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><media:content url="https://aperta.io/images/technologies/vllm.png" medium="image" type="image/png"/><media:thumbnail url="https://aperta.io/images/technologies/vllm.png"/><webfeeds:featuredImage>https://aperta.io/images/technologies/vllm.png</webfeeds:featuredImage><category>Tech Radar</category><category>AI Infrastructure</category><category>Kubernetes &amp; OpenShift</category><category>LLMOps</category><author>Aperta Intelligence Lab</author><enclosure url="https://aperta.io/images/technologies/vllm.png" length="0" type="image/png"/></item><item><title>Model Context Protocol (MCP) sur OpenShift : L&apos;Architecture Sécurisée pour Connecter vos Agents IA au SI d&apos;Entreprise</title><link>https://aperta.io/fr/radar/2026-09-13-model-context-protocol-mcp-securite-agents-ia-openshift/</link><guid isPermaLink="true">https://aperta.io/fr/radar/2026-09-13-model-context-protocol-mcp-securite-agents-ia-openshift/</guid><description>Guide d&apos;architecture complet pour déployer et sécuriser le Model Context Protocol (MCP) sur Kubernetes et OpenShift : mTLS, RBAC, inspection eBPF avec RHACS et intégration OpenShift AI.</description><pubDate>Sun, 13 Sep 2026 08:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://aperta.io/images/technologies/openshift-ai.png&quot; alt=&quot;Model Context Protocol (MCP) sur OpenShift : L&apos;Architecture Sécurisée pour Connecter vos Agents IA au SI d&apos;Entreprise&quot; style=&quot;max-width: 100%; height: auto; border-radius: 12px; margin-bottom: 20px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;L&amp;#39;avènement des &lt;strong&gt;systèmes d&amp;#39;agents autonomes&lt;/strong&gt; (&lt;em&gt;agentic workflows&lt;/em&gt;) en entreprise marque une rupture fondamentale : les modèles de fondation (LLMs) ne se contentent plus de générer du texte, ils agissent directement sur l&amp;#39;environnement opérationnel en exécutant des actions (&lt;em&gt;tool calling&lt;/em&gt;), en interrogeant des bases de données de production, en déclenchant des pipelines GitOps ou en modifiant des configurations d&amp;#39;infrastructure.&lt;/p&gt;
&lt;p&gt;Cependant, l&amp;#39;intégration historique des outils reposait sur des connecteurs ad-hoc, des wrappers REST propriétaires et des SDKs dispersés, créant une surface d&amp;#39;attaque critique et un cauchemar de maintenance.&lt;/p&gt;
&lt;p&gt;Le &lt;strong&gt;Model Context Protocol (MCP)&lt;/strong&gt;, désormais standard ouvert plébiscité par l&amp;#39;industrie, résout ce défi en fournissant un protocole universel client-serveur pour exposer du contexte, des prompts et des outils aux agents IA. Mais en environnement d&amp;#39;entreprise régulé (bancaire, santé, défense, industrie), brancher un agent IA sur un serveur MCP ne peut se faire sans une gouvernance d&amp;#39;infrastructure stricte.&lt;/p&gt;
&lt;p&gt;Découvrez comment concevoir, conteneuriser et sécuriser une architecture &lt;strong&gt;MCP Zero-Trust sur Red Hat OpenShift et OpenShift AI (RHOAI)&lt;/strong&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;1. Pourquoi le Model Context Protocol (MCP) Change la Donne&lt;/h3&gt;
&lt;p&gt;Le protocole MCP repose sur une séparation nette entre l&amp;#39;hôte (&lt;em&gt;Host Application&lt;/em&gt; / Agent), le client MCP et les serveurs MCP (&lt;em&gt;MCP Servers&lt;/em&gt;) fournissant les capacités :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Resources (Ressources) :&lt;/strong&gt; Flux de données passifs en lecture seule (fichiers logs, schémas de BDD, métriques Prometheus).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tools (Outils) :&lt;/strong&gt; Fonctions exécutables avec effets de bord contrôlés (requête SQL, rollback de déploiement ArgoCD, génération de ticket Jira).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prompts :&lt;/strong&gt; Modèles d&amp;#39;instructions dynamiques contextualisés par le serveur MCP.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;┌─────────────────────────────────────────────────────────────────────────────┐
│                   Agent IA / Llama Stack / Client MCP                       │
│                     (Pod sur OpenShift AI / RHOAI)                          │
└──────────────────────────────────────┬──────────────────────────────────────┘
                                       │
            Transport Sécurisé (mTLS / HTTP SSE / JSON-RPC 2.0)
                                       │
┌──────────────────────────────────────▼──────────────────────────────────────┐
│                    Passerelle MCP &amp;amp; Ingress Sécurisée                       │
│              (OpenShift Service Mesh / Istio + Envoy Filter)                │
└──────────────┬───────────────────────┬───────────────────────┬──────────────┘
               │                       │                       │
               ▼                       ▼                       ▼
    ┌──────────────────────┐┌──────────────────────┐┌──────────────────────┐
    │ MCP Server: OpenShift││ MCP Server: Database ││  MCP Server: GitOps  │
    │  API &amp;amp; Cluster Ops   ││    (PostgreSQL)      ││   (ArgoCD / Tekton)  │
    └──────────────────────┘└──────────────────────┘└──────────────────────┘
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Contrairement au protocole &lt;code&gt;stdio&lt;/code&gt; conçu pour des environnements postes de travail (&lt;em&gt;workstations&lt;/em&gt;), l&amp;#39;architecture cloud-native d&amp;#39;entreprise impose le transport &lt;strong&gt;HTTP avec Server-Sent Events (SSE)&lt;/strong&gt; ou &lt;strong&gt;gRPC/WebSocket&lt;/strong&gt;, encapsulé dans un maillage de services Kubernetes.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;2. Risques de Sécurité et Menaces Spécifiques aux Serveurs MCP&lt;/h3&gt;
&lt;p&gt;Brancher des agents autonomes sur des serveurs d&amp;#39;outils introduit des vulnérabilités critiques répertoriées dans l&amp;#39;OWASP Top 10 for LLMs :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Injection de Prompts Indirecte (&lt;em&gt;Indirect Prompt Injection&lt;/em&gt;) :&lt;/strong&gt; Un contenu non vérifié ingéré via une &lt;em&gt;Resource&lt;/em&gt; MCP détourne les instructions du modèle pour invoquer des &lt;em&gt;Tools&lt;/em&gt; destructeurs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Élévation de Privilèges par Rebond (&lt;em&gt;Privilege Escalation&lt;/em&gt;) :&lt;/strong&gt; L&amp;#39;agent dispose d&amp;#39;un jeton de service sur-dimensionné lui permettant d&amp;#39;exécuter des actions d&amp;#39;administration non autorisées à l&amp;#39;utilisateur final.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fuite de Données Sensibles (&lt;em&gt;Data Exfiltration&lt;/em&gt;) :&lt;/strong&gt; Exfiltration de secrets d&amp;#39;infrastructure via des paramètres d&amp;#39;outils externes ou des requêtes réseau non supervisées.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Déni de Service &amp;amp; Boucles Infinies (&lt;em&gt;Tool Execution Loops&lt;/em&gt;) :&lt;/strong&gt; Exécution récursive incontrôlée d&amp;#39;appels d&amp;#39;outils saturant les backends.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h3&gt;3. Architecture de Déploiement Sécurisée sur Red Hat OpenShift&lt;/h3&gt;
&lt;p&gt;Pour neutraliser ces menaces, l&amp;#39;implémentation MCP en entreprise repose sur 4 piliers d&amp;#39;infrastructure :&lt;/p&gt;
&lt;h4&gt;A. Isolation Réseau et Authentification mTLS (OpenShift Service Mesh)&lt;/h4&gt;
&lt;p&gt;Chaque serveur MCP est déployé dans son propre &lt;code&gt;Namespace&lt;/code&gt; dédié, isolé par des &lt;code&gt;NetworkPolicies&lt;/code&gt; strictes et intégré dans &lt;strong&gt;OpenShift Service Mesh (Istio)&lt;/strong&gt; avec chiffrement mutuel mTLS et injection de Sidecars Envoy.&lt;/p&gt;
&lt;h4&gt;B. Authentification OAuth2 / OIDC &amp;amp; Token Exchange&lt;/h4&gt;
&lt;p&gt;L&amp;#39;agent ne transmet jamais ses propres identifiants d&amp;#39;infrastructure. Une passerelle d&amp;#39;authentification (&lt;strong&gt;Red Hat Single Sign-On / Keycloak&lt;/strong&gt;) procède à un échange de jetons (&lt;em&gt;Token Exchange RFC 8693&lt;/em&gt;) pour restreindre la portée (&lt;em&gt;scope&lt;/em&gt;) du jeton transmis au serveur MCP aux seuls droits de l&amp;#39;utilisateur ayant sollicité l&amp;#39;agent.&lt;/p&gt;
&lt;h4&gt;C. Surveillance eBPF à l&amp;#39;Exécution (Red Hat Advanced Cluster Security - RHACS)&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;RHACS&lt;/strong&gt; surveille en temps réel les appels système (&lt;code&gt;syscalls&lt;/code&gt;) générés par les conteneurs de serveurs MCP via ses sondes eBPF. Tout fork inattendu, ouverture de socket réseau vers une IP publique non déclarée ou modification de fichier binaire déclenche un arrêt instantané du Pod (&lt;em&gt;Process Baseline Enforcement&lt;/em&gt;).&lt;/p&gt;
&lt;h4&gt;D. Filtrage des Entrées/Sorties avec Guardrails (TrustyAI &amp;amp; Granite Guardian)&lt;/h4&gt;
&lt;p&gt;Avant que l&amp;#39;argument d&amp;#39;un outil ne soit envoyé au serveur MCP ou que la réponse ne soit réinjectée dans le contexte du LLM, une couche de validation évalue la toxicité, la conformité PII (données personnelles) et l&amp;#39;absence de tentatives d&amp;#39;injection.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;4. Manifestes Kubernetes de Production : Déployer un Serveur MCP Sécurisé&lt;/h3&gt;
&lt;p&gt;Voici le déploiement déclaratif d&amp;#39;un serveur MCP PostgreSQL hautement sécurisé sur OpenShift :&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;apiVersion: apps/v1
kind: Deployment
metadata:
  name: mcp-server-postgres
  namespace: ai-agents-prod
  labels:
    app.kubernetes.io/name: mcp-server-postgres
    app.kubernetes.io/part-of: agentic-platform
spec:
  replicas: 2
  selector:
    matchLabels:
      app: mcp-server-postgres
  template:
    metadata:
      labels:
        app: mcp-server-postgres
        sidecar.istio.io/inject: &amp;quot;true&amp;quot;
    spec:
      serviceAccountName: mcp-postgres-sa
      securityContext:
        runAsNonRoot: true
        seccompProfile:
          type: RuntimeDefault
      containers:
      - name: mcp-server
        image: registry.internal.aperta.ch/ai/mcp-postgres-sse:1.2.0
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 8080
          name: http-sse
        env:
        - name: MCP_TRANSPORT
          value: &amp;quot;sse&amp;quot;
        - name: DATABASE_URL
          valueFrom:
            secretKeyRef:
              name: pg-readonly-credentials
              key: connection_string
        securityContext:
          allowPrivilegeEscalation: false
          readOnlyRootFilesystem: true
          capabilities:
            drop:
            - ALL
        resources:
          limits:
            cpu: &amp;quot;500m&amp;quot;
            memory: &amp;quot;512Mi&amp;quot;
          requests:
            cpu: &amp;quot;100m&amp;quot;
            memory: &amp;quot;128Mi&amp;quot;
        livenessProbe:
          httpGet:
            path: /healthz
            port: 8080
          initialDelaySeconds: 5
          periodSeconds: 10
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Et la politique réseau associée interdisant tout trafic sortant non autorisé :&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: mcp-server-postgres-isolation
  namespace: ai-agents-prod
spec:
  podSelector:
    matchLabels:
      app: mcp-server-postgres
  policyTypes:
  - Ingress
  - Egress
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app.kubernetes.io/name: rhoai-llama-stack-agent
    ports:
    - protocol: TCP
      port: 8080
  egress:
  - to:
    - namespaceSelector:
        matchLabels:
          kubernetes.io/metadata.name: database-prod
    ports:
    - protocol: TCP
      port: 5432
  - to: # Autoriser uniquement le DNS interne OpenShift
    - namespaceSelector: {}
      podSelector:
        matchLabels:
          k8s-app: kube-dns
    ports:
    - protocol: UDP
      port: 53
&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h3&gt;5. Comparatif des Approches d&amp;#39;Intégration d&amp;#39;Outils pour Agents IA&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th align=&quot;left&quot;&gt;Critère&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;API REST / Plugins Sur-Mesure&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;Serveur MCP Local (Desktop stdio)&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;MCP Cloud-Native sur OpenShift &amp;amp; RHOAI&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Standardisation&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Faible (spécifique à chaque framework LangChain/LlamaIndex)&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Élevée (spécification MCP JSON-RPC)&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Maximale (spécification MCP universelle + intégration Llama Stack)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Sécurité Réseau&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Disparate (souvent HTTP sans mTLS)&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Aucune (exécution sur le poste utilisateur)&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Chiffrement mTLS mûr, Service Mesh, NetworkPolicies Zero-Trust&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Audit &amp;amp; Contrôle d&amp;#39;Accès&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Jeton statique partagé&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Droits du compte utilisateur local&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Token Exchange OAuth2, RBAC Kubernetes, Process Baselines RHACS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Scalabilité &amp;amp; Résilience&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Gestion manuelle&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Mono-utilisateur&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Haute disponibilité Kubernetes, réplication automatique, auto-healing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Gouvernance &amp;amp; Guardrails&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Code applicatif sur mesure&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Absent&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Inspection TrustyAI, modération Granite Guardian et traçabilité OpenTelemetry&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;hr&gt;
&lt;h3&gt;6. Guide d&amp;#39;Implémentation pour les Équipes Plateforme &amp;amp; Sécurité&lt;/h3&gt;
&lt;p&gt;Pour industrialiser vos serveurs MCP en production :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Bannissez le mode stdio en production :&lt;/strong&gt; Utilisez systématiquement le transport SSE sur HTTPS avec terminaison TLS contrôlée.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Appliquez le principe du moindre privilège aux bases de données :&lt;/strong&gt; Le serveur MCP dédié aux requêtes analytiques ne doit disposer que d&amp;#39;un utilisateur SQL en lecture seule (&lt;code&gt;SELECT&lt;/code&gt; uniquement sur une vue ou un schéma anonymisé).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tracez chaque exécution d&amp;#39;outil avec OpenTelemetry :&lt;/strong&gt; Corrélez le &lt;code&gt;TraceID&lt;/code&gt; de la requête utilisateur avec l&amp;#39;appel d&amp;#39;outil MCP pour garantir une auditabilité complète en cas d&amp;#39;incident.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Isolez les serveurs MCP exécutant du code :&lt;/strong&gt; Pour les serveurs MCP d&amp;#39;exécution Python/Bash (&lt;em&gt;code interpreter&lt;/em&gt;), utilisez des moteurs de conteneurs sandboxed comme &lt;strong&gt;Kata Containers&lt;/strong&gt; ou &lt;strong&gt;OpenShift Virtualization&lt;/strong&gt; afin d&amp;#39;empêcher toute fuite vers le noyau de l&amp;#39;hôte.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h3&gt;Industrialisez vos Architectures d&amp;#39;Agents IA avec Aperta Scientia&lt;/h3&gt;
&lt;p&gt;La sécurisation et l&amp;#39;orchestration des agents IA d&amp;#39;entreprise nécessitent une synergie parfaite entre les compétences Cloud-Native Kubernetes et l&amp;#39;ingénierie des systèmes d&amp;#39;IA.&lt;/p&gt;
&lt;p&gt;Aperta Scientia prépare vos équipes aux défis d&amp;#39;infrastructure de pointe :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;/curriculums/as300&quot; &gt;AS300 — AI Platform Engineer&lt;/a&gt;&lt;/strong&gt; : Le cursus d&amp;#39;élite de 3 mois pour maîtriser le déploiement d&amp;#39;&lt;strong&gt;OpenShift AI (RHOAI)&lt;/strong&gt;, l&amp;#39;intégration sécurisée du &lt;strong&gt;Model Context Protocol (MCP)&lt;/strong&gt;, le serving LLM avec &lt;strong&gt;vLLM&lt;/strong&gt;, les bases vectorielles &lt;strong&gt;Milvus&lt;/strong&gt;, et la gouvernance avec &lt;strong&gt;TrustyAI&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;/curriculums/as200&quot; &gt;AS200 — New DevOps Platform Engineer&lt;/a&gt;&lt;/strong&gt; : Le cursus fondamental pour concevoir des clusters &lt;strong&gt;Red Hat OpenShift&lt;/strong&gt; résilients, automatiser en &lt;strong&gt;GitOps (ArgoCD)&lt;/strong&gt;, sécuriser avec &lt;strong&gt;RHACS&lt;/strong&gt; et administrer les réseaux multi-clusters avec &lt;strong&gt;RHACM&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><media:content url="https://aperta.io/images/technologies/openshift-ai.png" medium="image" type="image/png"/><media:thumbnail url="https://aperta.io/images/technologies/openshift-ai.png"/><webfeeds:featuredImage>https://aperta.io/images/technologies/openshift-ai.png</webfeeds:featuredImage><category>Tech Radar</category><category>AI Infrastructure</category><category>GenAI &amp; Agentic Systems</category><author>Aperta Intelligence Lab</author><enclosure url="https://aperta.io/images/technologies/openshift-ai.png" length="0" type="image/png"/></item><item><title>Llama Stack sur Red Hat OpenShift AI : L&apos;Architecture Standardisée pour Déployer des Agents GenAI et du RAG en Entreprise</title><link>https://aperta.io/fr/radar/2026-09-12-llama-stack-rhoai-architecture-agents-ia-rag-entreprise/</link><guid isPermaLink="true">https://aperta.io/fr/radar/2026-09-12-llama-stack-rhoai-architecture-agents-ia-rag-entreprise/</guid><description>Guide complet d&apos;architecture pour standardiser et déployer des agents GenAI d&apos;entreprise avec Llama Stack, vLLM, Milvus et OpenShift AI : API unifiée, Tool Calling, Guardrails et Portabilité.</description><pubDate>Sat, 12 Sep 2026 08:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://aperta.io/images/technologies/openshift-ai.png&quot; alt=&quot;Llama Stack sur Red Hat OpenShift AI : L&apos;Architecture Standardisée pour Déployer des Agents GenAI et du RAG en Entreprise&quot; style=&quot;max-width: 100%; height: auto; border-radius: 12px; margin-bottom: 20px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;L&amp;#39;industrialisation des applications d&amp;#39;intelligence artificielle générative traverse en 2026 une phase de mutation critique. Alors que les entreprises passent de simples interfaces de complétion (&lt;em&gt;chatbots&lt;/em&gt;) à des &lt;strong&gt;systèmes d&amp;#39;agents autonomes multi-étapes&lt;/strong&gt; (&lt;em&gt;agentic workflows&lt;/em&gt;) connectés à leurs bases de données, SI et APIs métiers, elles se heurtent à une fragmentation technologique insoutenable : multiplication des SDKs propriétaires, couplage fort avec des fournisseurs de cloud spécifiques, incohérence des formats de &lt;em&gt;tool calling&lt;/em&gt; et absence de standardisation des garde-fous de sécurité.&lt;/p&gt;
&lt;p&gt;Pour répondre à ce défi d&amp;#39;interopérabilité et de souveraineté, l&amp;#39;écosystème open source a standardisé une couche pivot : &lt;strong&gt;Llama Stack&lt;/strong&gt;. &lt;/p&gt;
&lt;p&gt;Adopté et intégré nativement dans &lt;strong&gt;Red Hat OpenShift AI (RHOAI)&lt;/strong&gt; via un opérateur Kubernetes dédié, Llama Stack fournit une spécification d&amp;#39;API universelle et des distributions modulaires pour orchestrer l&amp;#39;ensemble du cycle de vie des agents d&amp;#39;entreprise : de l&amp;#39;inférence accélérée à la recherche vectorielle, en passant par l&amp;#39;exécution sécurisée d&amp;#39;outils et le contrôle éthique/sécuritaire.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;1. Le Problème de l&amp;#39;« Agent Sprawl » et l&amp;#39;Impératif d&amp;#39;une Spécification Unifiée&lt;/h3&gt;
&lt;p&gt;Construire des agents IA résilients en environnement bancaire, industriel ou public exige d&amp;#39;assembler plusieurs briques complexes :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Moteur d&amp;#39;Inférence (&lt;em&gt;Inference Engine&lt;/em&gt;) :&lt;/strong&gt; Servir des modèles de fondation open source (IBM Granite 3.0/3.1, Llama 3.3, Mistral) avec un débit maximal via &lt;strong&gt;vLLM&lt;/strong&gt; ou &lt;strong&gt;TGI&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mémoire &amp;amp; RAG Vectoriel (&lt;em&gt;Vector IO&lt;/em&gt;) :&lt;/strong&gt; Interroger des bases vectorielles scalables (&lt;strong&gt;Milvus&lt;/strong&gt;, &lt;strong&gt;pgvector&lt;/strong&gt;) avec recherche hybride.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Exécution d&amp;#39;Outils (&lt;em&gt;Tool Runtime / MCP&lt;/em&gt;) :&lt;/strong&gt; Permettre au modèle d&amp;#39;invoquer des fonctions et des protocoles de contexte (Model Context Protocol).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sécurité &amp;amp; Modération (&lt;em&gt;Safety / Guardrails&lt;/em&gt;) :&lt;/strong&gt; Filtrer les attaques par injection de prompt et vérifier la conformité via &lt;strong&gt;Granite Guardian&lt;/strong&gt;, &lt;strong&gt;Llama Guard&lt;/strong&gt; et &lt;strong&gt;TrustyAI&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Évaluation &amp;amp; Télémétrie (&lt;em&gt;Eval &amp;amp; Telemetry&lt;/em&gt;) :&lt;/strong&gt; Tracer chaque étape de raisonnement et scorer la fidélité documentaire.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Sans standard, chaque équipe de développement réimplémente sa propre colle logicielle, créant une dette technique massive et empêchant la portabilité entre clusters cloud-native privés et environnements de débordement.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;┌─────────────────────────────────────────────────────────────────────────────┐
│                    Applications Entreprise &amp;amp; Frameworks IA                  │
│             (LangChain, LlamaIndex, CrewAI, AutoGen, Clients Web)           │
└──────────────────────────────────────┬──────────────────────────────────────┘
                                       │
                                       ▼  (API Unifiée Llama Stack REST/gRPC)
┌─────────────────────────────────────────────────────────────────────────────┐
│                   Llama Stack Distribution (OpenShift AI)                   │
├──────────────┬──────────────┬──────────────┬──────────────┬─────────────────┤
│  Inference   │  Vector IO   │ Tool Runtime │    Safety    │   Eval &amp;amp; Telemetry
│   (vLLM)     │   (Milvus)   │    (MCP)     │ (TrustyAI)   │ (OpenTelemetry) │
└──────┬───────┴──────┬───────┴──────┬───────┴──────┬───────┴────────┬────────┘
       │              │              │              │                │
       ▼              ▼              ▼              ▼                ▼
┌─────────────────────────────────────────────────────────────────────────────┐
│               Infrastructure Souveraine Red Hat OpenShift                   │
│        (Nœuds GPU H100/L40S, Ceph ODF, OpenShift GitOps, RHACS)             │
└─────────────────────────────────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h3&gt;2. Architecture et Composants Clés de Llama Stack&lt;/h3&gt;
&lt;p&gt;Llama Stack structure l&amp;#39;interaction avec les systèmes d&amp;#39;IA selon des interfaces de haut niveau standardisées :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;/inference&lt;/code&gt; :&lt;/strong&gt; Interface standardisée pour la complétion, le streaming de tokens et les embeddings, faisant abstraction du moteur sous-jacent (vLLM, Ollama, TGI).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;/vector_io&lt;/code&gt; :&lt;/strong&gt; Gestion unifiée des collections d&amp;#39;index, de l&amp;#39;ingestion de segments (&lt;em&gt;chunks&lt;/em&gt;) et de la recherche vectorielle dense/sparse.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;/agents&lt;/code&gt; :&lt;/strong&gt; Boucle de raisonnement agentique complète (&lt;em&gt;ReAct&lt;/em&gt;, &lt;em&gt;Plan-and-Solve&lt;/em&gt;), maintenant la mémoire conversationnelle et orchestrant automatiquement les appels d&amp;#39;outils.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;/safety&lt;/code&gt; :&lt;/strong&gt; Application systématique de politiques de sécurité pré-inférence (requêtes malveillantes, PII) et post-inférence (hallucinations, fuites de données confidentielles).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;/telemetry&lt;/code&gt; :&lt;/strong&gt; Exportation native des traces d&amp;#39;exécution au format &lt;strong&gt;OpenTelemetry GenAI Semantic Conventions&lt;/strong&gt;, corrélant les requêtes utilisateurs aux métriques d&amp;#39;infrastructure GPU.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;3. Déploiement Cloud-Native : L&amp;#39;Opérateur Llama Stack sur OpenShift AI&lt;/h3&gt;
&lt;p&gt;Sur Red Hat OpenShift AI, le déploiement d&amp;#39;une distribution Llama Stack s&amp;#39;effectue de manière totalement déclarative via un Custom Resource Definition (CRD) &lt;code&gt;LlamaStackDistribution&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;L&amp;#39;opérateur instancie le serveur Llama Stack, configure automatiquement le routage vers les &lt;em&gt;ServingRuntimes&lt;/em&gt; KServe existants, provisionne les connexions aux clusters Milvus sécurisés par TLS et injecte les politiques de sécurité du cluster.&lt;/p&gt;
&lt;h4&gt;Manifeste GitOps : &lt;code&gt;llamastack-distribution.yaml&lt;/code&gt;&lt;/h4&gt;
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;apiVersion: ai.openshift.io/v1alpha1
kind: LlamaStackDistribution
metadata:
  name: enterprise-agent-stack
  namespace: genai-production
  labels:
    app.kubernetes.io/part-of: rhoai-agents
    apertascientia.io/curriculum: as300
spec:
  replicas: 3
  distributionImage: &amp;quot;registry.redhat.io/rhoai/llama-stack-server-rhel9:v3.3&amp;quot;
  
  # Configuration des fournisseurs d&amp;#39;infrastructures
  providers:
    # 1. Fournisseur d&amp;#39;Inférence (vLLM via KServe)
    inference:
      - providerType: vllm
        endpoint: &amp;quot;http://granite-3-8b-instruct.genai-production.svc.cluster.local:8000/v1&amp;quot;
        models:
          - name: &amp;quot;ibm-granite/granite-3.0-8b-instruct&amp;quot;
            aliases: [&amp;quot;default-llm&amp;quot;, &amp;quot;primary-agent&amp;quot;]
          - name: &amp;quot;nomic-ai/nomic-embed-text-v1.5&amp;quot;
            aliases: [&amp;quot;default-embedder&amp;quot;]

    # 2. Fournisseur de Stockage Vectoriel (Milvus ODF)
    vectorIO:
      - providerType: milvus
        endpoint: &amp;quot;milvus-cluster.vector-db.svc.cluster.local:19530&amp;quot;
        credentialsSecretRef:
          name: milvus-tls-secret

    # 3. Fournisseur de Sécurité &amp;amp; Guardrails (TrustyAI / Llama Guard)
    safety:
      - providerType: trustyai-guardrails
        endpoint: &amp;quot;http://guardrails-service.rhoai-governance.svc.cluster.local:8080&amp;quot;
        shieldRules:
          - &amp;quot;prompt-injection-detection&amp;quot;
          - &amp;quot;pii-masking&amp;quot;
          - &amp;quot;toxic-content-filter&amp;quot;

    # 4. Observabilité &amp;amp; Télémétrie
    telemetry:
      - providerType: opentelemetry
        collectorEndpoint: &amp;quot;otel-collector.observability.svc.cluster.local:4317&amp;quot;

  # Tolérances et ressources CPU/Mémoire pour le contrôleur d&amp;#39;agents
  resources:
    requests:
      cpu: &amp;quot;4000m&amp;quot;
      memory: &amp;quot;8Gi&amp;quot;
    limits:
      cpu: &amp;quot;8000m&amp;quot;
      memory: &amp;quot;16Gi&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h3&gt;4. Exemple Pratique : Développer un Agent d&amp;#39;Entreprise avec le SDK Llama Stack&lt;/h3&gt;
&lt;p&gt;Grâce à cette abstraction standardisée, le code applicatif développé par les data scientists et ingénieurs logiciels devient totalement découplé de la topologie matérielle :&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-python&quot;&gt;from llama_stack_client import LlamaStackClient
from llama_stack_client.types.agent_create_params import AgentConfig

# Connexion au point de terminaison Llama Stack sécurisé sur OpenShift
client = LlamaStackClient(
    base_url=&amp;quot;https://llama-stack.apps.ocp-prod.apertascientia.internal&amp;quot;,
    api_key=&amp;quot;Bearer &amp;lt;service-account-token&amp;gt;&amp;quot;
)

# 1. Définition de l&amp;#39;Agent et de ses Outils
agent_config = AgentConfig(
    model=&amp;quot;default-llm&amp;quot;,
    instructions=&amp;quot;&amp;quot;&amp;quot;Vous êtes l&amp;#39;agent de diagnostic technique d&amp;#39;Aperta Scientia. 
Utilisez la recherche vectorielle pour consulter la documentation officielle OpenShift
et exécutez les outils autorisés pour analyser l&amp;#39;état des clusters.&amp;quot;&amp;quot;&amp;quot;,
    tools=[
        {
            &amp;quot;type&amp;quot;: &amp;quot;vector_io&amp;quot;,
            &amp;quot;collection_id&amp;quot;: &amp;quot;rh-knowledge-base-v2&amp;quot;,
            &amp;quot;top_k&amp;quot;: 4
        },
        {
            &amp;quot;type&amp;quot;: &amp;quot;custom_tool&amp;quot;,
            &amp;quot;name&amp;quot;: &amp;quot;check_gpu_allocation&amp;quot;,
            &amp;quot;description&amp;quot;: &amp;quot;Vérifie les métriques d&amp;#39;utilisation GPU (DRA/MIG) d&amp;#39;un namespace&amp;quot;,
            &amp;quot;parameters&amp;quot;: {
                &amp;quot;namespace&amp;quot;: {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;description&amp;quot;: &amp;quot;Nom du namespace OpenShift&amp;quot;}
            }
        }
    ],
    safety_shields=[&amp;quot;prompt-injection-detection&amp;quot;, &amp;quot;pii-masking&amp;quot;],
    temperature=0.2
)

# Création de l&amp;#39;instance d&amp;#39;agent
session = client.agents.create_session(agent_config=agent_config)

# 2. Exécution d&amp;#39;une interaction utilisateur avec boucle de Tool Calling automatique
user_query = &amp;quot;Pourquoi le pod d&amp;#39;inférence vLLM dans &amp;#39;genai-production&amp;#39; est en OOM ?&amp;quot;
response_stream = client.agents.create_turn(
    session_id=session.session_id,
    messages=[{&amp;quot;role&amp;quot;: &amp;quot;user&amp;quot;, &amp;quot;content&amp;quot;: user_query}],
    stream=True
)

for event in response_stream:
    if event.type == &amp;quot;step_progress&amp;quot;:
        print(f&amp;quot;⚙️ [Action Agent] : {event.step_type} -&amp;gt; {event.detail}&amp;quot;)
    elif event.type == &amp;quot;token&amp;quot;:
        print(event.delta, end=&amp;quot;&amp;quot;, flush=True)
&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h3&gt;5. Avantages Majeurs pour l&amp;#39;Ingénierie de Plateforme IA&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th align=&quot;left&quot;&gt;Dimension&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;Approche Artisanale (Multi-SDKs)&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;Approche Llama Stack sur OpenShift AI&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Portabilité&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Forte adhérence aux APIs des hyperscalers (Bedrock, Vertex, Azure OpenAI).&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;100 % agnostique du modèle et du cloud. Exécutable sur cluster bare-metal souverain ou hybride.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Gouvernance &amp;amp; Sécurité&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Vérifications appliquées au niveau de chaque application (risque d&amp;#39;oubli).&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Garde-fous centralisés (&lt;em&gt;Guardrails-as-a-Platform&lt;/em&gt;) appliqués en amont de tout serving.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Gestion du Tool Calling&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Formats JSON non standardisés selon les familles de modèles (Llama vs Mistral vs Qwen).&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Normalisation transparente du protocole de requêtes d&amp;#39;outils et intégration MCP native.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Observabilité&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Tracing hétérogène, logs applicatifs dispersés et métriques GPU isolées.&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Traces OpenTelemetry corrélées (latence d&amp;#39;inférence, coût token, mémoire vectorielle).&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;hr&gt;
&lt;h3&gt;6. Bonnes Pratiques d&amp;#39;Exploitation en Production&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Isolation Réseau et Service Mesh :&lt;/strong&gt; Encapsulez le serveur Llama Stack et ses dépendances (vLLM, Milvus) dans un maillage &lt;strong&gt;OpenShift Service Mesh (Istio)&lt;/strong&gt; avec chiffrement mTLS strict et autorisation RBAC par ServiceAccount.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gestion fine du KV Cache vLLM :&lt;/strong&gt; Allouez au minimum 20 % de la VRAM GPU pour le KV Cache dynamique afin de supporter les historiques de conversation étendus générés par les boucles d&amp;#39;agents multi-tours.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Audit continu via RHACS :&lt;/strong&gt; Surveillez l&amp;#39;intégrité des conteneurs exécutant des outils dynamiques avec &lt;strong&gt;Red Hat Advanced Cluster Security (ACS)&lt;/strong&gt; pour bloquer toute élévation de privilèges ou communication non déclarée.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h3&gt;Maîtrisez le Déploiement d&amp;#39;Agents GenAI et de Plateformes IA avec Aperta Scientia&lt;/h3&gt;
&lt;p&gt;La mise en œuvre d&amp;#39;architectures d&amp;#39;agents d&amp;#39;entreprise exige une double compétence : la rigueur des infrastructures Kubernetes cloud-native et la maîtrise approfondie des pipelines LLMOps modernes.&lt;/p&gt;
&lt;p&gt;Aperta Scientia forme les experts de l&amp;#39;infrastructure et de la GenAI d&amp;#39;entreprise à travers deux parcours d&amp;#39;excellence :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;/curriculums/as300&quot; &gt;AS300 — AI Platform Engineer&lt;/a&gt;&lt;/strong&gt; : Le cursus de référence de 3 mois pour maîtriser le déploiement de &lt;strong&gt;Red Hat OpenShift AI (RHOAI)&lt;/strong&gt;, l&amp;#39;orchestration &lt;strong&gt;Llama Stack&lt;/strong&gt;, le serving haute performance avec &lt;strong&gt;vLLM&lt;/strong&gt;, les bases vectorielles &lt;strong&gt;Milvus&lt;/strong&gt;, et le fine-tuning avec &lt;strong&gt;InstructLab&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;/curriculums/as200&quot; &gt;AS200 — New DevOps Platform Engineer&lt;/a&gt;&lt;/strong&gt; : Le cursus socle pour concevoir, sécuriser et automatiser les clusters &lt;strong&gt;Red Hat OpenShift&lt;/strong&gt;, maîtriser le &lt;strong&gt;GitOps (ArgoCD)&lt;/strong&gt;, les pipelines &lt;strong&gt;Tekton&lt;/strong&gt; et la gouvernance multi-cluster avec &lt;strong&gt;ACM&lt;/strong&gt; et &lt;strong&gt;ACS&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><media:content url="https://aperta.io/images/technologies/openshift-ai.png" medium="image" type="image/png"/><media:thumbnail url="https://aperta.io/images/technologies/openshift-ai.png"/><webfeeds:featuredImage>https://aperta.io/images/technologies/openshift-ai.png</webfeeds:featuredImage><category>Tech Radar</category><category>AI Infrastructure</category><category>GenAI &amp; Agentic Systems</category><author>Aperta Intelligence Lab</author><enclosure url="https://aperta.io/images/technologies/openshift-ai.png" length="0" type="image/png"/></item><item><title>Tech Radar &amp; Veille Hebdo : Tekton PaC, Dynamic Resource Allocation GPU, KubeRay &amp; Milvus ODF</title><link>https://aperta.io/fr/radar/2026-09-11-tech-radar-tekton-gpu-dra-kuberay-oadp-milvus/</link><guid isPermaLink="true">https://aperta.io/fr/radar/2026-09-11-tech-radar-tekton-gpu-dra-kuberay-oadp-milvus/</guid><description>Synthèse hebdomadaire de la veille technologique Aperta : supply chain security Sigstore, allocation dynamique GPU sous Kubernetes, clusters Ray élastiques et vector store ODF.</description><pubDate>Fri, 11 Sep 2026 15:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://aperta.io/images/technologies/tekton.png&quot; alt=&quot;Tech Radar &amp; Veille Hebdo : Tekton PaC, Dynamic Resource Allocation GPU, KubeRay &amp; Milvus ODF&quot; style=&quot;max-width: 100%; height: auto; border-radius: 12px; margin-bottom: 20px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Retrouvez les faits marquants de la veille technologique menée par le laboratoire d&amp;#39;intelligence d&amp;#39;Aperta Scientia pour les cursus &lt;strong&gt;AS200 (DevOps Platform Engineer)&lt;/strong&gt; et &lt;strong&gt;AS300 (AI Platform Engineer)&lt;/strong&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;1. OpenShift Pipelines (Tekton) &amp;amp; Pipelines-as-Code — Supply Chain Security&lt;/h3&gt;
&lt;p&gt;Nouvelles fonctionnalités de sécurisation de la chaîne logicielle sous OpenShift Pipelines (Tekton Core + Pipelines-as-Code).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Points clés :&lt;/strong&gt; Intégration native de la signature cryptographique Sigstore/Cosign et génération automatisée de SBOM (Software Bill of Materials) conformes SPDX/CycloneDX au sein des builds conteneurs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Impact Cursus AS200 :&lt;/strong&gt; Renforce le module &lt;em&gt;CI/CD Cloud-Native, Automatisation &amp;amp; Sécurité Applicative (DO288 / DO380)&lt;/em&gt; pour former aux exigences SLSA Niveau 3 et à l&amp;#39;immutabilité des artefacts.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;2. Kubernetes Dynamic Resource Allocation (DRA) &amp;amp; NVIDIA GPU Operator&lt;/h3&gt;
&lt;p&gt;Avancées majeures sur le standard DRA couplé au NVIDIA GPU Operator sous OpenShift.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Points clés :&lt;/strong&gt; Affectation dynamique de fractions de GPU (MIG et Time-Slicing) et gestion fine de la bande passante NVLink sans redémarrage statique des nœuds bare-metal.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Impact Cursus AS300 :&lt;/strong&gt; Module &lt;em&gt;Accélération Matérielle, GPU Orchestration &amp;amp; NFD (AI267)&lt;/em&gt; pour maximiser la densité des ServingRuntimes vLLM.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;3. KubeRay &amp;amp; Ray Cluster Orchestration sur Red Hat OpenShift AI&lt;/h3&gt;
&lt;p&gt;Stabilisation de l&amp;#39;opérateur KubeRay pour la gestion de clusters Ray éphémères en entreprise.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Points clés :&lt;/strong&gt; Orchestration élastique pour les calculs distribués (PyTorch DDP, DeepSpeed) et le fine-tuning souverain sans sur-allocation permanente de GPUs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Impact Cursus AS300 :&lt;/strong&gt; Module &lt;em&gt;Calcul Distribué, Orchestration MLOps &amp;amp; Fine-Tuning Souverain (AI267)&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;4. OpenShift API for Data Protection (OADP / Velero) — Reprise d&amp;#39;Activité Stateful&lt;/h3&gt;
&lt;p&gt;Release OADP 1.4 avec support étendu des Data Mover CSI pour le transfert de snapshots vers du stockage objet S3 souverain.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Points clés :&lt;/strong&gt; Restauration granulaire des namespaces critiques, configurations etcd et métadonnées d&amp;#39;opérateurs en cas de sinistre.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Impact Cursus AS200 :&lt;/strong&gt; Module &lt;em&gt;Résilience, Backup/Restore &amp;amp; Continuité d&amp;#39;Activité (DO380 / DO370)&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;5. Milvus Distribué &amp;amp; OpenShift Data Foundation (ODF) — Vector Store Haute Disponibilité&lt;/h3&gt;
&lt;p&gt;Optimisation du déploiement bare-metal de Milvus adossé à Rook-Ceph/ODF pour la persistance des index vectoriels (HNSW/IVF-PQ).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Points clés :&lt;/strong&gt; Latence de recherche sémantique inférieure à 5ms sur des bases dépassant 10 millions de vecteurs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Impact Cursus AS300 :&lt;/strong&gt; Module &lt;em&gt;Architectures RAG Entreprise, Bases Vectorielles &amp;amp; Recherche Sémantique&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;6. Sources &amp;amp; Références Techniques&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tekton CD Project :&lt;/strong&gt; &lt;a href=&quot;https://tekton.dev/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;Tekton Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kubernetes Dynamic Resource Allocation :&lt;/strong&gt; &lt;a href=&quot;https://kubernetes.io/docs/concepts/scheduling-eviction/dynamic-resource-allocation/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;Kubernetes Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;KubeRay on OpenShift :&lt;/strong&gt; &lt;a href=&quot;https://docs.ray.io/en/latest/cluster/kubernetes/index.html&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;Ray Project Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OpenShift API for Data Protection :&lt;/strong&gt; &lt;a href=&quot;https://docs.openshift.com/container-platform/latest/backup_and_restore/application_backup_and_restore/oadp-intro.html&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;Red Hat OADP Docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Milvus Vector Database :&lt;/strong&gt; &lt;a href=&quot;https://milvus.io/docs&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;Milvus Documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><media:content url="https://aperta.io/images/technologies/tekton.png" medium="image" type="image/png"/><media:thumbnail url="https://aperta.io/images/technologies/tekton.png"/><webfeeds:featuredImage>https://aperta.io/images/technologies/tekton.png</webfeeds:featuredImage><category>Tech Radar</category><category>Cloud &amp; DevOps</category><category>AI Infrastructure</category><author>Aperta Intelligence Lab</author><enclosure url="https://aperta.io/images/technologies/tekton.png" length="0" type="image/png"/></item><item><title>Interconnexion Multi-Cluster : RHACM &amp; Submariner pour l&apos;IA Hybride et le Serving Distribué</title><link>https://aperta.io/fr/radar/2026-09-11-rhacm-submariner-multi-cluster-networking-hybrid-ai/</link><guid isPermaLink="true">https://aperta.io/fr/radar/2026-09-11-rhacm-submariner-multi-cluster-networking-hybrid-ai/</guid><description>Comment interconnecter des clusters OpenShift on-premise et cloud via des tunnels WireGuard directs L3/L4 avec RHACM et Submariner.</description><pubDate>Fri, 11 Sep 2026 08:30:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://aperta.io/images/technologies/acm.png&quot; alt=&quot;Interconnexion Multi-Cluster : RHACM &amp; Submariner pour l&apos;IA Hybride et le Serving Distribué&quot; style=&quot;max-width: 100%; height: auto; border-radius: 12px; margin-bottom: 20px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Dans les architectures d&amp;#39;entreprise modernes, l&amp;#39;entraînement et l&amp;#39;inférence des modèles d&amp;#39;IA ne résident plus sur un cluster unique. Les organisations opèrent des topologies hybrides : des nœuds bare-metal GPU haute performance sur site pour le serving souverain, couplés à des clusters cloud managés pour absorber les pics de charge applicatifs.&lt;/p&gt;
&lt;p&gt;Cependant, faire communiquer ces clusters à travers des passerelles Ingress publiques traditionnelles introduit une latence critique, des coûts d&amp;#39;egress prohibitifs et des failles de sécurité majeures. L&amp;#39;association de &lt;strong&gt;Red Hat Advanced Cluster Management (RHACM)&lt;/strong&gt; et de &lt;strong&gt;Submariner&lt;/strong&gt; offre une réponse réseau directe au niveau noyau.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;1. Les limites des passerelles Ingress/Egress en environnement multi-cluster&lt;/h3&gt;
&lt;p&gt;Dans une topologie classique sans maillage réseau direct :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Double encapsulation et latence :&lt;/strong&gt; Chaque requête d&amp;#39;inférence inter-cluster transite par des Load Balancers externes, des routeurs d&amp;#39;Ingress et des couches TLS redondantes, dégradant le &lt;em&gt;Time-To-First-Token&lt;/em&gt; (TTFT).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Complexité de découverte DNS :&lt;/strong&gt; L&amp;#39;absence de registre de services unifié impose la gestion manuelle de DNS externes et de certificats publics pour chaque endpoint d&amp;#39;inférence.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Exposition sur Internet :&lt;/strong&gt; Les flux de données sensibles d&amp;#39;entraînement et les poids de modèles doivent être exposés sur le réseau public, complexifiant la conformité zero-trust.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;2. L&amp;#39;architecture RHACM + Submariner : Tunnels L3/L4 et Multi-Cluster Services (MCS)&lt;/h3&gt;
&lt;p&gt;Déployé nativement via les opérateurs RHACM, Submariner établit un maillage réseau chiffré direct :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tunnels WireGuard / IPsec au niveau noyau :&lt;/strong&gt; Interconnexion directe des plans de données des pods et des services entre clusters sans passer par des passerelles intermédiaires.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Découverte de services déclarative (&lt;code&gt;ServiceExport&lt;/code&gt; / &lt;code&gt;ServiceImport&lt;/code&gt;) :&lt;/strong&gt; Implémentation du standard Kubernetes MCS API. Un modèle servi sur un cluster bare-metal local via vLLM est exposé aux clusters applicatifs sous le nom DNS canonique &lt;code&gt;&amp;lt;service&amp;gt;.&amp;lt;ns&amp;gt;.svc.clusterset.local&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Optimisation de la bande passante :&lt;/strong&gt; Routage direct point-à-point garantissant un débit maximal pour le streaming de tenseurs et les pipelines de données distribués.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;3. Alignement et Compétences dans les Cursus Aperta Scientia&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cursus AS200 (DevOps Platform Engineer — DO432) :&lt;/strong&gt; Gestion centralisée multi-clusters avec RHACM, déploiement automatisé de Submariner, configuration d&amp;#39;OVN-Kubernetes et gouvernance par politiques déclaratives.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cursus AS300 (AI Platform Engineer) :&lt;/strong&gt; Fédération de ServingRuntimes vLLM/KServe multi-clusters, exposition sécurisée d&amp;#39;endpoints d&amp;#39;inférence hybrides et synchronisation de données RAG distribuées.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;4. Sources &amp;amp; Références Techniques&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Red Hat Advanced Cluster Management Documentation :&lt;/strong&gt; &lt;a href=&quot;https://docs.redhat.com/en/documentation/red_hat_advanced_cluster_management_for_kubernetes/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;RHACM Multi-Cluster Networking&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Submariner Open Source Project :&lt;/strong&gt; &lt;a href=&quot;https://submariner.io/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;Submariner Architecture &amp; Guides&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kubernetes Multi-Cluster Services (MCS) API :&lt;/strong&gt; &lt;a href=&quot;https://github.com/kubernetes-sigs/mcs-api&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;Kubernetes SIG Multi-Cluster&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><media:content url="https://aperta.io/images/technologies/acm.png" medium="image" type="image/png"/><media:thumbnail url="https://aperta.io/images/technologies/acm.png"/><webfeeds:featuredImage>https://aperta.io/images/technologies/acm.png</webfeeds:featuredImage><category>Tech Radar</category><category>Cloud &amp; DevOps</category><category>AI Infrastructure</category><author>Aperta Intelligence Lab</author><enclosure url="https://aperta.io/images/technologies/acm.png" length="0" type="image/png"/></item><item><title>GitOps pour le LLMOps en 2026 : Déploiement Déclaratif de LLM avec OpenShift GitOps (ArgoCD), KServe et vLLM</title><link>https://aperta.io/fr/radar/2026-09-11-gitops-llmops-deploiement-declaratif-argocd-kserve-vllm-openshift/</link><guid isPermaLink="true">https://aperta.io/fr/radar/2026-09-11-gitops-llmops-deploiement-declaratif-argocd-kserve-vllm-openshift/</guid><description>Guide complet pour implémenter une approche GitOps sur vos modèles d&apos;IA : déploiement déclaratif d&apos;InferenceServices, gestion des adaptateurs LoRA et Canary Releases sur Red Hat OpenShift AI.</description><pubDate>Fri, 11 Sep 2026 08:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://aperta.io/images/technologies/argocd.png&quot; alt=&quot;GitOps pour le LLMOps en 2026 : Déploiement Déclaratif de LLM avec OpenShift GitOps (ArgoCD), KServe et vLLM&quot; style=&quot;max-width: 100%; height: auto; border-radius: 12px; margin-bottom: 20px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;L&amp;#39;adoption massive des modèles de fondation et des architectures d&amp;#39;inférence distribuée en entreprise pose un défi opérationnel majeur : &lt;strong&gt;comment déployer, versionner et promouvoir des modèles d&amp;#39;IA en production avec la même rigueur, traçabilité et automatisation que le code applicatif ?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Trop souvent, le cycle de vie des modèles d&amp;#39;IA souffre d&amp;#39;actions manuelles en console, de scripts ad hoc pour télécharger des poids de dizaines de gigaoctets, et d&amp;#39;un manque d&amp;#39;observabilité sur les versions d&amp;#39;infrastructures d&amp;#39;inférence actives.&lt;/p&gt;
&lt;p&gt;En 2026, la convergence entre le &lt;strong&gt;Platform Engineering cloud-native&lt;/strong&gt; et le &lt;strong&gt;LLMOps&lt;/strong&gt; impose une approche : &lt;strong&gt;le GitOps pour l&amp;#39;IA&lt;/strong&gt;. En combinant &lt;strong&gt;OpenShift GitOps (ArgoCD)&lt;/strong&gt;, &lt;strong&gt;KServe&lt;/strong&gt; et le runtime d&amp;#39;inférence &lt;strong&gt;vLLM&lt;/strong&gt; sur &lt;strong&gt;Red Hat OpenShift AI (RHOAI)&lt;/strong&gt;, les équipes d&amp;#39;infrastructure déclarent l&amp;#39;état cible de leurs modèles d&amp;#39;IA dans des dépôts Git audités, automatisant les déploiements, les &lt;em&gt;Canary Releases&lt;/em&gt; et les &lt;em&gt;rollbacks&lt;/em&gt; instantanés.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;1. Les Fondamentaux du GitOps appliqué aux Workloads d&amp;#39;IA&lt;/h3&gt;
&lt;p&gt;Le paradigme GitOps applique les principes d&amp;#39;infrastructure déclarative (IaC) et de réconciliation continue à la couche d&amp;#39;inférence et d&amp;#39;entraînement IA :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[ Dépôt Git : manifests/ ] ──(Sync Declarative)──► [ OpenShift GitOps (ArgoCD) ]
  ├── ServingRuntime (vLLM)                               │ (Reconciliation Loop)
  ├── InferenceService (Granite-3.0)                       ▼
  └── TrafficSplit / Canary (90% v1 / 10% v2) ──► [ OpenShift AI / KServe ]
                                                         │
                                          ┌──────────────┴──────────────┐
                                          ▼                             ▼
                                   [ Pod vLLM v1.0 ]            [ Pod vLLM v2.0-canary ]
                                    (GPU Partition A)            (GPU Partition B)
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Tout est déclaré dans Git :&lt;/strong&gt; La configuration du moteur d&amp;#39;inférence (taille de contexte, &lt;em&gt;tensor parallelism&lt;/em&gt;, quantification AWQ/FP8), la source des poids (registre OCI, bucket S3 souverain ou Hugging Face sécurisé), les quotas GPU et les politiques d&amp;#39;autoscaling.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Immutabilité des versions de modèles :&lt;/strong&gt; Chaque promotion d&amp;#39;une nouvelle version de modèle (ex: passage de &lt;code&gt;granite-3.0-8b-instruct-v1&lt;/code&gt; à &lt;code&gt;granite-3.0-8b-instruct-v2-lora&lt;/code&gt;) fait l&amp;#39;objet d&amp;#39;une Pull Request documentée et auditée.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Réconciliation automatique &amp;amp; Anti-Drift :&lt;/strong&gt; Le contrôleur ArgoCD détecte immédiatement toute divergence manuelle sur le cluster OpenShift et force le retour à l&amp;#39;état désiré.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h3&gt;2. Spécification Déclarative d&amp;#39;un &lt;code&gt;InferenceService&lt;/code&gt; KServe avec vLLM&lt;/h3&gt;
&lt;p&gt;Sous OpenShift AI, un modèle LLM est exposé sous la forme d&amp;#39;une ressource personnalisée (CRD) &lt;code&gt;InferenceService&lt;/code&gt;. Voici la déclaration GitOps standard pour déployer le modèle souverain &lt;strong&gt;IBM Granite 3.0 8B&lt;/strong&gt; accéléré par le runtime &lt;strong&gt;vLLM&lt;/strong&gt; :&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;apiVersion: serving.kserve.io/v1beta1
kind: InferenceService
metadata:
  name: granite-3-8b-instruct
  namespace: generative-ai-prod
  annotations:
    openshift.io/display-name: &amp;quot;Granite 3.0 8B Instruct - Production&amp;quot;
    serving.kserve.io/deploymentMode: &amp;quot;Serverless&amp;quot;
    sidecar.istio.io/inject: &amp;quot;true&amp;quot;
spec:
  predictor:
    maxReplicas: 4
    minReplicas: 1
    scaleTarget: 15 # Concurrence de requêtes par réplique avant scale-out
    scaleMetric: concurrency
    model:
      modelFormat:
        name: vLLM
      runtime: vllm-runtime-v0-8
      storageUri: s3://models-registry/granite-3.0-8b-instruct/
      resources:
        limits:
          cpu: &amp;quot;8&amp;quot;
          memory: 32Gi
          nvidia.com/gpu: &amp;quot;1&amp;quot;
        requests:
          cpu: &amp;quot;4&amp;quot;
          memory: 16Gi
          nvidia.com/gpu: &amp;quot;1&amp;quot;
      env:
        - name: MAX_MODEL_LEN
          value: &amp;quot;8192&amp;quot;
        - name: GPU_MEMORY_UTILIZATION
          value: &amp;quot;0.90&amp;quot;
        - name: KV_CACHE_DTYPE
          value: &amp;quot;fp8&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h3&gt;3. Stratégie de Déploiement Progressif : Canary Release &amp;amp; Traffic Splitting&lt;/h3&gt;
&lt;p&gt;Le déploiement d&amp;#39;un nouveau modèle de langage en production comporte des risques d&amp;#39;incompatibilité de prompt, de régression de latence (&lt;em&gt;Time To First Token&lt;/em&gt;) ou de dégradation du débit de génération. &lt;/p&gt;
&lt;p&gt;Grâce à l&amp;#39;intégration native d&amp;#39;OpenShift Serverless (Knative Serving) et Istio dans KServe, il est possible de découper le trafic de manière granulaire et déclarative via GitOps :&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: granite-serving-router
  namespace: generative-ai-prod
spec:
  template:
    metadata:
      annotations:
        autoscaling.knative.dev/target: &amp;quot;10&amp;quot;
  traffic:
    - tag: current
      revisionName: granite-3-8b-instruct-00001 # Version stable v1
      percent: 90
    - tag: candidate
      revisionName: granite-3-8b-instruct-00002 # Version candidate v2 (LoRA fine-tuné)
      percent: 10
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Workflow d&amp;#39;orchestration GitOps :&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Étape 1 (Canary 10%) :&lt;/strong&gt; La PR GitOps est fusionnée sur la branche &lt;code&gt;staging-prod&lt;/code&gt;. ArgoCD déploie la révision candidate et achemine 10 % des requêtes réelles.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Étape 2 (Validation Automated SLO) :&lt;/strong&gt; Les métriques Prometheus / OpenTelemetry (P99 latency, rate d&amp;#39;erreur 5xx, hallucinations via TrustyAI) sont monitorées pendant 15 minutes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Étape 3 (Promotion 100% ou Rollback) :&lt;/strong&gt; Si les SLOs sont respectés, un job automatisé ou l&amp;#39;opérateur de promotion met à jour le manifest Git à 100 % sur la révision candidate. En cas d&amp;#39;anomalie, un simple &lt;code&gt;git revert&lt;/code&gt; rétablit instantanément 100 % du trafic sur la révision précédente sans interruption de service.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h3&gt;4. Gestion Déclarative des Adaptateurs Multi-LoRA&lt;/h3&gt;
&lt;p&gt;Plutôt que de dupliquer des pods de serving de 8B ou 70B pour chaque cas d&amp;#39;usage métier, l&amp;#39;architecture moderne exploite les capacités &lt;strong&gt;Multi-LoRA de vLLM&lt;/strong&gt; orchestrées par GitOps :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Le modèle de base (&lt;em&gt;base model&lt;/em&gt;) reste chargé une seule fois dans la VRAM du GPU.&lt;/li&gt;
&lt;li&gt;Les adaptateurs LoRA légers (quelques dizaines de mégaoctets) pour le service juridique, le support client ou la génération de code sont versionnés dans Git comme des sous-ressources déclaratives.&lt;/li&gt;
&lt;li&gt;Le routage dynamique vers le bon adaptateur s&amp;#39;effectue directement dans le corps de la requête d&amp;#39;inférence (&lt;code&gt;model: &amp;quot;granite-3.0-8b/support-client&amp;quot;&lt;/code&gt;), garantissant une densité d&amp;#39;usage maximale des GPUs d&amp;#39;entreprise.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;5. Tableau Comparatif : Déploiement Traditionnel vs GitOps LLMOps&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th align=&quot;left&quot;&gt;Critère&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;Déploiement IA Traditionnel&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;GitOps &amp;amp; LLMOps sur OpenShift AI&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Source de Vérité&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Scripts Bash, Notebooks, UI manuelle&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Dépôt Git unique et versionné (ArgoCD)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Gestion des Poids &amp;amp; Modèles&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Téléchargements non contrôlés au démarrage&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Stockage OCI / S3 audité et immuable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Promotion d&amp;#39;Environnement&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Recréation manuelle sujette aux erreurs&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Pull Requests entre branches &lt;code&gt;dev&lt;/code&gt;, &lt;code&gt;staging&lt;/code&gt;, &lt;code&gt;prod&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Stratégie de Rollout&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Remplacement brutal (&lt;em&gt;All-at-once&lt;/em&gt;)&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;&lt;em&gt;Canary Release&lt;/em&gt; et &lt;em&gt;Traffic Splitting&lt;/em&gt; déclaratif (Knative/Istio)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Temps de Retour Arrière (Rollback)&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Plusieurs heures (re-déploiement manuel)&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;&amp;lt; 30 secondes via &lt;code&gt;git revert&lt;/code&gt; ou ArgoCD History&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Conformité &amp;amp; Auditabilité (AI Act)&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Traces partielles, configuration dispersée&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Historique Git complet (qui a déployé quel modèle et quand)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;hr&gt;
&lt;h3&gt;6. Maîtriser le GitOps et l&amp;#39;Architecture Plateforme IA chez Aperta Scientia&lt;/h3&gt;
&lt;p&gt;L&amp;#39;automatisation du cycle de vie des plateformes d&amp;#39;IA d&amp;#39;entreprise nécessite une expertise pointue à l&amp;#39;intersection des opérations cloud-native et des architectures de serving de modèles :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cursus AS200 — DevOps &amp;amp; Platform Engineering (3 mois) :&lt;/strong&gt; Le cursus de référence pour maîtriser l&amp;#39;automatisation Ansible, l&amp;#39;administration avancée OpenShift, la CI/CD Tekton et le déploiement déclaratif avec &lt;strong&gt;OpenShift GitOps (ArgoCD)&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cursus AS300 — AI Platform Engineer (3 mois) :&lt;/strong&gt; La formation intensive dédiée à l&amp;#39;orchestration de &lt;strong&gt;Red Hat OpenShift AI (RHOAI)&lt;/strong&gt;, KServe, vLLM, KubeRay, la gouvernance TrustyAI et la préparation à la certification officielle &lt;strong&gt;Red Hat Certified Specialist in AI/ML (EX267)&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;👉 &lt;strong&gt;&lt;a href=&quot;/fr/curriculums/as200/&quot; &gt;Explorer le cursus AS200 DevOps &amp; GitOps&lt;/a&gt;&lt;/strong&gt; | &lt;strong&gt;&lt;a href=&quot;/fr/curriculums/as300/&quot; &gt;Découvrir le cursus AS300 AI Platform Engineer&lt;/a&gt;&lt;/strong&gt; | &lt;strong&gt;&lt;a href=&quot;/fr/contact/&quot; &gt;Échanger avec un conseiller technique Aperta&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;7. Documentation &amp;amp; Références Techniques&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;OpenShift GitOps Documentation :&lt;/strong&gt; &lt;a href=&quot;https://docs.redhat.com/en/documentation/red_hat_openshift_gitops/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;Red Hat OpenShift GitOps Docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;KServe Declarative Inference Architecture :&lt;/strong&gt; &lt;a href=&quot;https://kserve.github.io/website/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;KServe Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;vLLM Multi-LoRA Serving :&lt;/strong&gt; &lt;a href=&quot;https://docs.vllm.ai/en/latest/features/lora.html&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;vLLM Multi-LoRA Guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Red Hat OpenShift AI Serving Guide :&lt;/strong&gt; &lt;a href=&quot;https://docs.redhat.com/en/documentation/red_hat_openshift_ai/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;OpenShift AI Serving Docs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><media:content url="https://aperta.io/images/technologies/argocd.png" medium="image" type="image/png"/><media:thumbnail url="https://aperta.io/images/technologies/argocd.png"/><webfeeds:featuredImage>https://aperta.io/images/technologies/argocd.png</webfeeds:featuredImage><category>Tech Radar</category><category>AI Infrastructure</category><category>DevOps &amp; Platform Engineering</category><author>Aperta Intelligence Lab</author><enclosure url="https://aperta.io/images/technologies/argocd.png" length="0" type="image/png"/></item><item><title>Gouvernance des LLM en Production : TrustyAI &amp; Guardrails sur Red Hat OpenShift AI</title><link>https://aperta.io/fr/radar/2026-09-10-trustyai-llm-guardrails-governance-openshift-ai/</link><guid isPermaLink="true">https://aperta.io/fr/radar/2026-09-10-trustyai-llm-guardrails-governance-openshift-ai/</guid><description>Comment intégrer la conformité EU AI Act, la détection de drift et les guardrails d&apos;inférence en temps réel à l&apos;aide de TrustyAI et KServe.</description><pubDate>Thu, 10 Sep 2026 08:30:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://aperta.io/images/technologies/trustyai.png&quot; alt=&quot;Gouvernance des LLM en Production : TrustyAI &amp; Guardrails sur Red Hat OpenShift AI&quot; style=&quot;max-width: 100%; height: auto; border-radius: 12px; margin-bottom: 20px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Déployer des modèles de fondation en environnement d&amp;#39;entreprise ne se résume pas à maximiser le débit de génération (tokens/sec) ou à optimiser la mémoire GPU. Face aux impératifs réglementaires (&lt;strong&gt;EU AI Act&lt;/strong&gt;) et à la criticité des données métier, la gouvernance de l&amp;#39;IA doit être intégrée dès la couche plateforme d&amp;#39;infrastructure.&lt;/p&gt;
&lt;p&gt;L&amp;#39;intégration de &lt;strong&gt;TrustyAI&lt;/strong&gt; et des passerelles de &lt;strong&gt;Guardrails&lt;/strong&gt; au sein de &lt;strong&gt;Red Hat OpenShift AI (RHOAI)&lt;/strong&gt; permet d&amp;#39;automatiser l&amp;#39;auditabilité, la détection de dérive et la conformité sans dégrader les performances d&amp;#39;inférence.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;1. Les 4 piliers de la gouvernance LLM à l&amp;#39;échelle&lt;/h3&gt;
&lt;p&gt;Dans une architecture d&amp;#39;IA d&amp;#39;entreprise multi-tenants, quatre exigences fondamentales doivent être traitées en continu :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Interception asynchrone &amp;amp; Payload Logging :&lt;/strong&gt; Capture transparente des prompts et des complétions via des sidecars TrustyAI, sans pénaliser la latence premier jeton (&lt;em&gt;Time to First Token&lt;/em&gt; - TTFT).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Détection de dérive (Data &amp;amp; Concept Drift) :&lt;/strong&gt; Évaluation statistique continue (tests de Kolmogorov-Smirnov, distance de Wasserstein) pour identifier l&amp;#39;obsolescence des embeddings ou les altérations de distribution des requêtes réelles.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Équité &amp;amp; Explicabilité (Fairness &amp;amp; Explainability) :&lt;/strong&gt; Calcul en temps réel des métriques de biais algorithmique (Disparate Impact Ratio - DIR, Statistical Parity Difference - SPD) et explications locales via &lt;strong&gt;LIME&lt;/strong&gt; ou &lt;strong&gt;SHAP&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Guardrails d&amp;#39;inférence dynamiques :&lt;/strong&gt; Filtrage à la volée des injections de prompt (&lt;em&gt;prompt injection&lt;/em&gt;), blocage des fuites de données sensibles (PII / RGPD) et atténuation des hallucinations avant livraison de la réponse à l&amp;#39;utilisateur.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h3&gt;2. Architecture de déploiement sous Red Hat OpenShift AI&lt;/h3&gt;
&lt;p&gt;Au cœur de l&amp;#39;écosystème OpenShift AI, TrustyAI opère comme un service managé natif Kubernetes :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Déploiement déclaratif par Operator :&lt;/strong&gt; Déploiement via le &lt;code&gt;TrustyAIService&lt;/code&gt; Custom Resource couplé aux &lt;code&gt;ServingRuntimes&lt;/code&gt; KServe et vLLM.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Corrélation des métriques avec Prometheus &amp;amp; Grafana :&lt;/strong&gt; Export natif des scores d&amp;#39;équité et de drift sous forme de métriques Prometheus pour déclencher des alertes automatisées.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Stockage immuable des traces :&lt;/strong&gt; Archivage sécurisé des payloads d&amp;#39;inférence pour répondre aux exigences d&amp;#39;audit réglementaire et de traçabilité légale.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;3. Impact et Compétences dans le Cursus AS300&lt;/h3&gt;
&lt;p&gt;Au sein d&amp;#39;Aperta Scientia, la gouvernance de l&amp;#39;IA est enseignée comme une discipline d&amp;#39;ingénierie système critique :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cursus AS300 (AI Platform Engineer — 399h) :&lt;/strong&gt; Instrumentation de TrustyAI sur clusters bare-metal, configuration des sidecars KServe, sécurisation des passerelles d&amp;#39;inférence et préparation aux exigences de l&amp;#39;EU AI Act.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cursus AS200 (DevOps Platform Engineer) :&lt;/strong&gt; Mise en place des politiques d&amp;#39;isolation multi-tenants et du monitoring unifié sous OpenShift.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;4. Sources &amp;amp; Références Techniques&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;TrustyAI Open Source Project :&lt;/strong&gt; &lt;a href=&quot;https://github.com/trustyai-explainability/trustyai-service&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;TrustyAI GitHub &amp; Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Red Hat OpenShift AI Model Governance :&lt;/strong&gt; &lt;a href=&quot;https://docs.redhat.com/en/documentation/red_hat_openshift_ai/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;Red Hat OpenShift AI Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;NVIDIA NeMo Guardrails &amp;amp; KServe Integration :&lt;/strong&gt; &lt;a href=&quot;https://github.com/NVIDIA/NeMo-Guardrails&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;NeMo Guardrails Documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><media:content url="https://aperta.io/images/technologies/trustyai.png" medium="image" type="image/png"/><media:thumbnail url="https://aperta.io/images/technologies/trustyai.png"/><webfeeds:featuredImage>https://aperta.io/images/technologies/trustyai.png</webfeeds:featuredImage><category>Tech Radar</category><category>AI Infrastructure</category><category>Governance &amp; Security</category><author>Aperta Intelligence Lab</author><enclosure url="https://aperta.io/images/technologies/trustyai.png" length="0" type="image/png"/></item><item><title>Architecture RAG d&apos;Entreprise Souveraine en 2026 : Déployer Milvus, vLLM et Guardrails sur OpenShift AI</title><link>https://aperta.io/fr/radar/2026-09-10-architecture-rag-entreprise-souverain-milvus-vllm-openshift-ai/</link><guid isPermaLink="true">https://aperta.io/fr/radar/2026-09-10-architecture-rag-entreprise-souverain-milvus-vllm-openshift-ai/</guid><description>Guide d&apos;architecture pour concevoir et opérer un pipeline RAG d&apos;entreprise sécurisé, souverain et performant sur Red Hat OpenShift AI, vLLM et Milvus.</description><pubDate>Thu, 10 Sep 2026 08:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://aperta.io/images/technologies/openshift-ai.png&quot; alt=&quot;Architecture RAG d&apos;Entreprise Souveraine en 2026 : Déployer Milvus, vLLM et Guardrails sur OpenShift AI&quot; style=&quot;max-width: 100%; height: auto; border-radius: 12px; margin-bottom: 20px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Le passage des démonstrateurs (PoC) RAG (&lt;em&gt;Retrieval-Augmented Generation&lt;/em&gt;) aux déploiements industriels en entreprise soulève des exigences critiques : &lt;strong&gt;confidentialité stricte des données d&amp;#39;entreprise&lt;/strong&gt;, &lt;strong&gt;maîtrise des coûts d&amp;#39;inférence&lt;/strong&gt;, &lt;strong&gt;latence déterministe&lt;/strong&gt; et &lt;strong&gt;gouvernance de sécurité sans faille&lt;/strong&gt;. &lt;/p&gt;
&lt;p&gt;S&amp;#39;appuyer sur des APIs publiques de LLM et des bases vectorielles SaaS tierces expose l&amp;#39;organisation à des risques de conformité réglementaire (RGPD, AI Act) et à une perte de souveraineté sur le patrimoine informationnel.&lt;/p&gt;
&lt;p&gt;En 2026, l&amp;#39;architecture de référence pour le RAG d&amp;#39;entreprise repose sur une pile cloud-native 100 % privée et souveraine opérée sur &lt;strong&gt;Red Hat OpenShift AI (RHOAI)&lt;/strong&gt;, orchestrant des bases vectorielles scalables (&lt;strong&gt;Milvus&lt;/strong&gt;), des moteurs d&amp;#39;inférence ultra-optimisés (&lt;strong&gt;vLLM / KServe&lt;/strong&gt;) et des couches d&amp;#39;alignement et de sécurité (&lt;strong&gt;TrustyAI&lt;/strong&gt;, &lt;strong&gt;Granite Guardian&lt;/strong&gt;).&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;1. Vue d&amp;#39;ensemble de l&amp;#39;Architecture RAG Cloud-Native&lt;/h3&gt;
&lt;p&gt;Une infrastructure RAG industrielle s&amp;#39;articule autour de quatre sous-systèmes découplés et scalables de manière indépendante sur Kubernetes :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[ Ingestion &amp;amp; Embeddings ] ──► [ Vector DB : Milvus Cluster ]
                                              ▲
                                              │ (Recherche Hybride Dense/Sparse)
[ User Query ] ──► [ Guardrails / Safety ] ──► [ Orchestrateur RAG (LangChain / LlamaIndex) ]
                          │                           │
                          │ Context + Prompt          ▼
                          └───────────────────► [ Serving LLM : vLLM sur OpenShift AI ]
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Ingestion &amp;amp; Embedding continu :&lt;/strong&gt; Pipelines de parsing documentaire, chunking sémantique et génération d&amp;#39;embeddings vectoriels (ex: &lt;code&gt;bge-m3&lt;/code&gt;, &lt;code&gt;nomic-embed&lt;/code&gt;) exécutés via des tâches batch ou Ray Jobs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Stockage Vectoriel Distribué :&lt;/strong&gt; Cluster Milvus ou Qdrant managé par Operator, déployé sur stockage Ceph/ODF (&lt;em&gt;OpenShift Data Foundation&lt;/em&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Moteur d&amp;#39;Inférence LLM Souverain :&lt;/strong&gt; Déploiement de modèles de fondation ou fine-tunés (famille &lt;strong&gt;Granite 3.0&lt;/strong&gt;, &lt;strong&gt;Llama 3.3&lt;/strong&gt;) sur GPUs partitionnés via &lt;strong&gt;vLLM&lt;/strong&gt; et &lt;strong&gt;KServe&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Couche de Filtrage &amp;amp; Guardrails :&lt;/strong&gt; Modèles de sécurité dédiés (&lt;em&gt;Granite Guardian&lt;/em&gt;, &lt;em&gt;Llama-Guard&lt;/em&gt;) et briques d&amp;#39;observabilité de biais et dérive (&lt;strong&gt;TrustyAI&lt;/strong&gt;).&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h3&gt;2. Dimensionnement &amp;amp; Déploiement du Cluster Vectoriel (Milvus sur OpenShift)&lt;/h3&gt;
&lt;p&gt;Pour absorber des dizaines de millions de documents techniques et supporter des requêtes concurrentes à faible latence, le déploiement de &lt;strong&gt;Milvus Operator&lt;/strong&gt; sur OpenShift assure une haute disponibilité native :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Séparation du Compute et du Storage :&lt;/strong&gt; Les nœuds de requête (&lt;em&gt;QueryNodes&lt;/em&gt;) scalent horizontalement en fonction du débit de recherche utilisateur, tandis que les nœuds d&amp;#39;indexation (&lt;em&gt;DataNodes / IndexNodes&lt;/em&gt;) scalent selon le volume d&amp;#39;ingestion.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Recherche Hybride (Dense + Sparse / BM25) :&lt;/strong&gt; Combinaison de la similarité sémantique (vecteurs denses) et de la recherche lexicale par mots-clés (vecteurs creux) pour éliminer les faux positifs documentaires sur le vocabulaire métier spécifique.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Persistance &amp;amp; Sauvegardes S3/Ceph :&lt;/strong&gt; Stockage immuable sur bucket S3 interne via MinIO ou OpenShift Data Foundation, garantissant l&amp;#39;étanchéité totale face à l&amp;#39;extérieur.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;3. Optimisation du Serving LLM avec vLLM et KServe&lt;/h3&gt;
&lt;p&gt;Le goulot d&amp;#39;étranglement de la génération augmentée réside dans la gestion des fenêtres de contexte étendues (souvent 8k à 32k tokens de documents injectés) :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;PagedAttention &amp;amp; Chunked Prefill :&lt;/strong&gt; vLLM segmente la mémoire KV Cache en blocs non contigus et fragmente le pré-remplissage des prompts volumineux pour éviter d&amp;#39;affamer les requêtes courtes en cours de génération (&lt;em&gt;decode phase&lt;/em&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Partage de Préfixe (&lt;em&gt;Prefix Caching&lt;/em&gt;) :&lt;/strong&gt; Mise en cache automatique des blocs d&amp;#39;instructions système et de métadonnées récurrentes, divisant par 3 le TTFT (&lt;em&gt;Time-to-First-Token&lt;/em&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Partitionnement GPU (MIG / DRA) :&lt;/strong&gt; Allocation précise de tranches GPU (ex: A100/H100 découpés en profils MIG &lt;code&gt;3g.40gb&lt;/code&gt; pour le LLM principal et &lt;code&gt;1g.10gb&lt;/code&gt; pour le modèle d&amp;#39;embedding) pour maximiser le ROI matériel.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;4. Sécurité, Contrôle d&amp;#39;Accès (RBAC) et Guardrails&lt;/h3&gt;
&lt;p&gt;La sécurité d&amp;#39;un RAG d&amp;#39;entreprise ne s&amp;#39;arrête pas au chiffrement TLS :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Contrôle d&amp;#39;accès documentaire au niveau du vecteur :&lt;/strong&gt; Filtrage dynamique des métadonnées de sécurité (&lt;em&gt;Role-Based Access Control&lt;/em&gt;) directement injecté dans les clauses scalaires de Milvus pour s&amp;#39;assurer qu&amp;#39;un collaborateur ne peut récupérer que les documents autorisés par son habilitation IAM/LDAP.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Détection des injections de prompt &amp;amp; fuites de données :&lt;/strong&gt; Interposition d&amp;#39;un runtime léger de classification (&lt;em&gt;Granite Guardian&lt;/em&gt;) analysant la requête utilisateur en amont et la réponse générée en aval pour bloquer le jailbreak et le leak de PII (&lt;em&gt;Personally Identifiable Information&lt;/em&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Surveillance Runtime avec Red Hat Advanced Cluster Security (RHACS) :&lt;/strong&gt; Isolation eBPF des conteneurs de serving et des sidecars d&amp;#39;accès aux modèles pour interdire tout appel réseau non déclaré vers l&amp;#39;extérieur.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;5. Comparatif des Composants de l&amp;#39;Architecture RAG&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th align=&quot;left&quot;&gt;Composant&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;Solution Recommandée&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;Rôle Clé&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;Bénéfice Entreprise&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Plateforme Socle&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Red Hat OpenShift AI&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Orchestration Kubernetes IA &amp;amp; MLOps&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Support entreprise 24/7, sécurité certifiée FIPS, intégration GPU&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Base Vectorielle&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Milvus Cluster (Operator)&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Indexation HNSW/IVF &amp;amp; recherche hybride&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Scalabilité jusqu&amp;#39;à 1B+ de vecteurs, sharding distribué&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Inference Engine&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;vLLM + KServe&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Serving haute cadence &amp;amp; faible latence&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Débit 4x supérieur, Prefix Caching, support multi-LoRA&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Modèles de Langage&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;IBM Granite 3.0 / Llama 3.3&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Modèle d&amp;#39;inférence &amp;amp; Guardrail&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Licence permissive, souveraineté complète sur site&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Gouvernance &amp;amp; Audit&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;TrustyAI / OpenTelemetry&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Détection de biais, traçabilité RAG&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Conformité AI Act &amp;amp; auditabilité des réponses&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;hr&gt;
&lt;h3&gt;6. Développer vos compétences en Architecture Plateforme IA&lt;/h3&gt;
&lt;p&gt;La conception et le maintien en conditions opérationnelles d&amp;#39;architectures RAG et LLMOps d&amp;#39;entreprise exigent une double maîtrise des fondamentaux cloud-native et des spécificités matérielles de l&amp;#39;IA :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cursus AS300 — AI Platform Engineer (3 mois) :&lt;/strong&gt; Le parcours de référence pour architecturer des plateformes OpenShift AI, orchestrer vLLM, KServe, les bases vectorielles et préparer la certification officielle &lt;strong&gt;Red Hat Certified Specialist in AI/ML (EX267)&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cursus AS200 — DevOps &amp;amp; Platform Engineering (3 mois) :&lt;/strong&gt; La formation intensive pour maîtriser l&amp;#39;automatisation Ansible, le socle OpenShift/Kubernetes et l&amp;#39;infrastructure déclarative GitOps.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;👉 &lt;strong&gt;&lt;a href=&quot;/fr/curriculums/as300/&quot; &gt;Découvrir le cursus AS300 AI Platform Engineer&lt;/a&gt;&lt;/strong&gt; | &lt;strong&gt;&lt;a href=&quot;/fr/curriculums/as200/&quot; &gt;Explorer le cursus AS200 DevOps&lt;/a&gt;&lt;/strong&gt; | &lt;strong&gt;&lt;a href=&quot;/fr/contact/&quot; &gt;Prendre rendez-vous avec un conseiller pédagogique&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;7. Ressources &amp;amp; Documentation Technique&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Milvus on Kubernetes Architecture :&lt;/strong&gt; &lt;a href=&quot;https://milvus.io/docs&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;Milvus Docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;vLLM Distributed Serving &amp;amp; Production Deployment :&lt;/strong&gt; &lt;a href=&quot;https://docs.vllm.ai/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;vLLM Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Red Hat OpenShift AI Serving Architecture :&lt;/strong&gt; &lt;a href=&quot;https://docs.redhat.com/en/documentation/red_hat_openshift_ai/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;Red Hat Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TrustyAI OpenShift Component :&lt;/strong&gt; &lt;a href=&quot;https://github.com/trustyai-explainability&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;TrustyAI Project&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><media:content url="https://aperta.io/images/technologies/openshift-ai.png" medium="image" type="image/png"/><media:thumbnail url="https://aperta.io/images/technologies/openshift-ai.png"/><webfeeds:featuredImage>https://aperta.io/images/technologies/openshift-ai.png</webfeeds:featuredImage><category>Tech Radar</category><category>AI Infrastructure</category><category>Enterprise RAG &amp; Security</category><author>Aperta Intelligence Lab</author><enclosure url="https://aperta.io/images/technologies/openshift-ai.png" length="0" type="image/png"/></item><item><title>Event-Driven Ansible (EDA) : Automatiser la remédiation en boucle fermée sur Kubernetes</title><link>https://aperta.io/fr/radar/2026-09-09-event-driven-ansible-closed-loop-remediation-kubernetes/</link><guid isPermaLink="true">https://aperta.io/fr/radar/2026-09-09-event-driven-ansible-closed-loop-remediation-kubernetes/</guid><description>Comment coupler Prometheus Alertmanager et Ansible Rulebooks pour automatiser le cordon, le drain et le reprovisioning de nœuds Kubernetes sans intervention humaine.</description><pubDate>Wed, 09 Sep 2026 08:30:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://aperta.io/images/technologies/ansible.png&quot; alt=&quot;Event-Driven Ansible (EDA) : Automatiser la remédiation en boucle fermée sur Kubernetes&quot; style=&quot;max-width: 100%; height: auto; border-radius: 12px; margin-bottom: 20px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Dans les architectures Kubernetes et OpenShift à grande échelle, le temps moyen de résolution (&lt;strong&gt;MTTR&lt;/strong&gt;) d&amp;#39;un incident dépend trop souvent de l&amp;#39;astreinte humaine : réception d&amp;#39;une alerte, diagnostic manuel, exécution de scripts de maintenance et réouverture de tickets.&lt;/p&gt;
&lt;p&gt;L&amp;#39;adoption d&amp;#39;&lt;strong&gt;Event-Driven Ansible (EDA)&lt;/strong&gt; au sein d&amp;#39;Ansible Automation Platform (AAP) permet de basculer vers un modèle d&amp;#39;&lt;strong&gt;auto-remédiation en boucle fermée&lt;/strong&gt; (&lt;em&gt;closed-loop automation&lt;/em&gt;), transformant les événements de télémétrie en actions d&amp;#39;ingénierie immédiates.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;1. Le goulet d&amp;#39;étranglement de l&amp;#39;intervention manuelle&lt;/h3&gt;
&lt;p&gt;Lorsqu&amp;#39;un nœud worker subit une pression mémoire critique (&lt;code&gt;NodeMemoryPressure&lt;/code&gt;) ou une défaillance de kubelet :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Latence opérationnelle :&lt;/strong&gt; Entre l&amp;#39;alerte Prometheus et l&amp;#39;action de l&amp;#39;ingénieur d&amp;#39;astreinte, plusieurs minutes s&amp;#39;écoulent pendant lesquelles les charges applicatives subissent des dégradations de service (OOMKilled, timeouts).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Risque d&amp;#39;erreur humaine sous stress :&lt;/strong&gt; Les opérations de &lt;code&gt;cordon&lt;/code&gt; et &lt;code&gt;drain&lt;/code&gt; mal ordonnancées risquent d&amp;#39;interrompre brutalement des pods stateful ou des bases de données répliquées.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tâches répétitives à faible valeur :&lt;/strong&gt; Le redémarrage de démons ou la purge de caches disque consomment un temps d&amp;#39;ingénierie précieux au détriment de l&amp;#39;évolution de la plateforme.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;2. Le mécanisme EDA : Sources, Règles et Actions&lt;/h3&gt;
&lt;p&gt;Event-Driven Ansible repose sur une syntaxe déclarative en YAML — les &lt;strong&gt;Ansible Rulebooks&lt;/strong&gt; — articulée en trois composants :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Sources d&amp;#39;événements (Event Sources) :&lt;/strong&gt; Branchement direct sur les webhooks Prometheus Alertmanager, les files Kafka ou les logs Vector.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Moteur de règles conditionnelles (Rules) :&lt;/strong&gt; Évaluation en temps réel des conditions (ex: &lt;code&gt;event.alert.alertname == &amp;quot;KubeNodeMemoryPressure&amp;quot; and event.alert.severity == &amp;quot;critical&amp;quot;&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Actions automatisées (Action Handlers) :&lt;/strong&gt; Déclenchement instantané d&amp;#39;un Job Template sur Ansible Automation Platform pour :&lt;ul&gt;
&lt;li&gt;Poser un &lt;code&gt;cordon&lt;/code&gt; sur le nœud concerné via le module &lt;code&gt;kubernetes.core&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Effectuer un &lt;code&gt;drain&lt;/code&gt; gracieux en respectant les &lt;code&gt;PodDisruptionBudgets&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Lancer un playbook de remédiation système (nettoyage de conteneurs orphelins, redémarrage systemd du kubelet) ou reprovisionner le nœud via l&amp;#39;infrastructure déclarative (IPI / GitOps).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h3&gt;3. Impact et Compétences dans le Cursus AS200&lt;/h3&gt;
&lt;p&gt;Chez Aperta Scientia, l&amp;#39;automatisation événementielle n&amp;#39;est pas abordée comme un concept abstrait :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cursus AS200 (DevOps Platform Engineer — DO374) :&lt;/strong&gt; Conception de pipelines d&amp;#39;auto-remédiation complets, écriture de Rulebooks de production, sécurisation des webhooks et intégration native avec OpenShift Alertmanager.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gains en production :&lt;/strong&gt; Réduction du MTTR de plusieurs dizaines de minutes à quelques secondes, zéro downtime applicatif non planifié et respect strict des SLOs d&amp;#39;entreprise.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;4. Sources &amp;amp; Références Techniques&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Event-Driven Ansible Official Documentation :&lt;/strong&gt; &lt;a href=&quot;https://docs.redhat.com/en/documentation/red_hat_ansible_automation_platform/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;Red Hat Ansible Automation Platform Guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ansible Rulebook Upstream Project :&lt;/strong&gt; &lt;a href=&quot;https://ansible.readthedocs.io/projects/rulebook/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;ansible-rulebook Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Event-Driven Automation with Prometheus &amp;amp; OpenShift :&lt;/strong&gt; &lt;a href=&quot;https://developers.redhat.com/articles/2023/06/20/event-driven-ansible-closed-loop-automation&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;Red Hat Developer Blog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><media:content url="https://aperta.io/images/technologies/ansible.png" medium="image" type="image/png"/><media:thumbnail url="https://aperta.io/images/technologies/ansible.png"/><webfeeds:featuredImage>https://aperta.io/images/technologies/ansible.png</webfeeds:featuredImage><category>Tech Radar</category><category>Cloud &amp; DevOps</category><category>Automation</category><author>Aperta Intelligence Lab</author><enclosure url="https://aperta.io/images/technologies/ansible.png" length="0" type="image/png"/></item><item><title>Orchestration GPU sur Kubernetes en 2026 : DRA, MIG et Time-Slicing pour le Serving LLM</title><link>https://aperta.io/fr/radar/2026-09-09-orchestration-gpu-kubernetes-dra-mig-time-slicing-llmops/</link><guid isPermaLink="true">https://aperta.io/fr/radar/2026-09-09-orchestration-gpu-kubernetes-dra-mig-time-slicing-llmops/</guid><description>Analyse comparative des mécanismes d&apos;allocation GPU sous Kubernetes et OpenShift AI : Dynamic Resource Allocation (DRA), Multi-Instance GPU et Time-Slicing.</description><pubDate>Wed, 09 Sep 2026 08:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://aperta.io/images/technologies/kubernetes.png&quot; alt=&quot;Orchestration GPU sur Kubernetes en 2026 : DRA, MIG et Time-Slicing pour le Serving LLM&quot; style=&quot;max-width: 100%; height: auto; border-radius: 12px; margin-bottom: 20px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Dans les architectures d&amp;#39;IA générative en production, le GPU représente à la fois le premier poste de coût d&amp;#39;infrastructure et le principal goulet d&amp;#39;étranglement de scalabilité. Allouer des accélérateurs matériels (NVIDIA H100, L40S, A100) à des ServingRuntimes LLM (&lt;strong&gt;vLLM&lt;/strong&gt;, &lt;strong&gt;KServe&lt;/strong&gt;, &lt;strong&gt;TGI&lt;/strong&gt;) ou à des services auxiliaires (modèles d&amp;#39;embedding, rerankers, pipelines RAG) exige une granularité d&amp;#39;orchestration bien supérieure au modèle historique de réservation statique de nœuds entiers.&lt;/p&gt;
&lt;p&gt;Le passage à l&amp;#39;échelle sur &lt;strong&gt;Kubernetes&lt;/strong&gt; et &lt;strong&gt;Red Hat OpenShift AI&lt;/strong&gt; repose sur trois mécanismes d&amp;#39;allocation complémentaires : le &lt;strong&gt;Time-Slicing&lt;/strong&gt;, le &lt;strong&gt;Multi-Instance GPU (MIG)&lt;/strong&gt; et l&amp;#39;adoption de la &lt;strong&gt;Dynamic Resource Allocation (DRA)&lt;/strong&gt; introduite par les récentes versions de Kubernetes.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;1. Les limites du Device Plugin NVIDIA classique (1 Pod = 1 GPU)&lt;/h3&gt;
&lt;p&gt;Historiquement, le &lt;code&gt;k8s-device-plugin&lt;/code&gt; exposait les GPUs comme des ressources entières et discrètes (&lt;code&gt;nvidia.com/gpu: 1&lt;/code&gt;). Si cette approche est adaptée aux charges d&amp;#39;entraînement lourd distribué (PyTorch, Ray Train), elle devient inefficace pour l&amp;#39;inférence :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Sous-utilisation massive de la VRAM :&lt;/strong&gt; Déployer un modèle d&amp;#39;embedding (0.5 Go de VRAM) ou un reranker sur un GPU de 80 Go immobilise l&amp;#39;accélérateur complet au détriment d&amp;#39;autres charges.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Absence d&amp;#39;isolation matérielle :&lt;/strong&gt; Le partage applicatif non contraint entraîne des contentions de bus mémoire et des dégradations imprévisibles de la latence de premier token (&lt;strong&gt;TTFT&lt;/strong&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Manque de flexibilité topologique :&lt;/strong&gt; Impossible d&amp;#39;exprimer des contraintes d&amp;#39;affinité NVLink ou de bande passante inter-cartes sans configurations manuelles complexes.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;2. Comparatif des stratégies d&amp;#39;allocation GPU&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th align=&quot;left&quot;&gt;Stratégie&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;Isolation Mémoire &amp;amp; Calcul&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;Cas d&amp;#39;Usage Recommandé&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;Avantages&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;Limites&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Time-Slicing&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Nulle (Partage temporel)&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Dev, tests, embeddings légers à faible trafic&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Zéro configuration matérielle, surallocation élevée&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Risque de OOM croisé, pas de QoS garantie&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;NVIDIA MIG&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Matérielle stricte (VRAM + SMs)&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Inférence multi-tenant, cohabitation de ServingRuntimes&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;QoS garantie, isolation totale des pannes&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Profils fixes (ex: 1g.10gb, 3g.40gb), GPUs haut de gamme uniquement (A100/H100)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;DRA (Dynamic Resource Allocation)&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Dynamique via CDI / Structured Parameters&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Clusters hétérogènes, orchestration LLMOps avancée&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Déclaration fine des attributs matériels, découplage du scheduler&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Nécessite un cluster Kubernetes récent (1.30+) et drivers adaptés&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;hr&gt;
&lt;h3&gt;3. L&amp;#39;avènement de la Dynamic Resource Allocation (DRA)&lt;/h3&gt;
&lt;p&gt;La Dynamic Resource Allocation (DRA) et l&amp;#39;interface &lt;strong&gt;CDI (Container Device Interface)&lt;/strong&gt; transforment la manière dont Kubernetes gère les accélérateurs :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Paramètres structurés (&lt;em&gt;Structured Parameters&lt;/em&gt;) :&lt;/strong&gt; Au lieu d&amp;#39;une simple quantité entière, le Pod exprime des revendications de ressources (&lt;em&gt;ResourceClaims&lt;/em&gt;) basées sur la mémoire requise, les interconnexions NVLink ou la génération de compute.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Allocation à la volée :&lt;/strong&gt; Le scheduler Kubernetes alloue dynamiquement la ressource exacte lors du scheduling sans obliger l&amp;#39;administrateur à reconfigurer statiquement les profils de chaque nœud du cluster.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Co-scheduling optimisé :&lt;/strong&gt; Coordination native entre les allocations GPU, la topologie NUMA et la bande passante réseau pour le parallélisme de tenseurs (&lt;em&gt;Tensor Parallelism&lt;/em&gt;) sous vLLM.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;4. Mise en œuvre sur Red Hat OpenShift AI (RHOAI)&lt;/h3&gt;
&lt;p&gt;Au sein de la plateforme &lt;strong&gt;Red Hat OpenShift AI&lt;/strong&gt;, ces capacités d&amp;#39;orchestration sont intégrées de façon industrielle :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;NVIDIA GPU Operator sous OpenShift :&lt;/strong&gt; Automatisation du déploiement des drivers, du CDI, de MIG et du monitoring télémétrique DCGM via &lt;strong&gt;Prometheus&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;KNative &amp;amp; KServe Scale-to-Zero :&lt;/strong&gt; Mise en sommeil des ServingRuntimes inactifs pour libérer instantanément les tranches GPU au profit de charges d&amp;#39;entraînement ou de batchs prioritaires.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Orchestration hybride avec Ray / KubeRay :&lt;/strong&gt; Distribution élastique des tâches de fine-tuning et de serving sur des pools hétérogènes.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;5. Se former à l&amp;#39;ingénierie d&amp;#39;infrastructure IA avec Aperta Scientia&lt;/h3&gt;
&lt;p&gt;Pour concevoir et opérer des plateformes de calcul IA robustes, sécurisées et optimisées en coût :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cursus AS300 — AI Platform Engineer (3 mois) :&lt;/strong&gt; Le parcours intensif pour maîtriser le déploiement d&amp;#39;OpenShift AI, le partitionnement GPU, vLLM, KServe et préparer la certification officielle &lt;strong&gt;Red Hat Certified Specialist in AI/ML (EX267)&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cursus AS200 — DevOps &amp;amp; Platform Engineering (3 mois) :&lt;/strong&gt; Le socle indispensable d&amp;#39;administration OpenShift, d&amp;#39;automatisation Ansible et de gestion des infrastructures cloud-native.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;👉 &lt;strong&gt;&lt;a href=&quot;/fr/curriculums/as300/&quot; &gt;Découvrir le cursus AS300 AI Platform Engineer&lt;/a&gt;&lt;/strong&gt; | &lt;strong&gt;&lt;a href=&quot;/fr/curriculums/as200/&quot; &gt;Explorer le cursus AS200 DevOps&lt;/a&gt;&lt;/strong&gt; | &lt;strong&gt;&lt;a href=&quot;/fr/contact/&quot; &gt;Échanger avec l&apos;équipe pédagogique&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;6. Références Techniques &amp;amp; Documentation&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Kubernetes Dynamic Resource Allocation (DRA) :&lt;/strong&gt; &lt;a href=&quot;https://kubernetes.io/docs/concepts/scheduling-eviction/dynamic-resource-allocation/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;Documentation Officielle Kubernetes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;NVIDIA Multi-Instance GPU (MIG) Architecture :&lt;/strong&gt; &lt;a href=&quot;https://docs.nvidia.com/datacenter/tesla/mig-user-guide/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;NVIDIA MIG User Guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Red Hat OpenShift AI Acceleration Docs :&lt;/strong&gt; &lt;a href=&quot;https://docs.redhat.com/en/documentation/red_hat_openshift_ai/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;OpenShift AI Hardware Acceleration&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><media:content url="https://aperta.io/images/technologies/kubernetes.png" medium="image" type="image/png"/><media:thumbnail url="https://aperta.io/images/technologies/kubernetes.png"/><webfeeds:featuredImage>https://aperta.io/images/technologies/kubernetes.png</webfeeds:featuredImage><category>Tech Radar</category><category>AI Infrastructure</category><category>Kubernetes &amp; GPU</category><author>Aperta Intelligence Lab</author><enclosure url="https://aperta.io/images/technologies/kubernetes.png" length="0" type="image/png"/></item><item><title>Observabilité GenAI : Standardiser la télémétrie des ServingRuntimes LLM avec OpenTelemetry</title><link>https://aperta.io/fr/radar/2026-09-08-opentelemetry-genai-semantic-conventions-llm-observability/</link><guid isPermaLink="true">https://aperta.io/fr/radar/2026-09-08-opentelemetry-genai-semantic-conventions-llm-observability/</guid><description>Comment les conventions sémantiques OpenTelemetry GenAI unifient la mesure du TTFT, de la latence inter-token et du KV-cache sous vLLM et KServe.</description><pubDate>Tue, 08 Sep 2026 08:30:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://aperta.io/images/technologies/prometheus.png&quot; alt=&quot;Observabilité GenAI : Standardiser la télémétrie des ServingRuntimes LLM avec OpenTelemetry&quot; style=&quot;max-width: 100%; height: auto; border-radius: 12px; margin-bottom: 20px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Déployer des ServingRuntimes LLM (&lt;strong&gt;vLLM&lt;/strong&gt;, &lt;strong&gt;KServe&lt;/strong&gt;) sur des clusters Kubernetes et OpenShift sans métriques d&amp;#39;inférence standardisées revient à naviguer à l&amp;#39;aveugle dès les premières montées en charge.&lt;/p&gt;
&lt;p&gt;La stabilisation des &lt;strong&gt;conventions sémantiques OpenTelemetry pour l&amp;#39;IA générative (GenAI Semantic Conventions)&lt;/strong&gt; établit enfin un standard universel pour monitorer, tracer et optimiser les performances des modèles en production.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;1. Pourquoi les métriques applicatives traditionnelles sont insuffisantes&lt;/h3&gt;
&lt;p&gt;Dans un service HTTP ou gRPC classique, la latence globale de requête (&lt;em&gt;duration&lt;/em&gt;) suffit généralement à évaluer la santé du service. Pour un LLM en streaming, cette approche masque les goulets d&amp;#39;étranglement réels :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Time to First Token (TTFT) :&lt;/strong&gt; Mesure la durée de la phase de &lt;em&gt;prefill&lt;/em&gt; (ingestion du prompt et calcul initial du KV-Cache). Un TTFT qui s&amp;#39;envole traduit une saturation en calcul GPU ou des files d&amp;#39;attente saturées.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Inter-Token Latency (ITL / Time per Output Token) :&lt;/strong&gt; Mesure le temps moyen entre chaque token généré durant la phase de &lt;em&gt;decode&lt;/em&gt;. Une ITL dégradée indique une contention de bande passante mémoire VRAM.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Utilisation et saturation des tokens :&lt;/strong&gt; Le suivi granulaire des tokens d&amp;#39;entrée et de sortie est indispensable pour la gestion fine des quotas multi-tenants et l&amp;#39;anticipation des OOM (&lt;em&gt;Out-of-Memory&lt;/em&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;2. L&amp;#39;apport des conventions OpenTelemetry GenAI&lt;/h3&gt;
&lt;p&gt;En intégrant nativement ces conventions sémantiques dans les pipelines d&amp;#39;export (&lt;strong&gt;Prometheus&lt;/strong&gt;, &lt;strong&gt;Vector&lt;/strong&gt;, collecteurs OpenTelemetry sous OpenShift) :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Métriques standardisées :&lt;/strong&gt; &lt;code&gt;gen_ai.server.time_to_first_token&lt;/code&gt;, &lt;code&gt;gen_ai.server.inter_token_latency&lt;/code&gt;, &lt;code&gt;gen_ai.client.token.usage&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Traces distribuées unifiées :&lt;/strong&gt; Corrélation directe entre les spans de génération LLM, les appels aux bases vectorielles (RAG) et les requêtes applicatives clientes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pilotage dynamique de l&amp;#39;autoscaling :&lt;/strong&gt; Utilisation des SLI OpenTelemetry pour déclencher l&amp;#39;autoscaling horizontal (KEDA / HPA) avant la saturation des nœuds GPU.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;3. Impact Pédagogique dans les Cursus Aperta Scientia&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cursus AS300 (AI Platform Engineer) :&lt;/strong&gt; Module dédié à l&amp;#39;observabilité LLM, à l&amp;#39;instrumentation des ServingRuntimes vLLM/KServe et à la création de tableaux de bord Grafana temps réel corrélés aux métriques matérielles NVIDIA.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cursus AS200 (DevOps Platform Engineer) :&lt;/strong&gt; Intégration de la stack d&amp;#39;observabilité complète (Prometheus, Grafana, OpenShift Monitoring) et alerting proactif piloté par SLOs.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;4. Sources &amp;amp; Références Techniques&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;OpenTelemetry GenAI Semantic Conventions :&lt;/strong&gt; &lt;a href=&quot;https://opentelemetry.io/docs/specs/semconv/gen-ai/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;OpenTelemetry Official Specification&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;vLLM Metrics &amp;amp; Prometheus Integration :&lt;/strong&gt; &lt;a href=&quot;https://docs.vllm.ai/en/latest/serving/metrics.html&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;vLLM Production Metrics&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;KServe Observability &amp;amp; Telemetry :&lt;/strong&gt; &lt;a href=&quot;https://kserve.github.io/website/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;KServe Telemetry Guide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><media:content url="https://aperta.io/images/technologies/prometheus.png" medium="image" type="image/png"/><media:thumbnail url="https://aperta.io/images/technologies/prometheus.png"/><webfeeds:featuredImage>https://aperta.io/images/technologies/prometheus.png</webfeeds:featuredImage><category>Tech Radar</category><category>AI Infrastructure</category><category>Cloud &amp; DevOps</category><author>Aperta Intelligence Lab</author><enclosure url="https://aperta.io/images/technologies/prometheus.png" length="0" type="image/png"/></item><item><title>Devenir AI Platform Engineer en 2026 : Le Guide Ultime (LLMOps, Pénurie IA et Cursus AS300)</title><link>https://aperta.io/fr/radar/2026-09-08-devenir-ai-platform-engineer-guide-2026/</link><guid isPermaLink="true">https://aperta.io/fr/radar/2026-09-08-devenir-ai-platform-engineer-guide-2026/</guid><description>Pénurie critique d&apos;ingénieurs en infrastructure IA, stack technologique (RHOAI, vLLM) et méthodologie industrielle pour devenir AI Platform Engineer en 2026.</description><pubDate>Tue, 08 Sep 2026 08:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://aperta.io/images/technologies/rhoai.png&quot; alt=&quot;Devenir AI Platform Engineer en 2026 : Le Guide Ultime (LLMOps, Pénurie IA et Cursus AS300)&quot; style=&quot;max-width: 100%; height: auto; border-radius: 12px; margin-bottom: 20px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;L&amp;#39;émergence des modèles de fondation génératifs et l&amp;#39;exigence de souveraineté transforment profondément l&amp;#39;ingénierie logicielle. Le métier d&amp;#39;&lt;strong&gt;AI Platform Engineer&lt;/strong&gt; s&amp;#39;impose désormais comme le profil technique le plus recherché par les directions technologiques pour opérer l&amp;#39;infrastructure, le serving distribué et le cycle de vie des modèles d&amp;#39;IA en production.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;1. Une pénurie de profils IA d&amp;#39;infrastructure sans précédent&lt;/h3&gt;
&lt;p&gt;Alors que le marché regorge de profils orientés data science théorique, l&amp;#39;ingénierie d&amp;#39;infrastructure IA et de déploiement en production fait face à un déficit critique de compétences :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;World Economic Forum (Future of Jobs) :&lt;/strong&gt; Le rapport du &lt;a href=&quot;https://www.weforum.org/publications/the-future-of-jobs-report-2025/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;WEF sur l&apos;avenir de l&apos;emploi&lt;/a&gt; classe les spécialistes en &lt;strong&gt;infrastructure IA, Cloud Native et MLOps parmi les 3 métiers à la croissance la plus rapide au monde&lt;/strong&gt;, avec une pénurie de compétences qui menace plus de &lt;strong&gt;75 % des déploiements d&amp;#39;IA en entreprise&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;O&amp;#39;Reilly AI &amp;amp; Tech Talent Report :&lt;/strong&gt; Selon l&amp;#39;&lt;a href=&quot;https://www.oreilly.com/radar/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;étude O&apos;Reilly sur les compétences IA&lt;/a&gt;, le principal goulet d&amp;#39;étranglement pour passer du prototype au produit n&amp;#39;est pas l&amp;#39;algorithme, mais le &lt;strong&gt;manque d&amp;#39;ingénieurs capables d&amp;#39;orchestrer des clusters GPU, d&amp;#39;optimiser le serving (vLLM, KServe) et de garantir la conformité des données&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;McKinsey Global Survey on AI :&lt;/strong&gt; Dans son &lt;a href=&quot;https://www.mckinsey.com/capabilities/quantumblack/our-insights/the-state-of-ai&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;rapport annuel sur l&apos;état de l&apos;IA&lt;/a&gt;, McKinsey souligne que moins de &lt;strong&gt;15 % des organisations disposent des compétences internes pour opérer des modèles d&amp;#39;IA souverains&lt;/strong&gt; sur leur propre infrastructure cloud hybride sans dépendre d&amp;#39;APIs tierces.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cette tension extrême crée une prime salariale et des opportunités d&amp;#39;embauche massives pour les ingénieurs maîtrisant la couche plateforme et GPU.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;2. Pourquoi l&amp;#39;AI Platform Engineering est crucial en entreprise&lt;/h3&gt;
&lt;p&gt;Passer d&amp;#39;un PoC avec des APIs externes à une infrastructure d&amp;#39;entreprise résiliente soulève des défis majeurs :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Orchestration et partage GPU :&lt;/strong&gt; Découpage vGPU, MIG (&lt;em&gt;Multi-Instance GPU&lt;/em&gt;) et ordonnancement haute performance avec KubeRay et Kueue.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Optimisation de l&amp;#39;inférence (Serving) :&lt;/strong&gt; Déploiement de moteurs open source à très faible latence comme &lt;strong&gt;vLLM&lt;/strong&gt; et &lt;strong&gt;KServe&lt;/strong&gt; (Chunked Prefill, PagedAttention, Continuous Batching).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fine-Tuning et Alignement Souverain :&lt;/strong&gt; Mise en œuvre de la méthode &lt;strong&gt;InstructLab (LAB)&lt;/strong&gt; pour adapter les modèles (IBM Granite, Mistral) sur les données métier sans régression.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;3. La stack technologique de référence en 2026&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Plateforme d&amp;#39;IA d&amp;#39;entreprise :&lt;/strong&gt; Red Hat OpenShift AI (RHOAI) &amp;amp; Kubernetes GPU-enabled.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Serving &amp;amp; Inférence :&lt;/strong&gt; vLLM, TGI, KServe, Triton Inference Server.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pipelines &amp;amp; MLOps :&lt;/strong&gt; Kubeflow Pipelines, Ray, MLflow.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gouvernance &amp;amp; Sécurité :&lt;/strong&gt; TrustyAI, Guardrails, Sigstore et scans de supply chain IA.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;4. Les compétences et certifications clés&lt;/h3&gt;
&lt;p&gt;Pour valider cette double compétence Cloud Native et IA d&amp;#39;infrastructure :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Red Hat Certified Specialist in OpenShift AI (EX267) :&lt;/strong&gt; L&amp;#39;évaluation pratique de référence pour déployer et administrer RHOAI et orchestrer des modèles d&amp;#39;IA.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Red Hat Certified OpenShift Administrator (EX280) :&lt;/strong&gt; La fondation obligatoire pour la gestion des clusters hybrides.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h3&gt;5. Le Cursus AS300 Aperta Scientia : L&amp;#39;accélérateur d&amp;#39;élite&lt;/h3&gt;
&lt;p&gt;Le cursus &lt;strong&gt;AS300 — AI Platform Engineer&lt;/strong&gt; d&amp;#39;Aperta Scientia est spécifiquement conçu pour former les spécialistes de l&amp;#39;infrastructure IA :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;3 mois intensifs 100% Live Remote :&lt;/strong&gt; Accompagnement par des experts et praticiens du Cloud Native et de l&amp;#39;IA.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Accès officiel Red Hat Learning Subscription (RHLS) :&lt;/strong&gt; Labs GPU réels et passage des certifications officielles.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Projet Capstone Industriel :&lt;/strong&gt; Déploiement complet d&amp;#39;une plateforme MLOps/LLMOps souveraine.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Formation certifiante Qualiopi :&lt;/strong&gt; Éligible aux financements d&amp;#39;entreprise et OPCO.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;👉 &lt;strong&gt;&lt;a href=&quot;/fr/curriculums/as300/&quot; &gt;Découvrir le programme détaillé du Cursus AS300&lt;/a&gt;&lt;/strong&gt; ou &lt;strong&gt;&lt;a href=&quot;/fr/contact/&quot; &gt;Prendre contact avec l&apos;équipe&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;
</content:encoded><media:content url="https://aperta.io/images/technologies/rhoai.png" medium="image" type="image/png"/><media:thumbnail url="https://aperta.io/images/technologies/rhoai.png"/><webfeeds:featuredImage>https://aperta.io/images/technologies/rhoai.png</webfeeds:featuredImage><category>Tech Radar</category><category>AI Infrastructure</category><category>Carrières Tech</category><author>Aperta Intelligence Lab</author><enclosure url="https://aperta.io/images/technologies/rhoai.png" length="0" type="image/png"/></item><item><title>Devenir Platform Engineer en 2026 : Le Guide Ultime (Compétences, Pénurie de Talents et Cursus AS200)</title><link>https://aperta.io/fr/radar/2026-09-07-devenir-platform-engineer-guide-2026/</link><guid isPermaLink="true">https://aperta.io/fr/radar/2026-09-07-devenir-platform-engineer-guide-2026/</guid><description>Pénurie critique de compétences, compétences clés et certifications Red Hat : comment devenir Platform Engineer Cloud Native en 2026.</description><pubDate>Mon, 07 Sep 2026 08:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://aperta.io/images/technologies/openshift.png&quot; alt=&quot;Devenir Platform Engineer en 2026 : Le Guide Ultime (Compétences, Pénurie de Talents et Cursus AS200)&quot; style=&quot;max-width: 100%; height: auto; border-radius: 12px; margin-bottom: 20px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Le rôle de &lt;strong&gt;Platform Engineer&lt;/strong&gt; est devenu le pivot central des organisations technologiques modernes. Alors que le DevOps traditionnel s&amp;#39;est souvent heurté à la surcharge cognitive imposée aux équipes de développement, l&amp;#39;ingénierie de plateforme formalise la création d&amp;#39;&lt;strong&gt;Internal Developer Platforms (IDP)&lt;/strong&gt; pour offrir une expérience développeur fluide, sécurisée et automatisée.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;1. Une pénurie de compétences historique sur le marché de l&amp;#39;emploi&lt;/h3&gt;
&lt;p&gt;La demande pour les ingénieurs capables de concevoir et d&amp;#39;opérer des plateformes cloud d&amp;#39;entreprise explose, tandis que le vivier de talents reste sous tension critique :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Gartner :&lt;/strong&gt; Dans son rapport sur l&amp;#39;adoption du Cloud Native, &lt;a href=&quot;https://www.gartner.com/en/articles/what-is-platform-engineering&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;Gartner&lt;/a&gt; estime que d&amp;#39;ici 2026, &lt;strong&gt;80 % des organisations d&amp;#39;ingénierie logicielle auront mis en place une équipe dédiée de Platform Engineering&lt;/strong&gt;, mais plus de &lt;strong&gt;65 % des DSI déclarent être freinées par la pénurie de profils qualifiés&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Linux Foundation &amp;amp; CNCF :&lt;/strong&gt; Selon le &lt;a href=&quot;https://www.linuxfoundation.org/resources/publications&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;State of Tech Talent Report de la Linux Foundation&lt;/a&gt;, la maîtrise avancée de Kubernetes, de la conteneurisation et de l&amp;#39;automatisation d&amp;#39;infrastructure figure parmi les &lt;strong&gt;trois compétences les plus difficiles à recruter&lt;/strong&gt;, avec des processus d&amp;#39;embauche dépassant fréquemment 4 à 6 mois.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Red Hat Global Tech Trends :&lt;/strong&gt; L&amp;#39;étude annuelle &lt;a href=&quot;https://www.redhat.com/en/resources/global-tech-trends-executive-summary&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;Red Hat Global Tech Trends&lt;/a&gt; identifie le &lt;strong&gt;manque de compétences internes et de formation certifiante&lt;/strong&gt; comme le &lt;strong&gt;premier obstacle&lt;/strong&gt; à la réussite des initiatives Cloud Native et DevOps en entreprise.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cette asymétrie entre offre et demande place les ingénieurs formés sur les standards industriels dans une position de négociation exceptionnelle.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;2. Pourquoi le Platform Engineering s&amp;#39;impose face au DevOps classique&lt;/h3&gt;
&lt;p&gt;Dans de nombreuses entreprises, l&amp;#39;injonction &lt;em&gt;&amp;quot;You build it, you run it&amp;quot;&lt;/em&gt; a conduit les développeurs à manipuler des dizaines de manifestes Kubernetes complexes, de pipelines CI/CD hétérogènes et de configurations d&amp;#39;infrastructure.&lt;/p&gt;
&lt;p&gt;Le Platform Engineering résout cette friction :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Réduction de la charge cognitive :&lt;/strong&gt; Les équipes produit consomment l&amp;#39;infrastructure sous forme de services en libre-service (&lt;em&gt;Golden Paths&lt;/em&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gouvernance et conformité intégrées :&lt;/strong&gt; Sécurité, conformité et observabilité sont appliquées par défaut dès le plan de contrôle.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Standardisation Cloud Native :&lt;/strong&gt; Déploiement homogène sur architectures hybrides et multi-cloud.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;3. La stack technologique incontournable en 2026&lt;/h3&gt;
&lt;p&gt;Pour concevoir et opérer une plateforme d&amp;#39;entreprise résiliente, la maîtrise d&amp;#39;un socle éprouvé est indispensable :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Orchestration d&amp;#39;entreprise :&lt;/strong&gt; Red Hat OpenShift &amp;amp; Kubernetes avancé (Operators, CRDs, SDN OVN-Kubernetes).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Automatisation déclarative &amp;amp; Infrastructure-as-Code :&lt;/strong&gt; Ansible Automation Platform, Terraform, GitOps avec ArgoCD.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sécurité &amp;amp; Supply Chain :&lt;/strong&gt; Sigstore, Cosign, scans d&amp;#39;images et isolation RBAC/SELinux.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Observabilité &amp;amp; SRE :&lt;/strong&gt; Prometheus, Grafana, OpenTelemetry et gestion des SLOs.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;4. Les certifications qui font la différence&lt;/h3&gt;
&lt;p&gt;Sur le marché du travail européen et international, les certifications pratiques axées sur la performance réelle priment sur les QCM théoriques :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Red Hat Certified OpenShift Administrator (EX280) :&lt;/strong&gt; La référence mondiale pour l&amp;#39;administration et le durcissement de clusters OpenShift.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Red Hat Certified Specialist in OpenShift Application Development (EX288) :&lt;/strong&gt; La maîtrise du cycle de vie applicatif et du build cloud-native.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Red Hat Certified System Administrator (EX200) :&lt;/strong&gt; Le socle système Linux entreprise incontournable.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h3&gt;5. Accélérer sa trajectoire avec le Cursus AS200 Aperta Scientia&lt;/h3&gt;
&lt;p&gt;Conçu pour transformer des développeurs, administrateurs Linux et ingénieurs cloud en &lt;strong&gt;Platform Engineers opérationnels&lt;/strong&gt;, le cursus &lt;strong&gt;AS200 DevOps &amp;amp; Cloud-Native Platform Engineering&lt;/strong&gt; d&amp;#39;Aperta Scientia propose une immersion totale :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;100% Live Remote &amp;amp; Mentoré :&lt;/strong&gt; 3 mois intensifs encadrées par des instructeurs certifiés et experts industriels.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Partenariat Officiel Red Hat :&lt;/strong&gt; Accès illimité à la &lt;em&gt;Red Hat Learning Subscription (RHLS)&lt;/em&gt; et passages des certifications officielles EX280 / EX288 inclus.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Projets Industriels Réels :&lt;/strong&gt; Conception et déploiement de bout en bout d&amp;#39;une plateforme d&amp;#39;entreprise complète.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Éligibilité &amp;amp; Financement :&lt;/strong&gt; Formation certifiante compatible avec les dispositifs de financement français (Qualiopi).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;👉 &lt;strong&gt;&lt;a href=&quot;/fr/curriculums/as200/&quot; &gt;Découvrir le programme complet du Cursus AS200 et postuler à la prochaine session&lt;/a&gt;&lt;/strong&gt; ou &lt;strong&gt;&lt;a href=&quot;/fr/contact/&quot; &gt;Prendre rendez-vous avec l&apos;équipe pédagogique&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;
</content:encoded><media:content url="https://aperta.io/images/technologies/openshift.png" medium="image" type="image/png"/><media:thumbnail url="https://aperta.io/images/technologies/openshift.png"/><webfeeds:featuredImage>https://aperta.io/images/technologies/openshift.png</webfeeds:featuredImage><category>Tech Radar</category><category>Cloud &amp; DevOps</category><category>Carrières Tech</category><author>Aperta Intelligence Lab</author><enclosure url="https://aperta.io/images/technologies/openshift.png" length="0" type="image/png"/></item></channel></rss>