<?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; Intelligence Watch</title><description>Technology briefings, platform engineering updates, and AI infrastructure insights from Aperta Intelligence Lab.</description><link>https://aperta.io/</link><language>en-us</language><image><url>https://aperta.io/images/apertascientia-crest-logo.png</url><title>Aperta Scientia — Tech Radar &amp; Intelligence Watch</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: Multimodal Ingestion, Guided Decoding, and Structured RAG Extraction</title><link>https://aperta.io/radar/2026-10-13-docling-granite-rhoai-structured-rag-extraction/</link><guid isPermaLink="true">https://aperta.io/radar/2026-10-13-docling-granite-rhoai-structured-rag-extraction/</guid><description>Document ingestion with Docling layout vision models, vLLM guided decoding vs defensive guardrails with IBM Granite on 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: Multimodal Ingestion, Guided Decoding, and Structured RAG Extraction&quot; style=&quot;max-width: 100%; height: auto; border-radius: 12px; margin-bottom: 20px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;In enterprise Retrieval-Augmented Generation (RAG) and sovereign AI architectures, the fidelity of downstream vector search directly hinges on document ingestion accuracy. Enterprise knowledge remains heavily locked inside static office formats (PDFs, Word documents, spreadsheets). Naive parsing pipelines consistently fail on a fundamental systems mismatch: the stark difference between &lt;strong&gt;printing order&lt;/strong&gt; and &lt;strong&gt;semantic reading order&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;In a detailed technical report published on the &lt;strong&gt;Red Hat Developer Blog&lt;/strong&gt;, platform engineering teams outline the architecture of an AI-driven matching engine combining the open source &lt;strong&gt;Docling&lt;/strong&gt; library (developed by IBM Research and Red Hat), open-weight &lt;strong&gt;IBM Granite&lt;/strong&gt; foundation models, and &lt;strong&gt;Red Hat OpenShift AI (RHOAI)&lt;/strong&gt;. This design provides essential engineering insights into the trade-offs between &lt;strong&gt;grammar-based guided decoding&lt;/strong&gt; and &lt;strong&gt;defensive guardrails&lt;/strong&gt; when extracting structured data from unstructured enterprise documents.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;1. The Document Representation Gap: Printing Order vs Reading Order&lt;/h3&gt;
&lt;p&gt;The PDF specification was fundamentally designed for graphical device printing fidelity rather than semantic data extraction. A raw PDF content stream is orchestrated by graphical matrix operators (such as the &lt;code&gt;Tm&lt;/code&gt; text matrix operator that positions the cursor at precise Cartesian coordinates &lt;code&gt;X&lt;/code&gt; and &lt;code&gt;Y&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;Consequently:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The sequence in the raw binary content stream reflects the print layout execution order rather than human reading hierarchy.&lt;/li&gt;
&lt;li&gt;A headline or section header can be serialized after a sidebar block, page footer, or metadata chunk.&lt;/li&gt;
&lt;li&gt;Multi-column text layouts, complex tables, and captioned figures disintegrate into disconnected text spans when parsed using basic text extractors or naive OCR tools (&lt;code&gt;pypdf&lt;/code&gt;, regex tokenizers).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This structural degradation directly pollutes chunking strategies in RAG pipelines, creating incoherent chunks that wash out cosine similarity metrics and inject corrupted context into downstream LLMs.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;2. Docling&amp;#39;s Hybrid Ingestion Architecture: Layout Vision &amp;amp; Intermediate Models&lt;/h3&gt;
&lt;p&gt;To bridge this semantic divide, &lt;strong&gt;Docling&lt;/strong&gt; implements a hybrid architecture combining specialized document parsers (covering 35 formats via &lt;code&gt;python-docx&lt;/code&gt;, &lt;code&gt;openpyxl&lt;/code&gt;, and &lt;code&gt;BeautifulSoup&lt;/code&gt;) with deep learning vision models for Document Layout Analysis (DLA).&lt;/p&gt;
&lt;p&gt;For PDF processing:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Vision-based layout segmentation:&lt;/strong&gt; Docling leverages a layout neural network trained on over 150,000 annotated documents (such as &lt;code&gt;docling-layout-heron&lt;/code&gt;) to predict precise bounding boxes and assign semantic element labels (&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;Reverse coordinate projection:&lt;/strong&gt; The raw &lt;code&gt;Tm&lt;/code&gt; coordinate stream of the PDF is mapped back into the predicted layout bounding boxes, accurately reconstructing the original human reading order.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;DoclingDocument&lt;/code&gt; intermediate representation:&lt;/strong&gt; The recovered hierarchy is mapped into an intermediate Pydantic-based object model. This model retains ordered &lt;code&gt;TextItem&lt;/code&gt; collections, table matrices, and hierarchical tree relationships (body, sections, nested sub-sections).&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This structured intermediate state is subsequently exported into &lt;strong&gt;clean, sanitized Markdown&lt;/strong&gt;, giving foundation models pristine input devoid of formatting noise.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;3. Structured Data Extraction: Guided Decoding vs Defensive Guardrails&lt;/h3&gt;
&lt;p&gt;Once documents are converted into clean Markdown, the next architectural stage extracts strictly typed JSON schemas using compact, high-efficiency models like &lt;strong&gt;IBM Granite 3.1&lt;/strong&gt; or &lt;strong&gt;Granite 4:3B&lt;/strong&gt;. Two architectural strategies govern schema compliance:&lt;/p&gt;
&lt;h4&gt;Strategy A: Runtime Guided Decoding&lt;/h4&gt;
&lt;p&gt;Supported natively in inference runtimes like &lt;strong&gt;vLLM&lt;/strong&gt; via specialized libraries (&lt;code&gt;llguidance&lt;/code&gt;, &lt;code&gt;xgrammar&lt;/code&gt;), guided decoding applies a logit mask dynamically during token sampling. Tokens that violate the target JSON Schema grammar are eliminated from the candidate probability distribution.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Advantage:&lt;/strong&gt; Guarantees 100% structural and syntactic compliance on output with zero post-processing.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Production vulnerability (Forced Hallucination):&lt;/strong&gt; When a required schema property (such as &lt;code&gt;years_of_experience&lt;/code&gt;) is entirely missing from the input document, strict grammatical masking prohibits the model from omitting the key or returning a null value. Forced to comply with the schema constraint, the model &lt;strong&gt;hallucinates a plausible value&lt;/strong&gt;, producing clean but factually invalid data.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Strategy B: Defensive Guardrails with Remediation Loops&lt;/h4&gt;
&lt;p&gt;The approach implemented in resilient architectures (such as Red Hat&amp;#39;s PeopleMesh reference architecture) allows natural model emission followed by deterministic post-generation validation:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Stripping markdown code fence wrappers (```json).&lt;/li&gt;
&lt;li&gt;List deduplication, string trimming, and canonical whitespace normalization.&lt;/li&gt;
&lt;li&gt;Strict clamping against domain-specific controlled vocabularies (e.g. mapping unknown seniority designations to default fallback values).&lt;/li&gt;
&lt;li&gt;Pydantic schema validation: if critical attributes are absent from source text, the schema explicitly captures &lt;code&gt;null&lt;/code&gt; states rather than fabricating facts. When schema parsing fails, a deterministic retry loop passes structured validation errors back to the model for correction.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;4. Focused Vectorization and Preventing Embedding Dilution&lt;/h3&gt;
&lt;p&gt;A common design flaw in RAG pipelines is projecting an entire document or multi-attribute profile into a single dense vector embedding. This creates severe &lt;strong&gt;Embedding Dilution&lt;/strong&gt;: mathematically averaging dozens of distinct technical skills, domain experiences, and project scopes into a single 1536-dimensional vector washes out high-value discriminatory signals in latent space. The resultant embedding migrates toward an undifferentiated centroid.&lt;/p&gt;
&lt;p&gt;To ensure pinpoint retrieval accuracy:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The system decomposes entities into modular, domain-specific semantic facets (primary role, core technical competencies, business domain).&lt;/li&gt;
&lt;li&gt;Each facet is embedded independently or indexed using hybrid search (dense vector retrieval paired with scalar metadata filtering and sparse BM25 lexical search) running on &lt;strong&gt;PostgreSQL with pgvector&lt;/strong&gt; or dedicated distributed engines like &lt;strong&gt;Milvus&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;5. Production Operations on Red Hat OpenShift AI (RHOAI)&lt;/h3&gt;
&lt;p&gt;Operationalizing this pipeline on enterprise infrastructure requires core &lt;strong&gt;Red Hat OpenShift&lt;/strong&gt; platform primitives:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;NVIDIA GPU Operator:&lt;/strong&gt; Hardware-accelerated runtime scheduling for Docling layout vision models, enabling multi-page document parsing at line-rate throughput.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;vLLM &amp;amp; KServe ServingRuntimes:&lt;/strong&gt; Declarative, cloud-native lifecycle management for IBM Granite models on OpenShift AI, featuring optimized KV-cache management, dynamic adapter loading, and high-concurrency serving endpoints.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pipeline Automation via Data Science Pipelines (Kubeflow Pipelines v2):&lt;/strong&gt; End-to-end declarative orchestration of document ingestion, schema validation, and vector database indexing.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sovereign Persistence with OpenShift Data Foundation (ODF):&lt;/strong&gt; Scalable S3 object storage via NooBaa for raw document archives, paired with encrypted Ceph RBD persistent volumes for low-latency vector database state.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;6. Curriculum Alignment: Aperta Scientia&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;AS300 (AI Platform Engineer — 399h):&lt;/strong&gt; This production pattern directly maps to enterprise AI data platform engineering — multimodal document ingestion with &lt;strong&gt;Docling&lt;/strong&gt;, deployment and configuration of &lt;strong&gt;vLLM&lt;/strong&gt; ServingRuntimes with &lt;strong&gt;IBM Granite&lt;/strong&gt; on &lt;strong&gt;Red Hat OpenShift AI (RHOAI)&lt;/strong&gt;, operational evaluation of &lt;em&gt;Guided Decoding&lt;/em&gt; (&lt;code&gt;llguidance&lt;/code&gt;) versus deterministic guardrails, preventing embedding dilution in enterprise RAG systems, and vector database integration with &lt;strong&gt;Milvus / ODF&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AS200 (DevOps Platform Engineer — 399h):&lt;/strong&gt; GitOps delivery of AI ServingRuntimes using &lt;strong&gt;OpenShift GitOps (ArgoCD)&lt;/strong&gt;, lifecycle governance of the &lt;strong&gt;GPU Operator&lt;/strong&gt;, multi-tenant namespace isolation for compute-intensive ingestion workloads, and zero-trust API ingress security.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;7. Sources &amp;amp; Technical References&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;*&lt;em&gt;Red Hat Developer Blog — &lt;em&gt;Build an AI matching engine with Docling, Granite &amp;amp; OpenShift AI&lt;/em&gt;:&lt;/em&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; (accessed October 13, 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; — models: &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;em&gt;vLLM Documentation — &lt;em&gt;Structured Outputs (llguidance &amp;amp; xgrammar)&lt;/em&gt;:&lt;/em&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: Multi-Cluster RPO=0 Resilience and Synchronous Storage on OpenShift</title><link>https://aperta.io/radar/2026-10-08-odf-rook-ceph-metro-dr-multicluster-resilience-openshift/</link><guid isPermaLink="true">https://aperta.io/radar/2026-10-08-odf-rook-ceph-metro-dr-multicluster-resilience-openshift/</guid><description>OpenShift Data Foundation Metro-DR architecture: synchronous Rook-Ceph RBD mirroring, RamenDR and RHACM declarative orchestration for RPO=0 resilience on stateful and AI workloads.</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: Multi-Cluster RPO=0 Resilience and Synchronous Storage on OpenShift&quot; style=&quot;max-width: 100%; height: auto; border-radius: 12px; margin-bottom: 20px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;In production cloud-native environments, high availability for stateless architectures is well-mastered through multi-zone pod spreading. Conversely, for &lt;strong&gt;mission-critical stateful services&lt;/strong&gt;—transactional databases, Kafka brokers, &lt;strong&gt;KubeVirt&lt;/strong&gt; virtual machine disks, or generative AI vector databases (&lt;strong&gt;Milvus, Qdrant&lt;/strong&gt;)—the sudden loss of an entire datacenter represents the ultimate platform engineering challenge: state corruption, irreversible data loss (&lt;em&gt;RPO &amp;gt; 0&lt;/em&gt;), or extended downtime (&lt;em&gt;high RTO&lt;/em&gt;).&lt;/p&gt;
&lt;p&gt;While asynchronous periodic snapshot backups (CSI / OADP / Velero) are ideal for regional, long-distance disaster recovery, they fall short of meeting zero-data-loss business continuity mandates across metropolitan distances. This is precisely where &lt;strong&gt;OpenShift Data Foundation (ODF)&lt;/strong&gt; in a &lt;strong&gt;Metro-DR&lt;/strong&gt; topology delivers: combining the &lt;strong&gt;Rook-Ceph&lt;/strong&gt; distributed storage engine, block-level synchronous replication (&lt;strong&gt;Ceph RBD Mirroring&lt;/strong&gt;), and the &lt;strong&gt;RamenDR&lt;/strong&gt; multi-cluster orchestration operator governed by &lt;strong&gt;Red Hat Advanced Cluster Management (RHACM)&lt;/strong&gt; to guarantee &lt;strong&gt;RPO = 0&lt;/strong&gt; and automated failover within minutes.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;1. Two Disaster Recovery Architectures in ODF: Metro-DR vs Regional-DR&lt;/h3&gt;
&lt;p&gt;Building a resilient enterprise storage architecture requires distinguishing between the two primary DR modes available in OpenShift Data Foundation:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Regional-DR (Asynchronous — RPO &amp;gt; 0):&lt;/strong&gt; Deployed across two OpenShift clusters separated by hundreds of kilometers, where wide-area network latency makes synchronous replication impractical. RBD mirroring operates via differential snapshots scheduled at fixed intervals (e.g., every 5 to 15 minutes). In the event of a datacenter disaster, writes committed after the latest snapshot are lost.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Metro-DR (Synchronous — RPO = 0):&lt;/strong&gt; Deployed across a metropolitan area connecting two data centers via dark fiber with round-trip network latency (&lt;strong&gt;RTT &amp;lt; 10 ms&lt;/strong&gt;). Every block write operation is acknowledged simultaneously across both sites before returning success to the application layer. In a complete site outage, &lt;strong&gt;zero data is lost (RPO = 0)&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;In enterprise two-cluster Metro-DR setups, two independent OpenShift clusters each host a dedicated local ODF/Ceph storage instance, synchronously mirrored over encrypted inter-cluster tunnels managed by &lt;strong&gt;Submariner&lt;/strong&gt;. A lightweight third site hosts the RHACM hub cluster to act as an independent arbiter and prevent split-brain scenarios.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;2. Under the Hood: Rook-Ceph RBD Mirroring and Submariner&lt;/h3&gt;
&lt;p&gt;At the storage layer, ODF relies on the open-source &lt;strong&gt;Rook-Ceph&lt;/strong&gt; operator:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Synchronous rbd-mirror Daemon:&lt;/strong&gt; Ceph RADOS Block Device (RBD) pools backing Persistent Volume Claims (PVCs) operate with journaled synchronous replication. Every I/O write request is recorded in Ceph&amp;#39;s journal and committed to the peer cluster prior to completing the POSIX call.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Secure Networking with Submariner:&lt;/strong&gt; Storage replication traffic between OpenShift clusters flows across dedicated IPSec/WireGuard tunnels established at the CNI layer (OVN-Kubernetes) by &lt;strong&gt;Submariner&lt;/strong&gt;, eliminating any requirement to expose Ceph MON or OSD daemons to external networks.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fault Domain Isolation:&lt;/strong&gt; Unlike a single stretch cluster, a two-cluster Metro-DR model fully decouples the Kubernetes control planes and etcd instances. Network instability or API Server failure on Site A has zero blast radius on Cluster B.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;3. Declarative Orchestration with RamenDR and RHACM&lt;/h3&gt;
&lt;p&gt;The operational power of this architecture lies in declarative orchestration driven by Kubernetes Custom Resource Definitions (CRDs) from the open-source &lt;strong&gt;RamenDR&lt;/strong&gt; project, integrated natively into &lt;strong&gt;Red Hat Advanced Cluster Management (RHACM)&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;DRPolicy&lt;/code&gt; CRD:&lt;/strong&gt; Specifies the protection policy, replication scheduling interval (0m for strict synchronous Metro-DR), and participating cluster pairs:&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 # Strict synchronous mode (RPO=0)
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;DRPlacementControl&lt;/code&gt; (DRPC) CRD:&lt;/strong&gt; Binds application workloads (managed via RHACM &lt;code&gt;Placement&lt;/code&gt; or ArgoCD &lt;code&gt;ApplicationSet&lt;/code&gt;) to the &lt;code&gt;DRPolicy&lt;/code&gt;. RamenDR continuously reconciles replication health across all PVCs bound to the target 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 (Planned Switchover):&lt;/strong&gt; Used for maintenance windows. RamenDR cleanly pauses the application on the primary cluster, drains pods, flushes I/O buffers, unmounts Ceph PVCs, demotes the primary RBD mirror, promotes the peer volume to primary, and boots workloads on the target cluster with zero data loss.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Failover (Unplanned Outage):&lt;/strong&gt; When the primary cluster suffers an unrecoverable failure, RHACM triggers emergency failover. RamenDR promotes the secondary RBD volumes to read/write mode and immediately deploys pods on the surviving cluster.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;4. Enterprise Workloads: KubeVirt and AI Vector Databases&lt;/h3&gt;
&lt;p&gt;This resilient storage architecture addresses two cornerstone challenges in platform engineering:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;KubeVirt Virtual Machines (OpenShift Virtualization):&lt;/strong&gt; VM disks run on raw Block PVCs backed by RBD StorageClasses. With Metro-DR, critical legacy virtual machines running inside KubeVirt can fail over between datacenters without reprovisioning, preserving total disk state and filesystem integrity.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI Pipelines &amp;amp; RAG Vector Databases (Milvus / Qdrant):&lt;/strong&gt; Production vector stores supporting enterprise LLM applications demand high-throughput, low-latency persistence for dense vector indexes. Metro-DR protects persistent vector indexes and metadata from split-brain corruption and datacenter loss, ensuring uninterrupted sovereign AI operations.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h3&gt;5. Curriculum Alignment at Aperta Scientia&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;AS200 Track (DevOps Platform Engineer — 399h):&lt;/strong&gt; Advanced modules DO380 (OpenShift Automation and Integration) and DO370 (Enterprise Storage with OpenShift Data Foundation)—deploying and tuning &lt;strong&gt;Rook-Ceph&lt;/strong&gt; pools, configuring RBD/CephFS StorageClasses, establishing multi-cluster tunnels with &lt;strong&gt;Submariner&lt;/strong&gt;, and automating declarative DR failover workflows with &lt;strong&gt;RHACM&lt;/strong&gt; and &lt;strong&gt;RamenDR&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AS300 Track (AI Platform Engineer — 399h):&lt;/strong&gt; High-availability storage infrastructure for AI data pipelines and LLM inference—vector database persistence (&lt;strong&gt;Milvus&lt;/strong&gt;, &lt;strong&gt;Qdrant&lt;/strong&gt;), managing stateful cache volumes and model weights with zero-data-loss guarantees across multi-zone sovereign platforms.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;Technical Sources &amp;amp; References&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 and Per-Tenant Encryption</title><link>https://aperta.io/radar/2026-10-08-openshift-data-foundation-rook-ceph-tenant-encryption/</link><guid isPermaLink="true">https://aperta.io/radar/2026-10-08-openshift-data-foundation-rook-ceph-tenant-encryption/</guid><description>ANALYSIS — OpenShift Data Foundation (Rook-Ceph): operator + Ceph daemons + CSI drivers, ceph-rbd / cephfs StorageClasses, cluster-wide or per-StorageClass encryption with HashiCorp Vault as KMS, and namespace-level multi-tenant isolation.</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 and Per-Tenant Encryption&quot; style=&quot;max-width: 100%; height: auto; border-radius: 12px; margin-bottom: 20px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;On a Kubernetes platform you size the CPU, cap the memory, watch network latency — and then you discover the real problems the day a PersistentVolumeClaim stays &lt;strong&gt;Pending&lt;/strong&gt;. Storage is the most underestimated layer of Platform Engineering: it decides resilience, portability and, increasingly, compliance. On OpenShift that layer has a name: &lt;strong&gt;OpenShift Data Foundation (ODF)&lt;/strong&gt; — the operator that turns raw disks into a &lt;strong&gt;Ceph&lt;/strong&gt; cluster consumable through the Kubernetes API.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;1. ODF: a Ceph cluster governed by an operator&lt;/h3&gt;
&lt;p&gt;ODF does not invent storage: it industrialises &lt;strong&gt;Rook&lt;/strong&gt;, the operator that deploys and reconciles &lt;strong&gt;Ceph&lt;/strong&gt; on Kubernetes (see the &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 Ceph documentation&lt;/a&gt;). Three daemon families form the core:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MON (Monitor)&lt;/strong&gt; — holds the &lt;em&gt;cluster map&lt;/em&gt; (topology, OSD state, placement groups); the MON quorum is the cluster&amp;#39;s single point of decision.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MGR (Manager)&lt;/strong&gt; — exposes metrics, the dashboard and administration modules.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OSD (Object Storage Daemon)&lt;/strong&gt; — one process per disk: it stores the actual data, replicates and repairs.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Where a classic SAN demands a dedicated storage administrator, ODF exposes &lt;strong&gt;Kubernetes CRDs&lt;/strong&gt;: you declare a &lt;code&gt;StorageCluster&lt;/code&gt;, Rook converges the real state. It is the same declarative contract as the rest of the platform — and therefore the same GitOps pipeline.&lt;/p&gt;
&lt;h3&gt;2. One cluster, three consumption interfaces&lt;/h3&gt;
&lt;p&gt;Ceph storage is exposed to the cluster through &lt;strong&gt;CSI drivers&lt;/strong&gt; that dynamically provision volumes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ocs-storagecluster-ceph-rbd&lt;/code&gt; — &lt;strong&gt;RBD block&lt;/strong&gt; volumes (RADOS Block Device), &lt;strong&gt;RWO&lt;/strong&gt; (ReadWriteOnce) access. The default choice for databases, application state and &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;, a shared filesystem with &lt;strong&gt;RWX&lt;/strong&gt; (ReadWriteMany) access. Essential for volumes shared by several Pods (build artefacts, models, 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; — an S3-compatible API for backups, &lt;em&gt;data lakes&lt;/em&gt; and training backends.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;From the platform&amp;#39;s point of view these are standard &lt;strong&gt;StorageClasses&lt;/strong&gt;: a PVC plus a class name, and CSI provisions the volume. That abstraction is what makes storage portable — and testable in CI like any other manifest.&lt;/p&gt;
&lt;h3&gt;3. Encryption: two granularities, one key decision&lt;/h3&gt;
&lt;p&gt;This is where ODF outgrows the black-box SAN. Ceph encryption relies on a &lt;strong&gt;two-key envelope&lt;/strong&gt;: each volume has a &lt;strong&gt;DEK&lt;/strong&gt; (Data Encryption Key) that encrypts the data, itself encrypted by a &lt;strong&gt;KEK&lt;/strong&gt; (Key Encryption Key) held by an external &lt;strong&gt;KMS&lt;/strong&gt;. ODF integrates with &lt;strong&gt;HashiCorp Vault&lt;/strong&gt; as that KMS.&lt;/p&gt;
&lt;p&gt;Two levels coexist:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cluster-wide encryption&lt;/strong&gt; — all data at rest is encrypted, under a single policy. This is the baseline, described step by step in the &lt;strong&gt;Red Hat Developer Blog&lt;/strong&gt; 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;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Per-PV (StorageClass) encryption&lt;/strong&gt; — often &lt;strong&gt;insufficient&lt;/strong&gt; in multi-tenant environments: compliance may require &lt;strong&gt;a distinct key per project, tenant or sensitivity level&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;4. The multi-tenant case: isolating encryption boundaries per namespace&lt;/h3&gt;
&lt;p&gt;The &lt;strong&gt;Red Hat Developer Blog&lt;/strong&gt; 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; (15 July 2025) walks through exactly that scenario. By enabling &lt;strong&gt;StorageClass encryption&lt;/strong&gt; in the ODF installation wizard, the cluster gains an &lt;strong&gt;additional encrypted StorageClass&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;Isolation is built in four moves, each mapped to a Kubernetes primitive:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;A Vault role and ACL per tenant&lt;/strong&gt; — each namespace gets its own path (&lt;code&gt;kv/tenant-a/&lt;/code&gt;), hence its own cryptographic boundary.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A ConfigMap inside the namespace&lt;/strong&gt; — overrides the CSI configuration to point the volume at the right Vault path.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A dedicated ServiceAccount&lt;/strong&gt;, bound to the Vault role through &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;PVCs in the namespace&lt;/strong&gt; consuming the encrypted StorageClass — each volume is sealed by the tenant&amp;#39;s KEK.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;An engineering point that is often missed: &lt;strong&gt;Kubernetes discourages long-lived ServiceAccount tokens&lt;/strong&gt; (since v1.22). The right reflex is a &lt;strong&gt;short TTL&lt;/strong&gt; in the Vault policy, with automatic rotation through the &lt;strong&gt;TokenRequest API&lt;/strong&gt;. The secret no longer lives forever in a Secret; it lives in time.&lt;/p&gt;
&lt;h3&gt;5. Why this is foundational for AI platforms (AS300)&lt;/h3&gt;
&lt;p&gt;Storage is not a peripheral &lt;em&gt;DevOps&lt;/em&gt; topic: it is the substrate of enterprise AI.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Distributed training&lt;/strong&gt; — datasets must be mounted &lt;strong&gt;RWX&lt;/strong&gt; by several workers; CephFS becomes the meeting point for jobs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RAG and vector databases&lt;/strong&gt; — a backend such as &lt;strong&gt;Milvus&lt;/strong&gt; relies on &lt;strong&gt;RBD&lt;/strong&gt; block volumes for its persistent indexes, with CSI snapshots.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Model store &amp;amp; registry&lt;/strong&gt; — model artefacts and checkpoints are &lt;em&gt;stateful&lt;/em&gt; volumes: &lt;strong&gt;CSI snapshots and clones&lt;/strong&gt; let you version a state without a full copy.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sovereignty&lt;/strong&gt; — encryption at rest with keys you control (&lt;strong&gt;Vault KMS&lt;/strong&gt;) and internal S3 (&lt;strong&gt;NooBaa&lt;/strong&gt;): training data never leaves the perimeter.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;6. Technical Sources &amp;amp; References&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 (product page):&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>Storage</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>Container Security: Why Your Non-Root Container Drops Its Capabilities (SCC, CRI-O, Kernel)</title><link>https://aperta.io/radar/2026-10-06-container-security-non-root-capabilities-scc-crio-kernel/</link><guid isPermaLink="true">https://aperta.io/radar/2026-10-06-container-security-non-root-capabilities-scc-crio-kernel/</guid><description>ANALYSIS — Why CAP_NET_RAW is missing in a non-root container: the SCC → CRI-O → kernel pipeline, the five capability sets (Bnd/Prm/Eff/Inh/Amb), the UID 0 → non-root transition and the real fixes (file capabilities, KEP 2763 ambient capabilities).</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;Container Security: Why Your Non-Root Container Drops Its 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;A monitoring sidecar runs as non-root and needs ICMP health checks: it requires &lt;code&gt;CAP_NET_RAW&lt;/code&gt;. The SecurityContextConstraint (SCC) allows the capability, the PodSpec requests it (&lt;code&gt;capabilities.add: [NET_RAW]&lt;/code&gt;), CRI-O starts the container without error — and yet &lt;code&gt;ping&lt;/code&gt; fails:&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;This is not a bug. The scenario, documented by the &lt;strong&gt;Red Hat Developer Blog&lt;/strong&gt; on 5 October 2026, is the collision of three systems that do not talk to each other: &lt;strong&gt;SCC&lt;/strong&gt; admission on the API server, &lt;strong&gt;CRI-O&lt;/strong&gt; translating the CRI request into an OCI spec, and &lt;strong&gt;Linux capability semantics&lt;/strong&gt; in the kernel. Knowing where the SCC ends and the kernel begins is the whole art of debugging container privileges.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;1. An SCC Is an Admission Gate, Not a Runtime Engine&lt;/h3&gt;
&lt;p&gt;An SCC only decides whether a security configuration is &lt;strong&gt;allowed into&lt;/strong&gt; the cluster (permitted capabilities, UID ranges, volume types, privilege escalation, SELinux context). It is evaluated by the OpenShift API server admission controller when the Pod is created. Once the Pod is admitted, &lt;strong&gt;the SCC&amp;#39;s job is done&lt;/strong&gt;: it has no runtime component, does not talk to CRI-O, writes no iptables rules and configures no process capability.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;At cluster scope:&lt;/strong&gt; SCCs are far more granular than Pod Security Admission (PSA) — PSA works on a coarse 3-tier model (privileged, baseline, restricted) whereas SCCs control field by field.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;2. CRI-O: From SCC to OCI Spec, Where It Is Decided&lt;/h3&gt;
&lt;p&gt;CRI-O has no concept of SCCs: it receives a &lt;code&gt;CreateContainerRequest&lt;/code&gt; and translates it into a runtime spec. Simple fields (hostNetwork, hostPID, hostIPC) map directly to namespace modes. Capabilities go through &lt;code&gt;SpecSetPrivileges()&lt;/code&gt; and diverge by mode:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Privileged containers:&lt;/strong&gt; &lt;code&gt;SetupPrivileged(true)&lt;/code&gt; populates all &lt;strong&gt;five sets&lt;/strong&gt; with every known capability (41 at the time of writing). Note: the PodSpec&amp;#39;s &lt;code&gt;dropCapabilities&lt;/code&gt; field is then &lt;strong&gt;ignored&lt;/strong&gt; — the add/drop logic is entirely bypassed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Non-privileged containers:&lt;/strong&gt; CRI-O starts from a list and merges in &lt;strong&gt;9 default capabilities&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;), unless the PodSpec declares &lt;code&gt;drop: ALL&lt;/code&gt;. This is exactly why the &lt;code&gt;drop: ALL&lt;/code&gt; + &lt;code&gt;add: [one capability]&lt;/code&gt; pattern is the production best practice: you restart from a clean, minimal set.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;CRI-O then writes the final capability into &lt;strong&gt;Bounding, Effective and Permitted&lt;/strong&gt; — &lt;strong&gt;identically&lt;/strong&gt; whether the container runs as root or not. The runtime outcome, however, will be radically different.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;3. Kernel: Five Capability Sets and a UID Transition That Wipes Them&lt;/h3&gt;
&lt;p&gt;Linux capabilities decompose the superuser model into distinct units spread across five sets, each evaluated differently by the kernel:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Bounding (CapBnd)&lt;/strong&gt; — the absolute ceiling of what a process may ever acquire.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Permitted (CapPrm)&lt;/strong&gt; — the pool from which effective capabilities can be drawn.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Effective (CapEff)&lt;/strong&gt; — what the kernel actually checks at runtime; without &lt;code&gt;CAP_NET_RAW&lt;/code&gt; here, raw socket creation is denied regardless of what the other sets contain.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Inheritable (CapInh)&lt;/strong&gt; — capabilities carried across &lt;code&gt;execve()&lt;/code&gt;, only when the binary also carries matching file capabilities.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ambient (CapAmb)&lt;/strong&gt; — introduced in Linux 4.3 precisely to solve the non-root problem: they automatically repopulate Permitted and Effective after &lt;code&gt;execve()&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The fatal mechanism: the OCI runtime starts the process as &lt;strong&gt;root&lt;/strong&gt;, applies the sets, and &lt;strong&gt;then switches to the target UID&lt;/strong&gt; (e.g. 1000). During that UID 0 → non-zero transition, &lt;strong&gt;the kernel clears CapPrm and CapEff&lt;/strong&gt;. Only Bounding survives. And CRI-O &lt;strong&gt;never&lt;/strong&gt; sets CapInh or CapAmb.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;4. Why CRI-O Deliberately Skips Ambient Capabilities&lt;/h3&gt;
&lt;p&gt;This is not an oversight: it is a documented security decision in CRI-O&amp;#39;s code. Kubernetes assumes that &lt;code&gt;runAsNonRoot&lt;/code&gt; results in capabilities being dropped; enabling ambient capabilities would break that implicit contract. A &lt;strong&gt;KEP (2763 – ambient capabilities)&lt;/strong&gt; does exist in SIG Security to make them selectively supportable — worth tracking, because it would change the game for every non-root sidecar needing fine-grained privilege.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;5. The Real Fixes, and What They Cost&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;File capabilities (&lt;code&gt;setcap&lt;/code&gt;)&lt;/strong&gt; — the most targeted approach: &lt;code&gt;setcap &amp;#39;cap_net_raw=+ep&amp;#39; /usr/bin/ping&lt;/code&gt; at image build time. The kernel promotes the capability into Permitted and Effective at exec, even for non-root, as long as it remains in the Bounding set. &lt;strong&gt;Cost:&lt;/strong&gt; you must modify the image; file capabilities are stored as extended attributes, so the build pipeline and storage driver must preserve them — and trust shifts to &lt;strong&gt;image provenance&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Running as root&lt;/strong&gt; — avoids the UID transition. &lt;strong&gt;Cost:&lt;/strong&gt; the most common production SCC (&lt;code&gt;restricted-v2&lt;/code&gt;) forbids it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Privileged container&lt;/strong&gt; — populates all five sets, but &lt;strong&gt;disables SELinux, AppArmor and seccomp&lt;/strong&gt; and bypasses the entire add/drop logic: &amp;quot;a sledgehammer for a thumbtack&amp;quot;. Never outside debugging.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;The engineering lesson:&lt;/strong&gt; the SCC, CRI-O and the kernel are three successive layers, each with its own mental model. Faced with &lt;code&gt;CapEff: 0000000000000000&lt;/code&gt; on a non-root process, you are not hunting a bug — you are re-reading the UID transition and capability semantics.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;6. Technical Sources &amp;amp; References&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>Security</category><category>Containers &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; Distributed Inference on OpenShift: Prefill / Decode Disaggregation and Cache-Aware Routing</title><link>https://aperta.io/radar/2026-10-06-llm-d-distributed-inference-prefill-decode-disaggregation-vllm-openshift/</link><guid isPermaLink="true">https://aperta.io/radar/2026-10-06-llm-d-distributed-inference-prefill-decode-disaggregation-vllm-openshift/</guid><description>llm-d architecture on Red Hat OpenShift and vLLM: Prefill/Decode disaggregation, RDMA KV-cache transfer, and intelligent Gateway API routing for enterprise LLM workloads.</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; Distributed Inference on OpenShift: Prefill / Decode Disaggregation and Cache-Aware Routing&quot; style=&quot;max-width: 100%; height: auto; border-radius: 12px; margin-bottom: 20px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Scaling enterprise generative AI inference encounters a fundamental architectural bottleneck: the mismatch between the compute profiles of the &lt;strong&gt;Prefill&lt;/strong&gt; stage (prompt ingestion and Key-Value cache computation) and the &lt;strong&gt;Decode&lt;/strong&gt; stage (sequential token generation). In standard monolithic vLLM deployments, both phases share the same GPU, leading to severe resource contention on long-context queries and unpredictable Inter-Token Latency (ITL) jitter.&lt;/p&gt;
&lt;p&gt;The &lt;strong&gt;llm-d&lt;/strong&gt; architecture—a CNCF Sandbox project backed by &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;, and &lt;strong&gt;NVIDIA&lt;/strong&gt;—standardizes Kubernetes-native orchestration for disaggregated inference (&lt;em&gt;Prefill/Decode Disaggregation&lt;/em&gt;) and &lt;em&gt;KV-cache-aware routing&lt;/em&gt; on &lt;strong&gt;Red Hat OpenShift AI&lt;/strong&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;1. The Monolithic Bottleneck: Conflicting Compute Phases&lt;/h3&gt;
&lt;p&gt;LLM inference operates under two fundamentally different execution profiles:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Prefill Phase (Compute-Bound):&lt;/strong&gt; Highly parallel processing of the input sequence to compute initial attention matrices and generate the KV cache. This phase saturates Tensor Cores and requires raw compute throughput (TFLOPS).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Decode Phase (Memory-Bandwidth-Bound):&lt;/strong&gt; Autoregressive token-by-token generation. Each new token requires minimal matrix multiplication but heavily taxes High Bandwidth Memory (HBM) bandwidth to reload model weights and KV-cache tensors at every step.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;In a monolithic setup, large input prompts (e.g., 64k or 128k tokens in enterprise RAG pipelines) monopolize GPU cores, stalling token generation for concurrent active streams. As a result, &lt;strong&gt;Time-To-First-Token (TTFT)&lt;/strong&gt; spikes and &lt;strong&gt;Inter-Token Latency (ITL)&lt;/strong&gt; degrades.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;2. Prefill / Decode (P/D) Disaggregation with vLLM&lt;/h3&gt;
&lt;p&gt;Disaggregated inference splits the serving pipeline into two dedicated, independently scalable worker pools:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Prefill Pool (Compute-Optimized Instances):&lt;/strong&gt; Ingests incoming prompts, computes the KV cache at maximum throughput, and immediately offloads the tensor state without running the token decode loop.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Decode Pool (Memory-Bandwidth-Optimized Instances):&lt;/strong&gt; Ingests the pre-computed KV-cache tensor and streams output tokens sequentially with minimal, predictable latency.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Inter-node KV-cache transfer is handled via high-speed interfaces (&lt;strong&gt;vLLM NIXL / UCX / RDMA over Converged Ethernet&lt;/strong&gt;), completely eliminating redundant prompt reprocessing on decode nodes.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;3. The Role of llm-d: Intelligent Scheduling and Gateway API Inference Extension&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;llm-d&lt;/strong&gt; delivers the Kubernetes-native control plane required to orchestrate disaggregated clusters:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;InferencePool&lt;/code&gt; and &lt;code&gt;InferenceObjective&lt;/code&gt; CRDs:&lt;/strong&gt; Declarative specification of specialized compute pools (NVIDIA H100/A100, AMD Instinct, L40S) and explicit SLO targets (target TTFT, p99 token latency).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prefix-Cache-Aware Routing:&lt;/strong&gt; Operating via the &lt;strong&gt;Kubernetes Gateway API Inference Extension&lt;/strong&gt;, the inference gateway maintains a distributed prefix index. Prompts sharing common prefixes (system instructions, recurring RAG documents) are automatically dispatched to pods that already hold cached KV blocks, cutting TTFT by up to 90%.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Smart Load Balancing:&lt;/strong&gt; Dynamically evaluates GPU memory pressure and real-time active batch sizes across vLLM pods rather than relying on naive round-robin scheduling.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;4. Operationalization on Red Hat OpenShift AI&lt;/h3&gt;
&lt;p&gt;Deploying llm-d on &lt;strong&gt;Red Hat OpenShift&lt;/strong&gt; leverages core enterprise platform primitives:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;KServe &amp;amp; ServingRuntime:&lt;/strong&gt; Declarative management and lifecycle operations for containerized vLLM serving workloads.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Independent Autoscaling with KEDA:&lt;/strong&gt; Decoupled scaling of Prefill pods based on queue depth and token volume without artificially over-provisioning Decode capacity.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;High-Speed Networking (SR-IOV / RoCE):&lt;/strong&gt; Deterministic high-bandwidth networking enabling sub-millisecond KV-cache handoffs across cluster nodes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OpenTelemetry &amp;amp; Prometheus Observability:&lt;/strong&gt; Full visibility into golden inference metrics (&lt;code&gt;vllm:time_to_first_token_seconds&lt;/code&gt;, &lt;code&gt;vllm:time_per_output_token_seconds&lt;/code&gt;, cache hit ratios).&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;5. Curriculum Alignment &amp;amp; Skills at Aperta Scientia&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;AS300 Curriculum (AI Platform Engineer — 399h):&lt;/strong&gt; Core alignment with distributed AI inference architectures—advanced &lt;strong&gt;vLLM&lt;/strong&gt; runtime configuration, &lt;strong&gt;KServe&lt;/strong&gt; ServingRuntimes under &lt;strong&gt;Red Hat OpenShift AI (RHOAI)&lt;/strong&gt;, distributed KV-cache management, &lt;strong&gt;llm-d&lt;/strong&gt; &lt;code&gt;InferencePool&lt;/code&gt; CRDs, and inference performance benchmarking (GuideLLM / lm_eval).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AS200 Curriculum (DevOps Platform Engineer — 399h):&lt;/strong&gt; Production &lt;strong&gt;Kubernetes Gateway API&lt;/strong&gt; implementations, advanced routing policies, high-performance container networking (SR-IOV / RoCE), real-time monitoring via &lt;strong&gt;Prometheus / Grafana&lt;/strong&gt;, and declarative multi-cluster delivery with &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; Technical References&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>Weekly Tech Radar: AMD ROCm, Argo CD 4.0, Kyverno Guardrails, OpenClaw Enterprise &amp; AI-Augmented CI</title><link>https://aperta.io/radar/2026-10-02-tech-radar-amd-gpu-agents-argocd-kyverno-ai-ci/</link><guid isPermaLink="true">https://aperta.io/radar/2026-10-02-tech-radar-amd-gpu-agents-argocd-kyverno-ai-ci/</guid><description>Weekly intelligence briefing: LLM inference on AMD GPUs (ROCm) with rootless Podman, the Argo CD 4.0 vision, Kubernetes policy as a guardrail, an open control plane for enterprise agents, and bounded AI in 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;Weekly Tech Radar: AMD ROCm, Argo CD 4.0, Kyverno Guardrails, OpenClaw Enterprise &amp; AI-Augmented CI&quot; style=&quot;max-width: 100%; height: auto; border-radius: 12px; margin-bottom: 20px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Key intelligence highlights from the Aperta Scientia technology lab for our &lt;strong&gt;AS200 (DevOps Platform Engineer)&lt;/strong&gt; and &lt;strong&gt;AS300 (AI Platform Engineer)&lt;/strong&gt; curriculums.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;1. LLM Inference on AMD GPUs — Red Hat AI Inference 3.5 (ROCm) + Rootless Podman&lt;/h3&gt;
&lt;p&gt;A step-by-step benchmark of an OpenAI-compatible inference server running on an AMD Radeon GPU, served by &lt;strong&gt;Red Hat AI Inference&lt;/strong&gt; (vLLM + llm-d stack) inside a &lt;strong&gt;rootless Podman&lt;/strong&gt; container and instrumented with &lt;strong&gt;GuideLLM&lt;/strong&gt; (PSAP methodology, concurrency levels from 1 to 650).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Key Takeaways:&lt;/strong&gt; ROCm stack verification (amd-smi, amdgpu module, /dev/kfd and /dev/dri), controlled GPU exposure via --device and --group-add=keep-groups (requires the &lt;strong&gt;crun&lt;/strong&gt; OCI runtime), image registry.redhat.io/rhaii/vllm-rocm-rhel9:3.5.0. Strong signal: enterprise inference is no longer single-vendor; AMD is now a supported production path alongside NVIDIA.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AS300 Impact:&lt;/strong&gt; Module &lt;em&gt;LLM Serving &amp;amp; Distributed Inference (AI267)&lt;/em&gt; — hardware heterogeneity (NVIDIA / AMD ROCm), supported inference images, GuideLLM benchmarking methodology and GPU density.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;2. AI-Augmented CI — Pipeline Failure Analyzer (1 of 5 Stages)&lt;/h3&gt;
&lt;p&gt;A Red Hat field report on CI failure triage: 80 failed jobs and up to 50,000 log lines per job, collapsed into a handful of root causes within minutes.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Key Takeaways:&lt;/strong&gt; A deliberately constrained architecture — &lt;strong&gt;only the Analyze stage calls an LLM&lt;/strong&gt;; the four other stages (deterministic log cleaning, report assembly, ticket creation, wiki publishing) remain Python code. Outcome: bounded inference cost, reproducible outputs and non-determinism confined to causal reasoning.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AS200 Impact:&lt;/strong&gt; Module &lt;em&gt;Building, CI/CD &amp;amp; Automation (DO288)&lt;/em&gt; — robust pipelines and a bounded use of LLMs (deterministic guardrails, cost, non-determinism).&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;3. Argo CD 4.0 — The Argo Community Shapes the Future of GitOps&lt;/h3&gt;
&lt;p&gt;At ArgoCon North America 2026, the Argo community (Argo CD, Workflows, Rollouts, Events) opened the &lt;strong&gt;visioning process for Argo CD 4.0&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Key Takeaways:&lt;/strong&gt; Field lessons highlighted — Argo CD &lt;strong&gt;beyond 60,000 applications&lt;/strong&gt;, Argo CD on satellites, and &lt;strong&gt;Argo Workflows for machine learning&lt;/strong&gt; over large datasets. The four Argo projects remain composable building blocks, each usable independently.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AS200 Impact:&lt;/strong&gt; Module &lt;em&gt;GitOps &amp;amp; Declarative Delivery (DO288 / DO380)&lt;/em&gt; — Argo CD at scale, Argo Rollouts (progressive delivery) and Argo Workflows for data/ML pipelines.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;4. Guardrails, not gates — Policy as a Platform Primitive (Kyverno)&lt;/h3&gt;
&lt;p&gt;A CNCF deep dive: policy should &lt;strong&gt;guide&lt;/strong&gt; (guardrail) rather than &lt;strong&gt;block&lt;/strong&gt; (gate). The four jobs of policy — validate, mutate, generate, verify — are rebalanced.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Key Takeaways:&lt;/strong&gt; Most Kubernetes estates are 90% validation, whereas &lt;strong&gt;mutation and generation&lt;/strong&gt; carry most of the developer-experience leverage. Recommendations: actionable rejection messages, progressive policy rollout (audit → warn → enforce) and treating policy as a versioned &lt;strong&gt;product&lt;/strong&gt; rather than frozen configuration.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AS200 Impact:&lt;/strong&gt; Module &lt;em&gt;Platform Governance &amp;amp; Admission (DO280 / DO380)&lt;/em&gt; — Kyverno (validate/mutate/generate/verify), guardrail design and progressive policy rollout.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;5. OpenClaw Enterprise — An Open Control Plane for Enterprise Agents&lt;/h3&gt;
&lt;p&gt;Red Hat, NVIDIA, OpenAI and the broader community are contributing in the open to &lt;strong&gt;OpenClaw Enterprise&lt;/strong&gt;, an enterprise-grade control plane for deploying and operating &lt;strong&gt;persistent agents&lt;/strong&gt; across users and teams.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Key Takeaways:&lt;/strong&gt; Agent sandboxing, AI gateways, AgentOps/tracing and evaluation. In addition, a method for making agent &lt;strong&gt;skills testable&lt;/strong&gt; is formalised: assisted authoring (skill-creator), trigger evaluation (promptfoo, skill-used assertion) and execution in continuous integration.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AS300 Impact:&lt;/strong&gt; Module &lt;em&gt;AI Agents &amp;amp; Governance (AI267)&lt;/em&gt; — agent runtimes, open control planes, behaviour evaluation and skill testing in CI.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;6. Technical Sources &amp;amp; References&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: Closed-Loop Remediation and Self-Healing on OpenShift</title><link>https://aperta.io/radar/2026-10-01-event-driven-ansible-closed-loop-remediation-alertmanager-openshift/</link><guid isPermaLink="true">https://aperta.io/radar/2026-10-01-event-driven-ansible-closed-loop-remediation-alertmanager-openshift/</guid><description>Source/rule/action rulebooks, ansible.eda and Decision Environments, closed-loop Prometheus/Alertmanager remediation on OpenShift, and the arrival of the MCP server in Ansible Automation Platform 2.7: reactive automation as a platform engineering skill.</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: Closed-Loop Remediation and Self-Healing on OpenShift&quot; style=&quot;max-width: 100%; height: auto; border-radius: 12px; margin-bottom: 20px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;An Ansible playbook launched by hand at 2 a.m. during an incident is not automation: it is a human script with human latency. The real change of nature is turning a signal — a Prometheus alert, a Kubernetes event, a Kafka message, a journald log line — into a decision and an action, without waking anyone up. That is exactly the scope of &lt;strong&gt;Event-Driven Ansible (EDA)&lt;/strong&gt;: the &lt;code&gt;source → rule → action&lt;/code&gt; triptych, materialised in a versioned &lt;strong&gt;rulebook&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;With the arrival of &lt;strong&gt;Ansible Automation Platform 2.7&lt;/strong&gt; and its &lt;strong&gt;MCP server&lt;/strong&gt;, EDA moves out of the demo-gadget register and becomes a platform building block: the control plane that connects observability to remediation, and now a conversational agent on that same control plane.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;1. The source / rule / action model&lt;/h3&gt;
&lt;p&gt;A rulebook is a YAML artifact, versionable and reviewed in a pull request, deliberately minimal in structure:&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;Three blocks, three responsibilities:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;sources&lt;/code&gt;&lt;/strong&gt;: an event source provided by the &lt;code&gt;ansible.eda&lt;/code&gt; collection — &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; for testing, plus vendor integrations (Splunk, ServiceNow, and more). Every source exposes a stream of normalised events.&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;: filtering, expressed in EDA&amp;#39;s condition DSL over the &lt;code&gt;event&lt;/code&gt; object (attribute access, comparison and logical operators, membership tests). Business logic lives here — and so does the maintenance debt.&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; (triggering an AAP Controller Job Template, thus reusing existing RBAC and inventory), or &lt;code&gt;debug&lt;/code&gt;/&lt;code&gt;print_event&lt;/code&gt; for observation.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;An important architectural point: &lt;strong&gt;the condition is evaluated against the event, not against system state&lt;/strong&gt;. A badly written rulebook therefore replays the same remediation in a loop on a flapping alert. Mastering the &lt;em&gt;blast radius&lt;/em&gt; is not optional.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;2. From the CLI to the control plane: EDA Controller and Decision Environments&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;ansible-rulebook&lt;/code&gt; is a local executable, useful for prototyping and debugging. In production, EDA is operated by the &lt;strong&gt;EDA Controller&lt;/strong&gt; (&lt;code&gt;ansible/eda-server&lt;/code&gt;, Apache-2.0) integrated into Ansible Automation Platform: rulebooks become &lt;strong&gt;activations&lt;/strong&gt; (enable / disable / restart), backed by a Git project and an inventory.&lt;/p&gt;
&lt;p&gt;The execution substrate is the &lt;strong&gt;Decision Environment&lt;/strong&gt;: a container image (EE) embedding &lt;code&gt;ansible-rulebook&lt;/code&gt;, Python and the required collections. It is the decision-side counterpart of the Execution Environment on the execution side.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Reproducibility&lt;/strong&gt;: the same built, versioned DE pushed to a registry (Quay, Automation Hub) guarantees that the decision taken in staging is identical to the one taken in production.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Isolation&lt;/strong&gt;: one DE per domain (network, security, platform) limits the collections available, and therefore the action surface of a compromised rule.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Traceability&lt;/strong&gt;: every activation produces an executable history — which event, which rule, which action, which result. That is the raw material for audit and post-mortem.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A rulebook is not tested in production. The &lt;code&gt;ansible.eda&lt;/code&gt; collection ships synthetic sources (&lt;code&gt;range&lt;/code&gt;) that let you replay an event stream in CI before any activation.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;3. Closed-loop remediation: Alertmanager as the trigger&lt;/h3&gt;
&lt;p&gt;The canonical use case on OpenShift is the &lt;strong&gt;Prometheus → Alertmanager → EDA → cluster action&lt;/strong&gt; loop: the &lt;code&gt;PrometheusRule&lt;/code&gt; fires, Alertmanager routes and notifies through a webhook &lt;code&gt;receiver&lt;/code&gt;, the &lt;code&gt;ansible.eda.alertmanager&lt;/code&gt; source ingests the payload, the rule filters on alert name and labels, the action runs the remediation playbook.&lt;/p&gt;
&lt;p&gt;A reference implementation documented by the &lt;strong&gt;Red Hat Developer Blog&lt;/strong&gt; deploys an instrumented Quarkus application, a &lt;code&gt;ServiceMonitor&lt;/code&gt;, Alertmanager with its &lt;code&gt;AlertmanagerConfig&lt;/code&gt;, Prometheus, and an EDA Pod carrying the rulebook and the action playbook — entirely declaratively, with &lt;code&gt;oc apply&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;What separates a demo from an operable system:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Idempotence&lt;/strong&gt;: remediation must be a no-op if the state is already correct. A Pod restart loop is an incident, not a cure.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Window and debounce&lt;/strong&gt;: never react to a &lt;code&gt;firing&lt;/code&gt; alert on a transient symptom; require a minimum duration or a &lt;code&gt;for:&lt;/code&gt; clause in the Prometheus rule.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Graduated escalation&lt;/strong&gt;: self-correction for known, safe cases, ticket creation or notification otherwise. EDA is not &amp;quot;automate everything&amp;quot;, it is automating what is decidable.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Least-privilege RBAC&lt;/strong&gt;: the ServiceAccount carrying the remediation should only be able to do what it must (draining a node is not deleting a PVC).&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;4. Platform use cases that survive production&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Node lifecycle&lt;/strong&gt;: cordon and drain a node flagged as degraded by its metrics, before the kubelet does it for you, with eviction honouring application PDBs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Certificates and secrets&lt;/strong&gt;: detecting a certificate nearing expiry, rotating it and reloading the affected components — a classic that should never depend on a human.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Elasticity&lt;/strong&gt;: business-signal-driven autoscaling, including on virtualised workloads (the Red Hat Developer Blog documents EDA-driven automatic CPU scaling of OpenShift Virtualization machines).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Security (SOAR)&lt;/strong&gt;: isolating a suspicious workload on detection, quarantining, enriching and opening a ticket. Closing the gap between detection and containment remains the main lever for reducing exposure time.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AIOps&lt;/strong&gt;: chaining observability and ITSM signals (Instana, Splunk, ServiceNow) into instrumented remediation — the subject of the solution guides published for AAP 2.7.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;5. AAP 2.7: EDA in the agentic era&lt;/h3&gt;
&lt;p&gt;Ansible Automation Platform 2.7 changes EDA&amp;#39;s ergonomics and integration more than its core:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MCP server for AAP (Technology Preview)&lt;/strong&gt;: external AI agents (Claude, Cursor, and others) query job status, gather facts and launch automation workflows in natural language. The control plane becomes a capability callable by an agent — and therefore a security object in its own right.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Automation intelligent assistant with bring-your-own-knowledge&lt;/strong&gt;: the assistant&amp;#39;s RAG pipeline can be extended with the organisation&amp;#39;s internal documentation (policies, runbooks, terminology), bringing the assistant closer to real operational context.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OIDC identity provider for HashiCorp Vault (Technology Preview)&lt;/strong&gt;: AAP issues short-lived JWTs, scoped to the job, the user and the organisation, replacing long-lived service accounts. This is exactly the model required for a rulebook to access a secret without a stored secret.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Execution Environment builder &amp;amp; content catalog&lt;/strong&gt;: the decision environment is built in the UI from automatically discovered collections — EDA&amp;#39;s barrier to entry drops, and the risk of drift rises accordingly.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ansible development workspaces&lt;/strong&gt;: a standardised browser-based development environment (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;The engineer&amp;#39;s read: giving an LLM agent the ability to &lt;em&gt;launch&lt;/em&gt; remediation only makes sense if the guardrails — RBAC, rulebook review, immutable DE, idempotence — are already in place. The agent amplifies the quality of the foundation, it does not replace it.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;6. What must be taught: EDA as an operations discipline&lt;/h3&gt;
&lt;p&gt;Event-Driven Ansible is not a product to add to a catalogue: it is the junction between observability, configuration management and operational security. The skill the market lacks is not &amp;quot;writing a rulebook&amp;quot;, it is &lt;strong&gt;designing a bounded decision loop&lt;/strong&gt;: which event, which threshold, which action, which rollback, which journal.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;7. Skills &amp;amp; Aperta Scientia Curriculum&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;AS200 track (DevOps Platform Engineer — 399h):&lt;/strong&gt; this topic feeds directly into infrastructure automation and fleet-scale operations — writing EDA rulebooks and activations on the &lt;strong&gt;DO374 / AAP&lt;/strong&gt; side, integration with Prometheus/Alertmanager observability and security policies, multi-cluster operations and hardening on the &lt;strong&gt;DO380&lt;/strong&gt; side, and mastery of Execution / Decision Environments as delivery-chain artifacts. Prepares for the &lt;strong&gt;EX188&lt;/strong&gt;, &lt;strong&gt;EX280&lt;/strong&gt; and &lt;strong&gt;EX288&lt;/strong&gt; certifications.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AS300 track (AI Platform Engineer — 399h):&lt;/strong&gt; transposing the model to the AI control plane — reactive remediation on KServe &lt;code&gt;InferenceService&lt;/code&gt; and vLLM &lt;code&gt;ServingRuntime&lt;/code&gt; objects (evicting a faulty GPU, shedding load on a degraded ServingRuntime, controlled restart of an MLOps pipeline), and interacting with the AAP &lt;strong&gt;MCP server&lt;/strong&gt; as an integration point between agents and automation. Self-healing an inference platform is an operations skill, not an option.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;8. Sources &amp;amp; Technical References&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 — Ansible Automation Platform 2.7 documentation:&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>Software Supply Chain Security on OpenShift: Tekton Chains, Sigstore (RHTAS) and SBOM/VEX</title><link>https://aperta.io/radar/2026-09-30-software-supply-chain-security-tekton-chains-sigstore-sbom-openshift/</link><guid isPermaLink="true">https://aperta.io/radar/2026-09-30-software-supply-chain-security-tekton-chains-sigstore-sbom-openshift/</guid><description>SLSA provenance signed by Tekton Chains, keyless Sigstore signing (Red Hat Trusted Artifact Signer), SBOM/VEX with Trusted Profile Analyzer, and Enterprise Contract (Conforma) release policy: the OpenShift build chain as the trust boundary.</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;Software Supply Chain Security on OpenShift: Tekton Chains, Sigstore (RHTAS) and 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), the XZ Utils backdoor (CVE-2024-3094), and the steady stream of npm and PyPI typosquatting campaigns all converge on the same engineering conclusion: &lt;strong&gt;the artifact running in production is no longer the code you believe you wrote&lt;/strong&gt;. The question is no longer &amp;quot;is my application vulnerable?&amp;quot; but &amp;quot;can I prove where this binary came from, who built it, from which dependencies, and that it stayed intact between commit and Pod?&amp;quot;.&lt;/p&gt;
&lt;p&gt;That is exactly what an instrumented software supply chain is for. On OpenShift the assembly line is now mature: &lt;strong&gt;OpenShift Pipelines (Tekton)&lt;/strong&gt; for declarative execution, &lt;strong&gt;Tekton Chains&lt;/strong&gt; for signed SLSA provenance, &lt;strong&gt;Sigstore / Red Hat Trusted Artifact Signer (RHTAS)&lt;/strong&gt; for keyless signing, &lt;strong&gt;Red Hat Trusted Profile Analyzer (TPA)&lt;/strong&gt; for SBOM and VEX, and &lt;strong&gt;Enterprise Contract (now Conforma)&lt;/strong&gt; as the release gate.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;1. The Pipeline as the Trust Boundary: Pipelines-as-Code&lt;/h3&gt;
&lt;p&gt;The first break with legacy practice is to remove every image build from developer workstations:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Containerized execution by design:&lt;/strong&gt; A Tekton &lt;code&gt;Task&lt;/code&gt; runs in a dedicated Pod with its own ServiceAccount, Workspaces, and resource limits. There is no untraceable local &lt;code&gt;docker build&lt;/code&gt; and no floating &lt;code&gt;latest&lt;/code&gt; tag built on a laptop.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pipelines-as-Code (PaC):&lt;/strong&gt; &lt;code&gt;PipelineRun&lt;/code&gt; definitions live in the application repository under &lt;code&gt;.tekton/&lt;/code&gt; and are triggered by Git webhooks (push, pull request) through the &lt;code&gt;Repository&lt;/code&gt; CRD and CEL-based event filtering. The pipeline becomes an artifact reviewed in a &lt;em&gt;pull request&lt;/em&gt;, exactly like application code.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Native traceability:&lt;/strong&gt; every execution produces an immutable, timestamped &lt;code&gt;TaskRun&lt;/code&gt;/&lt;code&gt;PipelineRun&lt;/code&gt; referencing the exact builder image (buildah, git-clone), parameters, and commit SHA. That is the raw material for SLSA provenance.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Field caveat: without a pinning policy for &lt;code&gt;taskRef&lt;/code&gt; (versioned OCI bundles, digests instead of tags), a &amp;quot;secured&amp;quot; pipeline can still execute an upstream-modified Task. That is a direct attack vector on the build chain.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;2. SLSA Provenance Signed by Tekton Chains&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Tekton Chains&lt;/strong&gt; is a controller that watches the cluster&amp;#39;s &lt;code&gt;TaskRun&lt;/code&gt; and &lt;code&gt;PipelineRun&lt;/code&gt; objects and turns their results into &lt;strong&gt;in-toto&lt;/strong&gt; provenance attestations in the &lt;strong&gt;SLSA v1.0&lt;/strong&gt; format:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Automatic attestation:&lt;/strong&gt; Chains captures inputs (base images, sources, parameters) and outputs (image digests, artifacts) then produces a signed provenance document — with no developer intervention.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Signing backends:&lt;/strong&gt; x509 &lt;em&gt;keyless&lt;/em&gt; (OIDC → Fulcio, short-lived certificate), managed KMS (AWS KMS, GCP KMS, HashiCorp Vault), or a Kubernetes secret key. This choice determines the achievable SLSA level.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OCI publication:&lt;/strong&gt; by default the attestation and its signature are pushed to the registry as OCI artifacts in the layout expected by &lt;code&gt;cosign&lt;/code&gt;, alongside the corresponding transparency log entry. The image then carries the &lt;code&gt;chains.tekton.dev/signed: &amp;quot;true&amp;quot;&lt;/code&gt; annotation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reading SLSA:&lt;/strong&gt; L1 = provenance generated; L2 = hosted build + signed provenance; L3 = isolated build with non-falsifiable provenance. Tekton Chains on OpenShift supplies the L2/L3 building blocks, provided the builders are properly isolated and hardened.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;3. Keyless Signing: Sigstore and Red Hat Trusted Artifact Signer&lt;/h3&gt;
&lt;p&gt;The Sigstore model solves the historical signing-key problem (issuance, rotation, revocation):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Fulcio&lt;/strong&gt; issues a very short-lived x509 certificate bound to the OIDC identity of the operator or workload.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rekor&lt;/strong&gt; records every signature in an append-only Merkle-tree transparency log: proof of existence is publicly verifiable and compromise becomes detectable.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RHTAS&lt;/strong&gt; is Red Hat&amp;#39;s supported enterprise distribution of Sigstore (Fulcio, Rekor, Trillian, TUF for trust-root distribution, &lt;code&gt;cosign&lt;/code&gt;, &lt;code&gt;gitsign&lt;/code&gt;, and the &lt;code&gt;ec&lt;/code&gt; binary). &lt;code&gt;gitsign&lt;/code&gt; lets developers sign Git commits through plain OIDC authentication, with no local key.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Command-line verification:&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;Enforcement at admission:&lt;/strong&gt; the &lt;em&gt;Sigstore Policy Controller&lt;/em&gt; (&lt;code&gt;ClusterImagePolicy&lt;/code&gt; CRD) rejects any deployment whose image is not signed by an approved identity and recorded in Rekor. RHACS also offers Cosign signature verification in its admission controller. Compliance stops being a report and becomes a &lt;code&gt;deny&lt;/code&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;4. SBOM and VEX: Red Hat Trusted Profile Analyzer&lt;/h3&gt;
&lt;p&gt;An SBOM is only useful if it is actionable:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Formats:&lt;/strong&gt; SPDX 2.3 and CycloneDX 1.6 now cover virtually all generation tooling; the content must be attached to the image (attestation) rather than stored out-of-band.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TPA (Trustify)&lt;/strong&gt; centralizes SBOMs produced by your builds &lt;em&gt;and&lt;/em&gt; those supplied by vendors, then continuously correlates them with vulnerability databases and security advisories (including Red Hat&amp;#39;s).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;VEX (Vulnerability Exploitability eXchange)&lt;/strong&gt; is the missing piece: a component may be present in the image while being unreachable (&lt;code&gt;vulnerable_code_not_in_execute_path&lt;/code&gt;) or not even compiled in (&lt;code&gt;vulnerable_code_not_present&lt;/code&gt;). Without VEX, a team drowns its developers in non-exploitable CVEs; with VEX, it prioritizes what is genuinely in the attack surface and answers factually: &amp;quot;&lt;em&gt;what is the blast radius&lt;/em&gt; of a new CVE?&amp;quot;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PURL-based querying:&lt;/strong&gt; correlation by &lt;code&gt;pkg:npm/...&lt;/code&gt; or &lt;code&gt;pkg:maven/log4j-core@2.14.1&lt;/code&gt; lets you list, in seconds, every affected image — including those in remote registries.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;5. Enterprise Contract (Conforma): Policy as the Release Gate&lt;/h3&gt;
&lt;p&gt;Verification must be blocking and identical everywhere:&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; runs inside the pipeline before any promotion and fails the release when a rule breaks.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Typical rules:&lt;/strong&gt; verified signature, SLSA provenance at a minimum level, SBOM present and attached, no critical-severity CVEs, and a whitelist of allowed Tekton task bundles.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rego/OPA policies packaged as OCI bundles:&lt;/strong&gt; versioned, reviewed, and rolled out incrementally — from the developer workstation (shift-left) to cluster admission and the registry. The same rules can be reused by Quay (immutability, Clair scanning, signing) to lock down the registry.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;6. End-to-End Reference Chain&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Signed commit (gitsign, OIDC identity).&lt;/li&gt;
&lt;li&gt;PaC trigger on Git webhook → versioned &lt;code&gt;PipelineRun&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Image build (Buildah, rootless) + vulnerability scan.&lt;/li&gt;
&lt;li&gt;SBOM and attestation generation.&lt;/li&gt;
&lt;li&gt;Tekton Chains → signed SLSA provenance (Fulcio) + Rekor entry + OCI push to Quay.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ec validate image&lt;/code&gt;: blocking release gate.&lt;/li&gt;
&lt;li&gt;ClusterImagePolicy admission: any unsigned or non-compliant artifact is rejected.&lt;/li&gt;
&lt;li&gt;Continuous SBOM/CVE/VEX correlation in TPA.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h3&gt;7. Curriculum Connections &amp;amp; Aperta Scientia Programs&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;AS200 Program (DevOps Platform Engineer — 399h):&lt;/strong&gt; building containerized applications and CI/CD pipelines (module &lt;strong&gt;DO288&lt;/strong&gt;), operating and hardening the platform at scale (module &lt;strong&gt;DO380&lt;/strong&gt;), and securing containers and OpenShift including SCC, RBAC, image scanning, signing, and admission control (module &lt;strong&gt;DO430&lt;/strong&gt;). Preparation for the &lt;strong&gt;EX188&lt;/strong&gt;, &lt;strong&gt;EX280&lt;/strong&gt;, and &lt;strong&gt;EX288&lt;/strong&gt; certifications.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AS300 Program (AI Platform Engineer — 399h):&lt;/strong&gt; extending the approach to the AI chain — provenance of base images shipping CUDA/PyTorch, signing of model artifacts before deploying a KServe &lt;code&gt;InferenceService&lt;/code&gt; or a vLLM &lt;code&gt;ServingRuntime&lt;/code&gt;, and admission-time rejection of unverified models pulled from external registries. An AI-stack SBOM is also a license inventory and a map of GPU dependencies.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;8. Technical References &amp;amp; Documentation&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 on RHOAI: Declarative Orchestration and MLOps Reproducibility</title><link>https://aperta.io/radar/2026-09-29-kubeflow-pipelines-v2-rhoai-reproducible-mlops/</link><guid isPermaLink="true">https://aperta.io/radar/2026-09-29-kubeflow-pipelines-v2-rhoai-reproducible-mlops/</guid><description>Discover enterprise MLOps orchestration with Kubeflow Pipelines v2 (KFP) and Data Science Pipelines on Red Hat OpenShift AI: containerized workflows, S3 artifact lineage tracking, and automated model lifecycles.</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 on RHOAI: Declarative Orchestration and MLOps Reproducibility&quot; style=&quot;max-width: 100%; height: auto; border-radius: 12px; margin-bottom: 20px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;In enterprise artificial intelligence initiatives, transitioning from exploratory Jupyter notebooks to reliable, automated production workflows represents a major engineering challenge. Without a standardized orchestration framework, platform teams quickly encounter critical bottlenecks in training reproducibility, dataset lineage tracking, heterogeneous compute resource management (CPU/GPU), and tangled step dependencies.&lt;/p&gt;
&lt;p&gt;With the native integration of &lt;strong&gt;Kubeflow Pipelines v2 (KFP)&lt;/strong&gt; within &lt;strong&gt;Data Science Pipelines&lt;/strong&gt; on &lt;strong&gt;Red Hat OpenShift AI (RHOAI)&lt;/strong&gt;, platform engineers gain an enterprise-grade, declarative MLOps orchestration framework designed to streamline and automate the complete model lifecycle.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;1. Declarative Architecture &amp;amp; Data Science Pipelines Operator&lt;/h3&gt;
&lt;p&gt;On OpenShift AI, workflow orchestration is powered by the &lt;strong&gt;Data Science Pipelines Operator (DSPO)&lt;/strong&gt;, which deploys and manages dedicated pipeline infrastructure per project namespace:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Python KFP v2 Specification:&lt;/strong&gt; Pipelines are authored in Python using the &lt;code&gt;kfp&lt;/code&gt; v2 SDK and compiled into standardized, auditable YAML Intermediate Representation (IR) manifests.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Modular Containerized Execution:&lt;/strong&gt; Each pipeline step (&lt;em&gt;component&lt;/em&gt;) runs in an isolated OpenShift Pod container, guaranteeing clean encapsulation of software dependencies (CUDA versions, PyTorch, scikit-learn, data transformation libraries).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Namespace Multi-Tenancy &amp;amp; Isolation:&lt;/strong&gt; Every Data Science project receives its own dedicated pipeline server, segregating secrets, storage credentials, and compute quotas without risk of multi-team interference.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;2. S3 Artifact Management &amp;amp; Lineage Tracking&lt;/h3&gt;
&lt;p&gt;A resilient machine learning pipeline requires immutable tracking of data flows and generated assets:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Object Storage Artifact Persistence (S3 / ODF):&lt;/strong&gt; Data Science Pipelines natively interface with S3-compatible object stores (provided by &lt;strong&gt;OpenShift Data Foundation / Ceph RGW&lt;/strong&gt; or MinIO) to store versioned datasets, model checkpoints, and evaluation metrics.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lineage &amp;amp; Metadata Tracking:&lt;/strong&gt; Every execution (&lt;em&gt;run&lt;/em&gt;) automatically records input and output metadata (hyperparameters, training curves, validation metrics). This comprehensive lineage supports strict compliance and auditability requirements (such as the EU AI Act).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Intelligent Step Caching:&lt;/strong&gt; KFP v2 evaluates cryptographic hashes of inputs and component logic. When an upstream step has already been executed with identical inputs, its cached output is reused instantly (&lt;code&gt;enable_caching=True&lt;/code&gt;), drastically cutting execution latency and expensive GPU computing costs.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;3. Granular Resource Allocation &amp;amp; GPU Scheduling&lt;/h3&gt;
&lt;p&gt;AI pipeline execution demands precise workload sizing across heterogeneous compute infrastructure:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Declarative GPU &amp;amp; CPU Limits:&lt;/strong&gt; Individual components dynamically request hardware accelerators through Kubernetes resource APIs (&lt;code&gt;kubernetes.add_resource_limit(task, &amp;#39;nvidia.com/gpu&amp;#39;, &amp;#39;1&amp;#39;)&lt;/code&gt;) or target dedicated worker nodes using node selectors and tolerations.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Advanced Flow Control:&lt;/strong&gt; Built-in support for parallel loops (&lt;code&gt;dsl.ParallelFor&lt;/code&gt;), conditional branching (&lt;code&gt;dsl.Condition&lt;/code&gt;), and exit handlers ensures clean temporary resource deallocation and automated alerting upon execution failure.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;4. End-to-End MLOps: From Pipeline to KServe / vLLM Serving&lt;/h3&gt;
&lt;p&gt;The true power of an automated pipeline lies in seamlessly closing the loop from training to inference:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Model Registry Ingestion:&lt;/strong&gt; Upon successful validation against performance thresholds, the pipeline registers the candidate model into the central RHOAI Model Registry.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Automated InferenceService Rollout:&lt;/strong&gt; The concluding pipeline step declaratively deploys or updates &lt;strong&gt;KServe&lt;/strong&gt; InferenceServices or &lt;strong&gt;vLLM&lt;/strong&gt; ServingRuntimes, ensuring zero-downtime continuous deployment into production.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GitOps &amp;amp; CI/CD Integration:&lt;/strong&gt; Pipeline definitions versioned in Git repositories can be triggered via webhooks from Tekton / OpenShift Pipelines whenever new data drops or code updates occur.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;5. Curriculum Connections &amp;amp; Aperta Scientia Programs&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;AS300 Program (AI Platform Engineer — 399h):&lt;/strong&gt; Design end-to-end MLOps pipelines with Kubeflow Pipelines v2 and Data Science Pipelines on RHOAI, orchestrate distributed GPU training workloads, manage artifact lineage, and automate KServe/vLLM serving rollouts (module &lt;strong&gt;AI267&lt;/strong&gt; Red Hat OpenShift AI and MLOps).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AS200 Program (DevOps Platform Engineer — 399h):&lt;/strong&gt; Administer the underlying cloud-native infrastructure, configure ODF storage classes (Ceph S3/RBD), enforce RBAC project policies, and integrate automated delivery pipelines via OpenShift Pipelines and GitOps (modules &lt;strong&gt;DO280&lt;/strong&gt; and &lt;strong&gt;DO380&lt;/strong&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;6. Technical References &amp;amp; Documentation&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: Declarative Zero-Trust Policies and Multi-Cluster Remediation</title><link>https://aperta.io/radar/2026-09-28-rhacm-governance-as-code-zero-trust-multicluster/</link><guid isPermaLink="true">https://aperta.io/radar/2026-09-28-rhacm-governance-as-code-zero-trust-multicluster/</guid><description>Explore the Policy Framework in Red Hat Advanced Cluster Management (RHACM): declarative governance, continuous compliance auditing, and proactive Zero-Trust auto-remediation across heterogeneous Kubernetes fleets.</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: Declarative Zero-Trust Policies and Multi-Cluster Remediation&quot; style=&quot;max-width: 100%; height: auto; border-radius: 12px; margin-bottom: 20px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;In modern enterprise cloud-native architectures, Kubernetes and OpenShift deployments frequently span baremetal datacenters, public clouds, and distributed Edge locations. Enforcing a unified security posture, upholding strict regulatory compliance standards (CIS Benchmarks, NIST, HIPAA), and preventing configuration drift across dozens or hundreds of clusters is untenable through manual intervention.&lt;/p&gt;
&lt;p&gt;With the &lt;strong&gt;Policy Framework&lt;/strong&gt; in &lt;strong&gt;Red Hat Advanced Cluster Management for Kubernetes (RHACM)&lt;/strong&gt; (powered upstream by &lt;strong&gt;Open Cluster Management&lt;/strong&gt;), fleet governance enters a new era through &lt;strong&gt;Governance as Code&lt;/strong&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;1. Declarative Architecture of the Policy Framework&lt;/h3&gt;
&lt;p&gt;RHACM&amp;#39;s governance model is built upon decoupled, modular Custom Resource Definitions (CRDs):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;Policy&lt;/code&gt; &amp;amp; &lt;code&gt;PolicySet&lt;/code&gt; CRDs:&lt;/strong&gt; Declaratively specify technical compliance rules grouped into coherent functional bundles (kernel parameters, etcd encryption, RBAC, resource quotas).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Placement &amp;amp; PlacementBinding:&lt;/strong&gt; Dynamically target managed cluster fleets using infrastructure label selectors (&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;Resilient Hub-to-Spoke Distribution:&lt;/strong&gt; The RHACM central Hub propagates policy manifests to local controllers running on each managed cluster (&lt;em&gt;ManagedCluster&lt;/em&gt;), ensuring decentralized enforcement and uninterrupted compliance even during temporary control-plane network partitions.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;2. Configuration Policy Controller &amp;amp; Automated Remediation&lt;/h3&gt;
&lt;p&gt;The policy engine continuously audits the state of managed clusters using expressive operators (&lt;code&gt;musthave&lt;/code&gt;, &lt;code&gt;mustnothave&lt;/code&gt;, &lt;code&gt;mustonlyhave&lt;/code&gt;) across two primary operational modes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;remediationAction: inform&lt;/code&gt; Mode (Audit &amp;amp; Observability):&lt;/strong&gt; Instantly detects and reports non-compliant resources in the central management dashboard and exports Prometheus metrics without mutating existing cluster state (ideal for baseline audits and risk assessments).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;remediationAction: enforce&lt;/code&gt; Mode (Proactive Auto-Healing):&lt;/strong&gt; Automatically resolves configuration drift by creating, patching, or re-applying resources to match the declared target state, effectively preventing unauthorized ad-hoc configuration changes.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;3. Zero-Trust Use Cases &amp;amp; Fleet Hardening&lt;/h3&gt;
&lt;p&gt;The RHACM Policy Framework standardizes mission-critical enterprise security baselines:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Automated etcd Encryption:&lt;/strong&gt; Enforces transparent secret encryption at rest across all OpenShift control planes via the API Server operator.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pod Security &amp;amp; SCC Hardening:&lt;/strong&gt; Strictly enforces OpenShift &lt;em&gt;Security Context Constraints&lt;/em&gt; (SCC) and Kubernetes &lt;em&gt;Pod Security Standards&lt;/em&gt; (PSS) to block privileged pods and privilege escalation (&lt;code&gt;allowPrivilegeEscalation: false&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Certificate &amp;amp; Secret Synchronization:&lt;/strong&gt; Reliably distributes corporate Root CA bundles, SPIFFE/SPIRE trust domains, and standard RBAC roles without leaking cleartext credentials across repositories.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Extensible Ecosystem:&lt;/strong&gt; Seamlessly integrates with third-party policy engines including &lt;strong&gt;Gatekeeper OPA&lt;/strong&gt; and &lt;strong&gt;Kyverno&lt;/strong&gt; for advanced semantic validation.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;4. GitOps Convergence &amp;amp; Enterprise Governance&lt;/h3&gt;
&lt;p&gt;By pairing RHACM with &lt;strong&gt;OpenShift GitOps (ArgoCD)&lt;/strong&gt;, organizational security policies become fully versioned in auditable Git repositories:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CI/CD Validation Pipelines:&lt;/strong&gt; Every policy change undergoes automated linting, PR reviews, and cryptographic signing, fulfilling strict audit trail requirements.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Single Source of Truth:&lt;/strong&gt; The security and operational baseline of the entire infrastructure fleet is stored declaratively, ensuring complete environment reproducibility and disaster readiness.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;5. Aperta Scientia Curriculums &amp;amp; Skills&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;AS200 Course (DevOps Platform Engineer — 399h):&lt;/strong&gt; Advanced mastery of multi-cluster fleet management with RHACM, declarative Zero-Trust policy authoring, and enterprise Kubernetes governance (modules &lt;strong&gt;DO432&lt;/strong&gt; Multicluster Management with RHACM and &lt;strong&gt;DO380&lt;/strong&gt; Enterprise Kubernetes Operations).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AS300 Course (AI Platform Engineer — 399h):&lt;/strong&gt; Standardized provisioning of GPU acceleration operators, cluster quotas, and secure namespace isolation across distributed model training and inference clusters.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;6. Technical References &amp;amp; Sources&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>Weekly Tech Radar Digest: Istio Ambient Mode, vLLM Multi-LoRA, EDA 2.4, KubeVirt vGPU &amp; TrustyAI</title><link>https://aperta.io/radar/2026-09-25-tech-radar-ambient-mesh-vllm-eda-kubevirt-trustyai/</link><guid isPermaLink="true">https://aperta.io/radar/2026-09-25-tech-radar-ambient-mesh-vllm-eda-kubevirt-trustyai/</guid><description>Weekly intelligence briefing: Sidecarless Service Mesh architecture, high-density Multi-LoRA serving, closed-loop Ansible remediation, live vGPU VM migration, and TrustyAI LLM guardrails.</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;Weekly Tech Radar Digest: 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;Key intelligence highlights from the Aperta Scientia technology lab for our &lt;strong&gt;AS200 (DevOps Platform Engineer)&lt;/strong&gt; and &lt;strong&gt;AS300 (AI Platform Engineer)&lt;/strong&gt; curriculums.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;1. OpenShift Service Mesh 3 &amp;amp; Istio Ambient Mode — Sidecarless Architecture&lt;/h3&gt;
&lt;p&gt;Broad adoption of the sidecarless architecture (Ambient Mode) in Red Hat OpenShift Service Mesh 3.0 (Istio).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Key Takeaways:&lt;/strong&gt; Strict separation between the secure L4 transport layer (node-level &lt;code&gt;ztunnel&lt;/code&gt; DaemonSet for transparent zero-overhead mTLS) and the L7 application routing layer (dedicated &lt;code&gt;waypoint&lt;/code&gt; proxies per namespace). Over 80% reduction in memory/CPU footprint with zero downtime during mesh control plane upgrades.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AS200 Impact:&lt;/strong&gt; Embedded in &lt;em&gt;Cloud-Native Networking, Zero Trust Security &amp;amp; Service Mesh (DO328 / DO380)&lt;/em&gt; for advanced network topologies and cryptographic workload isolation.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;2. vLLM Multi-LoRA Serving &amp;amp; Dynamic Adapter Swapping — High GPU Density&lt;/h3&gt;
&lt;p&gt;Major vLLM evolution with native Multi-LoRA Serving under Kubernetes and Red Hat OpenShift AI (RHOAI).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Key Takeaways:&lt;/strong&gt; Concurrent serving of dozens of domain-specific LoRA adapters (legal, finance, code) dynamically attached to a single foundation model without duplicating base model weights in VRAM. Unified cross-LoRA request batching powered by optimized CUDA kernels (Punica / S-LoRA).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AS300 Impact:&lt;/strong&gt; Module &lt;em&gt;LLM Serving &amp;amp; Distributed Inference (AI267)&lt;/em&gt; to maximize GPU cluster ROI and multi-tenant density.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;3. Event-Driven Ansible (EDA) 2.4 &amp;amp; Alertmanager — Closed-Loop Remediation&lt;/h3&gt;
&lt;p&gt;Ansible Automation Platform (AAP) 2.4 / EDA with native event sources for Prometheus Alertmanager and Kubernetes Events.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Key Takeaways:&lt;/strong&gt; Execution of reactive Rulebooks to automate closed-loop cluster remediation: proactive node draining on hardware telemetry alerts, automated TLS certificate renewal, and stale volume cleanup without human intervention.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AS200 Impact:&lt;/strong&gt; Module &lt;em&gt;Advanced Automation, Active Observability &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 — VM &amp;amp; AI Convergence&lt;/h3&gt;
&lt;p&gt;Enhanced KubeVirt 1.3 and OpenShift Virtualization capabilities for virtualized GPUs (vGPU) with Live Migration support.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Key Takeaways:&lt;/strong&gt; Seamless memory context suspension/resumption and dynamic 1Gi HugePage allocation to unify legacy analytics VMs and containerized inference pods on the same bare-metal substrate.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AS200 Impact:&lt;/strong&gt; Module &lt;em&gt;OpenShift Virtualization, Advanced Memory Management &amp;amp; Hybridization (DO316 / DO380)&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;5. TrustyAI &amp;amp; LLM Guardrails on RHOAI — Governance &amp;amp; EU AI Act Compliance&lt;/h3&gt;
&lt;p&gt;Integration of TrustyAI with LLM guardrail frameworks (NeMo Guardrails, Llama Guard) as sidecars on KServe / OpenShift AI ServingRuntimes.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Key Takeaways:&lt;/strong&gt; Continuous model fairness evaluation (SPD, Disparate Impact Ratio metrics), contextual data drift detection, prompt injection blocking, and automated PII redaction.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AS300 Impact:&lt;/strong&gt; Module &lt;em&gt;AI Governance, Generative Systems Security &amp;amp; Ethical MLOps (AI267)&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;6. Technical Sources &amp;amp; References&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: Sidecarless Architecture, L4 ztunnel, and L7 Waypoint Proxies</title><link>https://aperta.io/radar/2026-09-25-openshift-service-mesh-3-istio-ambient-mode-sidecarless/</link><guid isPermaLink="true">https://aperta.io/radar/2026-09-25-openshift-service-mesh-3-istio-ambient-mode-sidecarless/</guid><description>Discover the sidecarless architecture of OpenShift Service Mesh 3: transparent L4 mTLS with Rust ztunnel, on-demand L7 Waypoint proxies, and massive memory overhead reduction.</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: Sidecarless Architecture, L4 ztunnel, and L7 Waypoint Proxies&quot; style=&quot;max-width: 100%; height: auto; border-radius: 12px; margin-bottom: 20px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Enterprise adoption of service meshes has historically suffered from a significant operational bottleneck: mandatory Envoy sidecar container injection inside every single application pod. This legacy architecture induced substantial CPU/RAM overhead, pod lifecycle friction (init-container sequencing, lingering sidecars terminating batch jobs), and forced disruptive mass pod restarts during service mesh control plane upgrades.&lt;/p&gt;
&lt;p&gt;With &lt;strong&gt;OpenShift Service Mesh 3&lt;/strong&gt; (powered by upstream &lt;strong&gt;Istio Ambient Mode&lt;/strong&gt;), cloud-native network architectures take a major leap forward through a streamlined &lt;em&gt;sidecarless&lt;/em&gt; design.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;1. Layer Separation &amp;amp; Transparent L4 mTLS via ztunnel&lt;/h3&gt;
&lt;p&gt;The Ambient data plane strictly decouples L4 transport security from L7 application routing:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Lightweight Node-Level ztunnel DaemonSet:&lt;/strong&gt; Implemented in Rust, the &lt;em&gt;Zero Trust Tunnel&lt;/em&gt; (&lt;code&gt;ztunnel&lt;/code&gt;) intercepts node-local traffic directly within the Linux network stack without altering application manifests.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HBONE Protocol (HTTP-Based Overlay Network):&lt;/strong&gt; Mutual TLS encryption and SPIFFE/SPIRE cryptographic workload identity are established transparently between nodes across encapsulated L4 tunnels (port 15008).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Zero Application Restarts:&lt;/strong&gt; Enabling Zero-Trust encryption across a namespace only requires a declarative label (&lt;code&gt;istio.io/dataplane-mode=ambient&lt;/code&gt;), without interrupting running production workloads.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;2. Declarative On-Demand L7 Waypoint Proxies&lt;/h3&gt;
&lt;p&gt;Complex Layer 7 processing is no longer enforced indiscriminately:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Targeted Envoy Proxies:&lt;/strong&gt; Dedicated L7 proxies (&lt;em&gt;Waypoint&lt;/em&gt; proxies) are deployed exclusively for services requiring advanced traffic policies: canary routing, fault injection, HTTP/gRPC inspection, rate limiting, or granular RBAC authorization rules.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Flexible Scope:&lt;/strong&gt; A Waypoint proxy can be shared across an entire namespace or scoped to a specific &lt;code&gt;ServiceAccount&lt;/code&gt;, drastically reducing attack surface and simplifying configuration.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;3. Resource Optimization &amp;amp; Native AI / MLOps Job Compatibility&lt;/h3&gt;
&lt;p&gt;The sidecarless pattern resolves critical friction on modern container platforms:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Significant Footprint Reduction:&lt;/strong&gt; Eliminating the 50–100 MB static RAM allocation per pod recovers dozens of gigabytes across high-density microservice clusters.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Frictionless AI Pipelines &amp;amp; Ephemeral Jobs:&lt;/strong&gt; Batch workloads (Kubeflow Pipelines, Ray worker pods, PyTorch distributed jobs) and large LLM ServingRuntimes (vLLM, KServe) complete seamlessly without hanging on zombie sidecar containers.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;4. Skills &amp;amp; Aperta Scientia Curriculum Alignment&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;AS200 Track (DevOps Platform Engineer — 399h):&lt;/strong&gt; Cloud-native networking, Zero-Trust security with OpenShift Service Mesh 3, and GitOps policy management (modules &lt;strong&gt;DO380&lt;/strong&gt; and &lt;strong&gt;DO280&lt;/strong&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AS300 Track (AI Platform Engineer — 399h):&lt;/strong&gt; Securing distributed LLM inference pipelines and multi-model routing without network latency penalties.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;5. Technical Sources &amp;amp; References&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 Guide&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: vGPU Live Migration and 1Gi HugePages on Baremetal</title><link>https://aperta.io/radar/2026-09-24-kubevirt-openshift-virtualization-live-migration-vgpu-hugepages/</link><guid isPermaLink="true">https://aperta.io/radar/2026-09-24-kubevirt-openshift-virtualization-live-migration-vgpu-hugepages/</guid><description>How KubeVirt and OpenShift Virtualization unify VMs and containers: zero-downtime vGPU Live Migration and 1Gi HugePages memory performance.</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: vGPU Live Migration and 1Gi HugePages on Baremetal&quot; style=&quot;max-width: 100%; height: auto; border-radius: 12px; margin-bottom: 20px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;With legacy hypervisor licensing costs escalating and cloud-native consolidation accelerating, platform teams face a common trade-off: refactoring all monolithic stateful workloads into containers immediately or sustaining expensive dual-stack operations.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;OpenShift Virtualization&lt;/strong&gt; (powered upstream by &lt;strong&gt;KubeVirt&lt;/strong&gt;) eliminates this divide by integrating virtual machines as native, first-class primitives inside the Kubernetes control plane.&lt;/p&gt;
&lt;p&gt;Recent systems engineering advancements provide production-ready parity with legacy hypervisors.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;1. vGPU-Aware Live Migration&lt;/h3&gt;
&lt;p&gt;Live migration is no longer restricted to CPU-only instances:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Orchestration via GPU Operator &amp;amp; KubeVirt :&lt;/strong&gt; Seamlessly migrate virtual machines utilizing NVIDIA vGPU profiles (vCS/vApps) across physical baremetal nodes during maintenance drains (&lt;code&gt;oc adm node drain&lt;/code&gt;) with zero service downtime.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Context Preservation :&lt;/strong&gt; Live inference sessions and virtualized analytical pipelines retain full memory state throughout node evacuations.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;2. Low-Latency Memory Throughput with 1Gi HugePages&lt;/h3&gt;
&lt;p&gt;For high-throughput databases (PostgreSQL, Oracle, SAP) and virtualized AI serving:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Bypassing Page Table Overhead :&lt;/strong&gt; Pinned 2Mi and 1Gi HugePages eliminate Linux kernel Translation Lookaside Buffer (&lt;em&gt;TLB misses&lt;/em&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Baremetal-Grade Performance :&lt;/strong&gt; Memory bandwidth and access latencies match physical hardware baselines.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;3. High-Throughput Storage &amp;amp; Secondary Networking&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Containerized Data Importer (CDI) &amp;amp; ODF CSI :&lt;/strong&gt; Sub-second virtual disk cloning and snapshotting on &lt;code&gt;ReadWriteMany&lt;/code&gt; (RWX) Ceph RBD storage pools.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enterprise Network Integration :&lt;/strong&gt; Multus CNI and SR-IOV enable direct mapping to legacy corporate VLANs without overlay network penalties.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;4. Production Engineering at Aperta Scientia&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;AS200 Track (DevOps Platform Engineer — 399h) :&lt;/strong&gt; In-depth operations with OpenShift Virtualization (&lt;strong&gt;DO316&lt;/strong&gt; and &lt;strong&gt;DO380&lt;/strong&gt; modules), declarative GitOps VM lifecycle management, and preparation for the &lt;strong&gt;Red Hat Certified Specialist in OpenShift Virtualization (EX316)&lt;/strong&gt; exam.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;5. Technical Sources &amp;amp; References&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>Distributed Milvus &amp; OpenShift Data Foundation: High-Performance Storage Architecture for Enterprise RAG</title><link>https://aperta.io/radar/2026-09-18-distributed-milvus-openshift-data-foundation-rag-storage/</link><guid isPermaLink="true">https://aperta.io/radar/2026-09-18-distributed-milvus-openshift-data-foundation-rag-storage/</guid><description>How pairing distributed Milvus 2.4+ with Rook-Ceph and ODF on OpenShift delivers sub-5ms semantic search latencies across 10M+ vector stores.</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;Distributed Milvus &amp; OpenShift Data Foundation: High-Performance Storage Architecture for Enterprise RAG&quot; style=&quot;max-width: 100%; height: auto; border-radius: 12px; margin-bottom: 20px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;In enterprise Retrieval-Augmented Generation (RAG) pipelines, scalability bottlenecks inevitably shift to the vector storage layer. Scaling corporate knowledge bases beyond 10 million embedding vectors puts severe operational pressure on traditional persistent volume layers.&lt;/p&gt;
&lt;p&gt;Pairing distributed &lt;strong&gt;Milvus 2.4+&lt;/strong&gt; with &lt;strong&gt;OpenShift Data Foundation (ODF / Rook-Ceph)&lt;/strong&gt; delivers a decoupled, sovereign, and highly available data backbone capable of sustaining sub-5ms semantic query latencies across bare-metal accelerated clusters.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;1. Bottlenecks of Monolithic Vector Databases in Production&lt;/h3&gt;
&lt;p&gt;Deploying standalone, single-node vector databases introduces critical constraints:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Compute / Storage Contention:&lt;/strong&gt; QueryNodes and ingestion DataNodes compete for the same local disk I/O and host RAM.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rigid Scaling:&lt;/strong&gt; Inability to independently scale semantic search query throughput from persistent raw index storage capacity.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Single Points of Failure:&lt;/strong&gt; Worker node outages risk corrupting persistent vector indexes, causing downstream LLM serving disruptions.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;2. Distributed Milvus Architecture on OpenShift Data Foundation&lt;/h3&gt;
&lt;p&gt;Operating distributed Milvus on OpenShift establishes clean separation across data, compute, and storage tiers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Ceph RBD / CephFS Persistence Layer:&lt;/strong&gt; ODF delivers high-IOPS block storage (Ceph RBD) via dynamic CSI plugins to persist vector segment logs and HNSW/IVF-PQ indexes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Decoupled Messaging &amp;amp; Object Store:&lt;/strong&gt; Ingestion streaming is managed via Kafka/Pulsar topics, while immutable collection snapshots are backed by Ceph RGW or sovereign S3 object storage.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bare-Metal QueryNode Isolation:&lt;/strong&gt; QueryNodes load vector indexes into memory for rapid cosine/L2 distance calculations without blocking background vector ingestion, sustaining sub-5ms response times.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;3. Production Engineering in Aperta Curriculums&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;AS300 Track (AI Platform Engineer — 399h):&lt;/strong&gt; Designing distributed vector architectures (Milvus, Qdrant), configuring ODF storage classes, and orchestrating RAG pipelines with vLLM and KServe.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AS200 Track (DevOps Platform Engineer):&lt;/strong&gt; Storage lifecycle management with OpenShift Data Foundation (Rook-Ceph) and end-to-end telemetry instrumentation.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;4. Technical Sources &amp;amp; References&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>Stateful Disaster Recovery on Kubernetes: OADP 1.4, CSI Data Mover &amp; Declarative Backup</title><link>https://aperta.io/radar/2026-09-17-oadp-velero-stateful-disaster-recovery-kubernetes-openshift/</link><guid isPermaLink="true">https://aperta.io/radar/2026-09-17-oadp-velero-stateful-disaster-recovery-kubernetes-openshift/</guid><description>How OpenShift API for Data Protection (OADP / Velero) and CSI Data Movers automate out-of-band backups and declarative disaster recovery.</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;Stateful Disaster Recovery on Kubernetes: OADP 1.4, CSI Data Mover &amp; Declarative Backup&quot; style=&quot;max-width: 100%; height: auto; border-radius: 12px; margin-bottom: 20px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;In enterprise Kubernetes and OpenShift architectures, GitOps workflows ensure declarative immutability for code and infrastructure manifests. However, during major cluster outages, storage corruption, or ransomware events, Git repositories cannot restore persistent state: distributed databases, Kafka message queues, vector indexes, or model cache storage.&lt;/p&gt;
&lt;p&gt;Adopting &lt;strong&gt;OpenShift API for Data Protection (OADP 1.4)&lt;/strong&gt; powered by &lt;strong&gt;Velero&lt;/strong&gt; shifts disaster recovery from fragile manual scripting to repeatable, policy-driven orchestration.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;1. The GitOps Blind Spot for Stateful Workloads&lt;/h3&gt;
&lt;p&gt;Operating production clusters without unified stateful backup introduces critical operational risks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Decoupled Data and Metadata:&lt;/strong&gt; Backing up raw storage volumes alone fails to capture application-level &lt;code&gt;ConfigMaps&lt;/code&gt;, &lt;code&gt;Secrets&lt;/code&gt;, and operator Custom Resource Definitions (&lt;code&gt;CRDs&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;I/O Freezes &amp;amp; Downtime:&lt;/strong&gt; Legacy storage-level snapshot mechanisms often lock production workloads, increasing latency jitter and service degradation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Vulnerability to Cluster-Wide Corruption:&lt;/strong&gt; Local cluster snapshots remain susceptible to etcd failures or administrative errors without off-site air-gapped replication.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;2. Core Capabilities of OADP 1.4 and CSI Data Movers&lt;/h3&gt;
&lt;p&gt;OADP 1.4 delivers essential capabilities for mission-critical enterprise resilience:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Out-of-Band CSI Data Mover:&lt;/strong&gt; OADP triggers standard &lt;code&gt;VolumeSnapshot&lt;/code&gt; CRDs, provisions ephemeral data mover pods, and streams snapshot deltas directly into remote S3/Ceph object storage without locking application volumes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Granular Namespace-Level Recovery:&lt;/strong&gt; Backs up application manifests, network policies, RBAC, and persistent volume data in a single coordinated operation, enabling one-click cross-cluster migration and multi-cloud DR.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ransomware &amp;amp; Immutable Storage Protection:&lt;/strong&gt; Native integration with S3 Object Lock and Ceph WORM retention policies creates immutable, tamper-proof recovery points.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;3. Production Engineering in Aperta Curriculums&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;AS200 Track (DevOps Platform Engineer — 399h):&lt;/strong&gt; Storage resilience (OpenShift Data Foundation / Rook-Ceph), automated OADP backup scheduling, and hands-on bare-metal disaster recovery drills.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AS300 Track (AI Platform Engineer):&lt;/strong&gt; Protecting and migrating distributed vector stores (Milvus, Qdrant) and AI model artifact repositories.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;4. Technical Sources &amp;amp; References&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>Kubernetes GPU Orchestration: Dynamic Resource Allocation (DRA) and NVLink Topology on OpenShift</title><link>https://aperta.io/radar/2026-09-15-kubernetes-dra-nvidia-gpu-operator-nvlink-topology/</link><guid isPermaLink="true">https://aperta.io/radar/2026-09-15-kubernetes-dra-nvidia-gpu-operator-nvlink-topology/</guid><description>How Kubernetes DRA standards and the NVIDIA GPU Operator eliminate worker reboots for dynamic MIG slicing and optimize NVLink topology awareness.</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;Kubernetes GPU Orchestration: Dynamic Resource Allocation (DRA) and NVLink Topology on OpenShift&quot; style=&quot;max-width: 100%; height: auto; border-radius: 12px; margin-bottom: 20px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Enterprise AI infrastructure operations have long suffered from a rigid GPU scheduling paradigm: the legacy Kubernetes &lt;code&gt;DevicePlugin&lt;/code&gt; model treated accelerators as indivisible whole units (&lt;code&gt;nvidia.com/gpu: 1&lt;/code&gt;), requiring disruptive node reboots or manual reconfiguration to alter MIG (Multi-Instance GPU) slice profiles.&lt;/p&gt;
&lt;p&gt;The integration of &lt;strong&gt;Dynamic Resource Allocation (DRA)&lt;/strong&gt; with the &lt;strong&gt;NVIDIA GPU Operator&lt;/strong&gt; on &lt;strong&gt;Red Hat OpenShift&lt;/strong&gt; redefines how accelerator hardware is partitioned, scheduled, and connected for distributed fine-tuning and high-throughput LLM serving.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;1. Bottlenecks of Legacy GPU Allocation&lt;/h3&gt;
&lt;p&gt;Standard Kubernetes cluster deployments without DRA face major constraints:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;VRAM Fragmentation &amp;amp; Idle Waste:&lt;/strong&gt; Binding an entire 80GB H100 or L40S GPU to lightweight embedding models or rerankers locks expensive capacity away from other workloads.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Static MIG Profile Locking:&lt;/strong&gt; Switching between MIG configurations (e.g. from 7x 1g.10gb instances to a single 7g.80gb die) required draining and rebooting physical worker nodes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;NVLink Topology Blindness:&lt;/strong&gt; Standard schedulers cannot enforce that multi-GPU tensor-parallel pods (vLLM, Ray Train) land on GPU sockets interconnected by physical high-speed NVLink bridges.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;2. Key Advances of Kubernetes DRA and CDI&lt;/h3&gt;
&lt;p&gt;Leveraging declarative Kubernetes DRA primitives (&lt;code&gt;ResourceClaim&lt;/code&gt;, &lt;code&gt;ResourceClaimTemplate&lt;/code&gt;, &lt;code&gt;ResourceSlice&lt;/code&gt;) alongside the &lt;strong&gt;Container Device Interface (CDI)&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Structured Parameter Claims:&lt;/strong&gt; Workloads declare exact hardware needs (precise VRAM footprint, compute instance slices, interconnect requirements).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Live Slicing &amp;amp; Partitioning:&lt;/strong&gt; Granular allocation of GPU slices and dynamic MIG reconfiguration on demand without cluster node downtime.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;NVLink Topology-Aware Scheduling:&lt;/strong&gt; Schedulers automatically co-locate distributed multi-GPU pods across physically linked cards, minimizing inter-GPU communication latency.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;3. Production Engineering in Aperta Curriculums&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;AS300 Track (AI Platform Engineer — 399h):&lt;/strong&gt; Advanced NVIDIA GPU Operator administration, DRA/MIG tuning, vLLM Tensor Parallelism optimization, and preparation for the &lt;strong&gt;Red Hat Certified Specialist in AI/ML (EX267)&lt;/strong&gt; exam.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AS200 Track (DevOps Platform Engineer):&lt;/strong&gt; Managing accelerated bare-metal worker nodes and telemetry instrumentation using Prometheus and DCGM exporters.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;4. Technical Sources &amp;amp; References&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;Official Kubernetes Documentation&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 at Scale with vLLM and OpenShift AI: Serving Hundreds of Domain Adapters on a Single GPU Cluster</title><link>https://aperta.io/radar/2026-09-15-multi-lora-serving-vllm-openshift-ai/</link><guid isPermaLink="true">https://aperta.io/radar/2026-09-15-multi-lora-serving-vllm-openshift-ai/</guid><description>Comprehensive engineering guide to serving dozens of specialized LoRA adapters on a single base model using vLLM and Red Hat OpenShift AI without multiplying GPU costs.</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 at Scale with vLLM and OpenShift AI: Serving Hundreds of Domain Adapters on a Single GPU Cluster&quot; style=&quot;max-width: 100%; height: auto; border-radius: 12px; margin-bottom: 20px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;In enterprise generative AI deployments, customizing foundation models for distinct business departments (Legal, Finance, HR, Customer Support, Software Engineering) quickly hits a critical infrastructure and economic bottleneck: &lt;strong&gt;the high cost and scarcity of enterprise GPU resources&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;If every internal use case deploys its own full fine-tuned model (for instance, a 70B or 8B model duplicated 20 times), the infrastructure scales out uncontrollably across GPU nodes (NVIDIA H100, B200, or L40S), leading to massive VRAM fragmentation, low average utilization, and unsustainable operational expenditure.&lt;/p&gt;
&lt;p&gt;The &lt;strong&gt;LoRA (Low-Rank Adaptation)&lt;/strong&gt; method enables teams to train ultra-lightweight adapters (ranging from 10 MB to 50 MB) by fine-tuning only a tiny fraction of weights while keeping the &lt;strong&gt;Base Model frozen&lt;/strong&gt;. However, how can an enterprise platform dynamically serve hundreds of concurrent LoRA adapters across a shared GPU cluster without downtime, cold-reload latency, or memory crashes?&lt;/p&gt;
&lt;p&gt;Explore the architecture of &lt;strong&gt;Multi-LoRA Serving&lt;/strong&gt; using &lt;strong&gt;vLLM&lt;/strong&gt; and &lt;strong&gt;Red Hat OpenShift AI (RHOAI)&lt;/strong&gt; to achieve unprecedented GPU workload consolidation in production environments.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;1. The Multi-Tenant Enterprise LLM Dilemma&lt;/h3&gt;
&lt;p&gt;When organizations deploy specialized AI models for different business lines, two architectural paradigms collide:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;┌─────────────────────────────────────────────────────────────────────────────┐
│                     Approach 1: Siloed Dedicated Models                     │
├─────────────────────────────────────────────────────────────────────────────┤
│ • 1 Pod per Department (Finance 8B, Legal 8B, HR 8B, Support 8B...)        │
│ • VRAM per pod: 16 GB base weights + KV-Cache                              │
│ • 10 use cases = 10 dedicated GPUs (160 GB total VRAM)                     │
│ • GPU Cost: High | Average GPU Utilization: 15% (severe underutilization)  │
└─────────────────────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────────────────────┐
│                    Approach 2: Shared Multi-LoRA Serving                    │
├─────────────────────────────────────────────────────────────────────────────┤
│ • 1 Single vLLM Pod with Base Model in VRAM (e.g. Granite 3.1 8B)           │
│ • Dozens of LoRA adapters stored on Ceph / S3 object storage (30 MB each)  │
│ • Dynamic loading and multiplexing of adapters within the same batch        │
│ • 10 use cases = 1 single GPU (24 GB total VRAM for Base + LoRA Pool)      │
│ • GPU Cost: Reduced by 85% | GPU Utilization: 80%+                         │
└─────────────────────────────────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;According to seminal research from &lt;a href=&quot;https://arxiv.org/abs/2311.03285&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;UC Berkeley (S-LoRA)&lt;/a&gt; and engineering benchmarks by &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;, Multi-LoRA Serving multiplies model density per GPU by 4x to 8x while preserving optimal inference throughput.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;2. Internal Mechanics of Multi-LoRA in vLLM: PagedLoRA and Unified Batching&lt;/h3&gt;
&lt;p&gt;The &lt;strong&gt;vLLM&lt;/strong&gt; inference engine natively integrates high-performance Multi-LoRA management built upon &lt;strong&gt;S-LoRA (Serving Thousands of Concurrent LoRA Adapters)&lt;/strong&gt; principles:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Immutable Shared Base Model:&lt;/strong&gt; Foundation model weights (e.g. &lt;code&gt;granite-3.1-8b-instruct&lt;/code&gt; or &lt;code&gt;Llama-3.3-70B&lt;/code&gt;) are loaded once into VRAM and shared across all incoming requests.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Unified Paging for LoRA Weights:&lt;/strong&gt; Just as &lt;strong&gt;PagedAttention&lt;/strong&gt; breaks down the KV-Cache into non-contiguous memory blocks, vLLM manages memory reserved for LoRA matrices ($A$ and $B$) as dynamic pages.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Multi-LoRA Batched GEMM (PyTorch / Triton Kernels):&lt;/strong&gt; vLLM can process within a &lt;strong&gt;single continuous batch&lt;/strong&gt; a request targeted at the Finance adapter alongside a request for the Legal adapter, executing the respective low-rank matrix multiplications via optimized CUDA/Triton kernels.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LRU Cache &amp;amp; Hot-Swapping:&lt;/strong&gt; Frequently accessed adapters remain warm in VRAM. If a cold adapter is invoked, vLLM streams its weights in milliseconds from host RAM or shared CephFS/S3 storage without interrupting ongoing inference loops.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;                  ┌─────────────────────────────────────┐
                  │   Incoming Requests / AI Agents     │
                  └──────────────────┬──────────────────┘
                                     │
           [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]   │ │
                  │ └─────────────────────────────────┘ │
                  └──────────────────┬──────────────────┘
                                     │
                                     ▼
                      Generated Output Tokens (Stream)
&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h3&gt;3. Declarative Multi-LoRA Deployment on OpenShift AI with KServe&lt;/h3&gt;
&lt;p&gt;To deploy a high-availability Multi-LoRA inference service on &lt;strong&gt;Red Hat OpenShift AI (RHOAI)&lt;/strong&gt;, we configure a vLLM &lt;code&gt;ServingRuntime&lt;/code&gt; referencing shared adapter volumes hosted on enterprise storage (Red Hat OpenShift Data Foundation / Ceph).&lt;/p&gt;
&lt;h4&gt;Multi-LoRA ServingRuntime Manifest (&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;Key vLLM Multi-LoRA Configuration Parameters:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--enable-lora&lt;/code&gt;: Activates the PagedLoRA execution engine and dynamic kernel scheduling.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--max-loras&lt;/code&gt;: Maximum number of active LoRA adapters pinned in GPU VRAM simultaneously.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--max-lora-rank&lt;/code&gt;: Maximum supported LoRA rank ($r$) across all adapters (e.g. $r=16, 32, 64$).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--lora-modules&lt;/code&gt;: Maps served model alias names to storage paths containing adapter weights and config files.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;4. Dynamic Request Routing &amp;amp; Hot Adapter Invocations&lt;/h3&gt;
&lt;p&gt;The deployed vLLM runtime provides an OpenAI-compatible REST endpoint (&lt;code&gt;/v1/chat/completions&lt;/code&gt;). Applications and agentic systems route requests simply by targeting the adapter name in the payload:&lt;/p&gt;
&lt;h4&gt;Example Request to the Legal Domain Adapter:&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;You are a legal compliance specialist in corporate contracts and data protection regulations.&amp;quot;
      },
      {
        &amp;quot;role&amp;quot;: &amp;quot;user&amp;quot;,
        &amp;quot;content&amp;quot;: &amp;quot;Outline the mandatory clauses for a B2B cloud processing sub-contract under European regulations.&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;Dynamic Hot Loading via Management Endpoint:&lt;/h4&gt;
&lt;p&gt;In modern vLLM versions, new adapters can be registered on the fly without restarting pods:&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. Architecture &amp;amp; Economic Comparison&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;Dedicated Models (1 Pod / Use Case)&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;Multi-LoRA vLLM on 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;GPU Nodes Required (for 10 Domain Adapters 8B)&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;10x NVIDIA L40S (480 GB total VRAM)&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;1x to 2x NVIDIA L40S (48-96 GB total VRAM)&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;VRAM Footprint per Active Adapter&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;~16 GB (Full model weights)&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;~35 MB to 120 MB (LoRA $A$ &amp;amp; $B$ matrices)&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;New Domain Onboarding Time&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;10-15 min (Pod scheduling, image pull, cold GPU init)&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;&amp;lt; 2 seconds (Dynamic LoRA hot-load)&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Cost Efficiency (Tokens/sec per $ invested)&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Low (Fragmented idle memory)&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Maximum (+400% GPU efficiency gain)&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Kubernetes Operational Overhead&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;10 Deployments, 10 HPAs, 10 Services&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;1 Unified Runtime, Centralized Prometheus Observability&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;hr&gt;
&lt;h3&gt;6. Production Best Practices for Platform &amp;amp; MLOps Teams&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Standardize on a Single Base Model Family:&lt;/strong&gt; Align organizational fine-tuning on a unified foundation model (e.g. IBM Granite 3.1 8B/70B or Llama 3.3) to maximize multi-tenant reuse.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Balance LoRA Pool vs. KV-Cache:&lt;/strong&gt; Prevent over-allocating &lt;code&gt;--max-loras&lt;/code&gt; at the expense of context memory. Maintain a healthy ratio (10-15% VRAM for LoRA weights, 75-80% for PagedAttention KV-Cache).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Establish a Centralized Adapter Registry:&lt;/strong&gt; Store versioned LoRA weights in secure S3 buckets integrated with MLflow or the OpenShift AI Model Registry.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitor Dedicated Prometheus Metrics:&lt;/strong&gt; Track &lt;code&gt;vllm:num_loras_in_gpu&lt;/code&gt; and &lt;code&gt;vllm:num_loras_in_cpu&lt;/code&gt; to adjust replica thresholds ahead of load spikes.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h3&gt;Master Enterprise AI Platform Engineering with Aperta Scientia&lt;/h3&gt;
&lt;p&gt;Optimizing enterprise inference infrastructure, operating multi-tenant LLM services, and maximizing GPU density are among the highest-leverage capabilities in modern Cloud &amp;amp; AI Engineering.&lt;/p&gt;
&lt;p&gt;Aperta Scientia prepares your technical leaders and engineers for enterprise production realities:&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;: The elite 3-month curriculum mastering &lt;strong&gt;Red Hat OpenShift AI (RHOAI)&lt;/strong&gt;, &lt;strong&gt;vLLM / SGLang&lt;/strong&gt; optimization, &lt;strong&gt;Multi-LoRA&lt;/strong&gt; architectures, fine-tuning with &lt;strong&gt;InstructLab&lt;/strong&gt;, advanced GPU scheduling with &lt;strong&gt;DRA / MIG&lt;/strong&gt;, and governance with &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;: The foundational curriculum to architect resilient &lt;strong&gt;Red Hat OpenShift&lt;/strong&gt; clusters, automate delivery with &lt;strong&gt;GitOps (ArgoCD)&lt;/strong&gt;, and manage scalable cloud-native storage with &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>Intelligent LLM Autoscaling with KEDA and vLLM on OpenShift: Scaling on KV-Cache Pressure and ITL Latency</title><link>https://aperta.io/radar/2026-09-14-autoscaling-llm-keda-vllm-kv-cache-openshift/</link><guid isPermaLink="true">https://aperta.io/radar/2026-09-14-autoscaling-llm-keda-vllm-kv-cache-openshift/</guid><description>Comprehensive engineering guide for dynamically scaling production LLM servers: why standard HPA fails and how to configure KEDA with native vLLM metrics.</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;Intelligent LLM Autoscaling with KEDA and vLLM on OpenShift: Scaling on KV-Cache Pressure and ITL Latency&quot; style=&quot;max-width: 100%; height: auto; border-radius: 12px; margin-bottom: 20px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;In enterprise large language model (LLM) production deployments, &lt;strong&gt;infrastructure autoscaling&lt;/strong&gt; presents a critical operational and financial dilemma:
On one hand, over-provisioning high-end GPU nodes (NVIDIA H100/H200, B200, or L40S) leads to astronomical cloud costs during off-peak hours. On the other hand, under-provisioning leads to queue saturation, memory exhaustion, and unacceptable spikes in &lt;strong&gt;Time-To-First-Token (TTFT)&lt;/strong&gt; and &lt;strong&gt;Inter-Token Latency (ITL)&lt;/strong&gt; for interactive users and AI agents.&lt;/p&gt;
&lt;p&gt;The traditional reaction of infrastructure teams is to configure a standard Kubernetes &lt;strong&gt;Horizontal Pod Autoscaler (HPA)&lt;/strong&gt; based on CPU utilization, system RAM, or generic GPU memory. However, for modern continuous-batching inference engines like &lt;strong&gt;vLLM&lt;/strong&gt; or &lt;strong&gt;TGI&lt;/strong&gt;, this approach is fundamentally broken: VRAM is pre-allocated up to 90% at engine boot via &lt;strong&gt;PagedAttention&lt;/strong&gt;, leaving external memory metrics flat, static, and completely blind to real workload demands.&lt;/p&gt;
&lt;p&gt;Learn how to implement &lt;strong&gt;intelligent event-driven autoscaling using KEDA (Kubernetes Event-driven Autoscaling)&lt;/strong&gt; on &lt;strong&gt;Red Hat OpenShift AI (RHOAI)&lt;/strong&gt;, driving the lifecycle of inference replicas directly from internal &lt;strong&gt;KV-Cache pressure&lt;/strong&gt; and real-time request queue metrics.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;1. Why Traditional Autoscaling Fails for LLMs&lt;/h3&gt;
&lt;p&gt;To understand why traditional autoscaling mechanisms fail on GenAI workloads, we must analyze the internal mechanics of modern inference engines:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;┌─────────────────────────────────────────────────────────────────────────────┐
│                       Why Standard HPA is Blind to LLMs                     │
├─────────────────────────────────────────────────────────────────────────────┤
│ 1. VRAM Memory : vLLM pre-allocates KV-Cache at boot (gpu_memory_util=0.90).│
│    =&amp;gt; Kubernetes perceives 90% VRAM constantly (zero workload signal).      │
│                                                                             │
│ 2. GPU Utilization (%) : Wildly oscillates between Prefill and Decode.      │
│    =&amp;gt; Causes rapid flapping, thrashing, and destructive pod termination.     │
│                                                                             │
│ 3. HTTP Request Rate (RPS) : Not all prompts are created equal!              │
│    =&amp;gt; A 4,000-token prompt saturates the KV-Cache 20x more than short queries.│
└─────────────────────────────────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To enable predictive, smooth, and cost-effective scaling, Kubernetes must monitor the internal state of the continuous batching iteration loop via metrics exposed by the vLLM &lt;code&gt;/metrics&lt;/code&gt; endpoint.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;2. Key vLLM Metrics for Production Autoscaling&lt;/h3&gt;
&lt;p&gt;vLLM natively exposes high-fidelity Prometheus metrics. Three core signals form the foundation of intelligent autoscaling:&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; The count of incoming requests queued in vLLM&amp;#39;s internal scheduling queue waiting for available KV-Cache blocks. Any value above zero indicates immediate compute saturation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;vllm:gpu_cache_usage_factor&lt;/code&gt; :&lt;/strong&gt; The proportion of KV-Cache memory blocks currently allocated for active decoding sequences (normalized from &lt;code&gt;0.0&lt;/code&gt; to &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; The effective end-to-end token latency experienced by clients, ideal for alerting and SLA guardrails.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;                  ┌─────────────────────────────────────────────────────────┐
                  │       Ingress Traffic (Incoming LLM Requests)           │
                  └────────────────────────────┬────────────────────────────┘
                                               │
                                               ▼
                  ┌─────────────────────────────────────────────────────────┐
                  │     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: triggers on cache &amp;gt; 0.85 or waiting &amp;gt; 2) │
                  └────────────────────────────┬────────────────────────────┘
                                               │ Scale Out / Scale In
                                               ▼
                  ┌─────────────────────────────────────────────────────────┐
                  │      OpenShift GPU Orchestrator (DRA / MachineSet)      │
                  │      Spawns new vLLM Pods on available GPU Worker Nodes │
                  └─────────────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h3&gt;3. Declarative Architecture: KEDA &amp;amp; ScaledObject Configuration&lt;/h3&gt;
&lt;p&gt;On Red Hat OpenShift, KEDA is deployed directly via OperatorHub and natively integrates with &lt;strong&gt;OpenShift User-Workload Monitoring&lt;/strong&gt; to query Prometheus metrics securely.&lt;/p&gt;
&lt;h4&gt;Step 1: Enable the ServiceMonitor for vLLM&lt;/h4&gt;
&lt;p&gt;This manifest instructs OpenShift Monitoring to scrape the vLLM runtime metrics every 10 seconds:&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;Step 2: Define KEDA TriggerAuthentication for Thanos Querier&lt;/h4&gt;
&lt;p&gt;To securely allow KEDA to query OpenShift&amp;#39;s internal Thanos metrics endpoint:&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;Step 3: Deploy the Multi-Trigger KEDA ScaledObject&lt;/h4&gt;
&lt;p&gt;The following &lt;code&gt;ScaledObject&lt;/code&gt; dynamically adjusts the vLLM replica count between 1 and 8 pods based on dual criteria:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If &lt;strong&gt;&lt;code&gt;vllm:num_requests_waiting&lt;/code&gt;&lt;/strong&gt; exceeds &lt;strong&gt;2&lt;/strong&gt; pending requests.&lt;/li&gt;
&lt;li&gt;If the average &lt;strong&gt;&lt;code&gt;vllm:gpu_cache_usage_factor&lt;/code&gt;&lt;/strong&gt; exceeds &lt;strong&gt;0.80&lt;/strong&gt; (80% KV-Cache utilization).&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   # 5-minute cooldown prevents rapid scale-in thrashing
  pollingInterval: 15  # Evaluation interval
  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. Overcoming the GPU &amp;quot;Cold Start&amp;quot; Challenge on OpenShift&lt;/h3&gt;
&lt;p&gt;While KEDA triggers pod scaling in milliseconds, the actual spin-up time for a vLLM pod (&lt;em&gt;Cold Start&lt;/em&gt;) can range between 45 to 120 seconds due to:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Dynamic GPU node provisioning via OpenShift MachineSets / Cluster Autoscaler.&lt;/li&gt;
&lt;li&gt;Model weight transfer (10 GB to 70 GB) from S3/Ceph object storage.&lt;/li&gt;
&lt;li&gt;CUDA kernel compilation and PyTorch execution graph initialization.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;Engineering Best Practices to Mitigate Cold Starts:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Shared ReadWriteMany Model Cache (ODF / CephFS / Lustre):&lt;/strong&gt; Mount a shared read-only cache volume so newly spawned pods instantly access model weights without downloading over the network.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Warm Pools &amp;amp; Pre-warmed Worker Nodes:&lt;/strong&gt; Maintain at least one active replica (&lt;code&gt;minReplicaCount: 1&lt;/code&gt;) and keep pre-pulled container images across GPU nodes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Conservative Scale-In Cooldown:&lt;/strong&gt; Set a &lt;code&gt;cooldownPeriod&lt;/code&gt; of at least 300 seconds (5 minutes) to avoid terminating recently warmed GPU pods right before a follow-up burst.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;5. Autoscaling Strategies Comparison for Production LLMs&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th align=&quot;left&quot;&gt;Evaluation Criteria&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;Standard HPA (CPU / RAM)&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;Custom HPA (GPU Memory Util)&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;KEDA + vLLM Metrics (KV-Cache &amp;amp; Queue)&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;Signal Accuracy&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Zero (completely uncorrelated)&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Misleading (VRAM pre-allocated at 90%)&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Maximal (real continuous batching pressure)&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Burst Reactivity&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Extremely slow&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Ineffective&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Instantaneous (triggers on &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;Long Context Handling&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Blind&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Blind&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Native (direct tracking of KV-Cache allocation)&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;GPU Cost Optimization&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Poor (high OOM crash risk)&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Poor (permanent over-provisioning)&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Optimal (surgical scale-out and controlled scale-in)&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;OpenShift Integration&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Basic&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Requires NVIDIA GPU Operator&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Seamless 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. Platform &amp;amp; LLMOps Implementation Checklist&lt;/h3&gt;
&lt;p&gt;To successfully industrialize LLM autoscaling across your enterprise clusters:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Always enable vLLM Prometheus metrics:&lt;/strong&gt; Ensure &lt;code&gt;--disable-log-stats&lt;/code&gt; is disabled and the metrics port is routed to your ServiceMonitor.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Combine dual triggers:&lt;/strong&gt; Pair memory pressure (&lt;code&gt;gpu_cache_usage_factor&lt;/code&gt;) for long context prompts with queue depth (&lt;code&gt;num_requests_waiting&lt;/code&gt;) for concurrent user surges.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitor Time-To-First-Token (TTFT):&lt;/strong&gt; If median TTFT breaches 800 ms, tighten the trigger thresholds to scale out more aggressively.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enforce Declarative GitOps (ArgoCD):&lt;/strong&gt; Store all &lt;code&gt;ScaledObject&lt;/code&gt;, &lt;code&gt;ServiceMonitor&lt;/code&gt;, and &lt;code&gt;TriggerAuthentication&lt;/code&gt; manifests in Git for reproducible multi-cluster deployments.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h3&gt;Master Production AI Systems Engineering with Aperta Scientia&lt;/h3&gt;
&lt;p&gt;Deploying and scaling enterprise foundation models at scale requires dual mastery: expert Cloud-Native Kubernetes orchestration and deep optimization of GenAI inference engines.&lt;/p&gt;
&lt;p&gt;Aperta Scientia prepares your engineering teams for these cutting-edge challenges:&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;: The elite 3-month curriculum to master &lt;strong&gt;OpenShift AI (RHOAI)&lt;/strong&gt;, &lt;strong&gt;vLLM&lt;/strong&gt; optimization, event-driven scaling with &lt;strong&gt;KEDA&lt;/strong&gt;, declarative serving with &lt;strong&gt;KServe&lt;/strong&gt;, vector databases with &lt;strong&gt;Milvus&lt;/strong&gt;, and governance with &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; : The foundational curriculum to design resilient &lt;strong&gt;Red Hat OpenShift&lt;/strong&gt; clusters, automate with &lt;strong&gt;GitOps (ArgoCD)&lt;/strong&gt;, implement robust &lt;strong&gt;Prometheus / Thanos&lt;/strong&gt; observability, and manage multi-cluster environments with &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>Securing Model Context Protocol (MCP) on OpenShift: Enterprise Architecture for AI Agents</title><link>https://aperta.io/radar/2026-09-13-securing-model-context-protocol-mcp-kubernetes-openshift-ai/</link><guid isPermaLink="true">https://aperta.io/radar/2026-09-13-securing-model-context-protocol-mcp-kubernetes-openshift-ai/</guid><description>Comprehensive architecture guide for deploying and securing Model Context Protocol (MCP) on Kubernetes and OpenShift: mTLS, RBAC, eBPF inspection with RHACS, and OpenShift AI integration.</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;Securing Model Context Protocol (MCP) on OpenShift: Enterprise Architecture for AI Agents&quot; style=&quot;max-width: 100%; height: auto; border-radius: 12px; margin-bottom: 20px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The rise of &lt;strong&gt;autonomous agentic systems&lt;/strong&gt; across enterprise IT represents a paradigm shift: foundation models (LLMs) no longer just generate textual summaries; they directly interact with production environments by executing functions (&lt;em&gt;tool calling&lt;/em&gt;), querying enterprise databases, triggering GitOps deployments, or reconfiguring infrastructure resources.&lt;/p&gt;
&lt;p&gt;Historically, connecting LLMs to external systems relied on custom REST wrappers, ad-hoc Python glue code, and proprietary SDKs—creating massive security blind spots, maintenance overhead, and vendor lock-in.&lt;/p&gt;
&lt;p&gt;The &lt;strong&gt;Model Context Protocol (MCP)&lt;/strong&gt;, an open standard spearheaded by the industry, standardizes how AI agents communicate with context sources and execution tools. However, in regulated enterprise environments (banking, healthcare, defense, critical manufacturing), connecting autonomous agents to internal APIs requires a bulletproof infrastructure governance model.&lt;/p&gt;
&lt;p&gt;This guide explores how to design, containerize, and enforce a &lt;strong&gt;Zero-Trust Model Context Protocol (MCP) architecture on Red Hat OpenShift and OpenShift AI (RHOAI)&lt;/strong&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;1. Why Model Context Protocol (MCP) is the Industry Standard for Agentic Systems&lt;/h3&gt;
&lt;p&gt;MCP establishes a clear client-server abstraction between the host application (LLM Agent / Llama Stack runtime), the MCP client, and the specialized MCP servers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Resources:&lt;/strong&gt; Passive, read-only data streams (e.g., application logs, database schemas, Prometheus metrics).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tools:&lt;/strong&gt; Executable functions with controlled side effects (e.g., SQL queries, ArgoCD application rollbacks, Jira ticket updates).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prompts:&lt;/strong&gt; Parameterized, server-managed prompt templates enriched with backend context.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;┌─────────────────────────────────────────────────────────────────────────────┐
│                   AI Agent / Llama Stack / MCP Client                       │
│                     (Pod on OpenShift AI / RHOAI)                           │
└──────────────────────────────────────┬──────────────────────────────────────┘
                                       │
            Secure Transport (mTLS / HTTP SSE / JSON-RPC 2.0)
                                       │
┌──────────────────────────────────────▼──────────────────────────────────────┐
│                     MCP Gateway &amp;amp; Ingress Controller                        │
│              (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;While local desktop environments often utilize &lt;code&gt;stdio&lt;/code&gt; process communication, enterprise cloud-native deployments require &lt;strong&gt;HTTP with Server-Sent Events (SSE)&lt;/strong&gt; or &lt;strong&gt;gRPC/WebSocket&lt;/strong&gt; transports secured within a Kubernetes Service Mesh.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;2. Critical Security Vectors in Enterprise MCP Deployments&lt;/h3&gt;
&lt;p&gt;Integrating autonomous agents with backend tools exposes systems to vulnerabilities outlined in the OWASP Top 10 for LLM Applications:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Indirect Prompt Injection:&lt;/strong&gt; Unsanitized data fetched via an MCP &lt;em&gt;Resource&lt;/em&gt; injects malicious instructions into the LLM context, coercing the agent to invoke destructive &lt;em&gt;Tools&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Privilege Escalation &amp;amp; Confused Deputy:&lt;/strong&gt; An agent equipped with an overly permissive cluster ServiceAccount executes administrative tasks that the initiating user lacks permission to perform.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sensitive Data Exfiltration:&lt;/strong&gt; Infrastructure secrets or PII are inadvertently leaked through tool parameter payloads or unmonitored external network connections.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Denial of Service &amp;amp; Unbounded Tool Loops:&lt;/strong&gt; Recursive execution loops overload downstream databases and microservices.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h3&gt;3. Production Zero-Trust Architecture on Red Hat OpenShift&lt;/h3&gt;
&lt;p&gt;To mitigate these threats, an enterprise MCP deployment must be anchored across four infrastructure pillars:&lt;/p&gt;
&lt;h4&gt;A. Network Isolation &amp;amp; mTLS (OpenShift Service Mesh)&lt;/h4&gt;
&lt;p&gt;Each MCP server runs in an isolated namespace, strictly constrained by Kubernetes &lt;code&gt;NetworkPolicies&lt;/code&gt; and enrolled into &lt;strong&gt;OpenShift Service Mesh (Istio)&lt;/strong&gt; with mandatory mutual TLS (mTLS) and Envoy sidecar proxies.&lt;/p&gt;
&lt;h4&gt;B. Identity Propagation &amp;amp; Token Exchange (OAuth2 / OIDC)&lt;/h4&gt;
&lt;p&gt;The agent never uses static root credentials. An identity gateway (&lt;strong&gt;Keycloak / Red Hat Single Sign-On&lt;/strong&gt;) performs RFC 8693 Token Exchange, downscoping the authorization token passed to the MCP server to reflect only the permissions of the authenticated end-user.&lt;/p&gt;
&lt;h4&gt;C. eBPF Runtime Security (Red Hat Advanced Cluster Security - RHACS)&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;RHACS&lt;/strong&gt; monitors kernel system calls (&lt;code&gt;syscalls&lt;/code&gt;) generated by MCP container runtimes in real time using eBPF probes. Any anomalous process fork, unexpected binary execution, or unauthorized outbound socket connection immediately triggers pod isolation (&lt;em&gt;Process Baseline Enforcement&lt;/em&gt;).&lt;/p&gt;
&lt;h4&gt;D. Input/Output Guardrails (TrustyAI &amp;amp; Granite Guardian)&lt;/h4&gt;
&lt;p&gt;Before a tool argument is dispatched to an MCP server—and before the response is returned to the LLM context—a guardrail filter validates payload safety, masks PII, and detects prompt injection attempts.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;4. Production Kubernetes Manifests: Deploying a Hardened MCP Server&lt;/h3&gt;
&lt;p&gt;Below is the declarative Kubernetes deployment for an isolated PostgreSQL MCP server running on 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;Associated strict NetworkPolicy restricting all unauthorized outbound traffic:&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: # Restrict DNS lookups to internal cluster CoreDNS only
    - 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. Architectural Comparison: Tool Calling Paradigms&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;Custom REST APIs / Ad-hoc Plugins&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;Local Desktop MCP (stdio)&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;Cloud-Native MCP on 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;Protocol Standardization&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Low (custom JSON schemas per framework)&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;High (JSON-RPC 2.0 MCP standard)&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Maximum (Standard MCP + Llama Stack enterprise distribution)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Network &amp;amp; Transport Security&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Fragmented (often unencrypted HTTP internal endpoints)&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;None (runs as local workstation process)&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Mandatory mTLS, Istio Service Mesh, Zero-Trust NetworkPolicies&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Identity &amp;amp; Access Control&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Static API tokens / Shared secrets&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Local user environment variables&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;RFC 8693 Token Exchange, Kubernetes RBAC, RHACS Process Baselines&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Scalability &amp;amp; Resiliency&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Custom load balancing&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Single-process only&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Native Kubernetes scaling, horizontal pod autoscaling (HPA), automated health probes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Guardrails &amp;amp; Observability&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Hand-coded sanitizers&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Absent&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;TrustyAI guardrails, Granite Guardian evaluation, OpenTelemetry distributed tracing&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;hr&gt;
&lt;h3&gt;6. Operational Best Practices for Platform &amp;amp; Security Engineers&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Enforce SSE Transport over HTTPS:&lt;/strong&gt; Disallow unencrypted stdio processes in server environments; use Server-Sent Events with TLS termination at the ingress controller.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Apply Read-Only DB Roles:&lt;/strong&gt; Analytical MCP servers must connect using strictly scoped PostgreSQL roles (&lt;code&gt;SELECT&lt;/code&gt; privileges only on dedicated reporting views).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Correlate Traces via OpenTelemetry:&lt;/strong&gt; Propagate the &lt;code&gt;traceparent&lt;/code&gt; header across LLM prompt evaluations, MCP client requests, and backend tool invocations.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Isolate Code Execution Engines:&lt;/strong&gt; For MCP servers running dynamic code evaluation (e.g., Python code interpreters), isolate execution pods using &lt;strong&gt;Kata Containers&lt;/strong&gt; or &lt;strong&gt;OpenShift Virtualization&lt;/strong&gt; microVMs to prevent container breakout vulnerabilities.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h3&gt;Master Enterprise AI Agent Architectures with Aperta Scientia&lt;/h3&gt;
&lt;p&gt;Securing and operationalizing enterprise AI agents demands deep mastery of cloud-native Kubernetes infrastructure and modern LLMOps pipelines.&lt;/p&gt;
&lt;p&gt;Aperta Scientia prepares engineering teams through comprehensive, industry-leading training programs:&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;: The flagship 3-month curriculum covering &lt;strong&gt;Red Hat OpenShift AI (RHOAI)&lt;/strong&gt;, &lt;strong&gt;Model Context Protocol (MCP)&lt;/strong&gt; integration, &lt;strong&gt;Llama Stack&lt;/strong&gt;, high-throughput serving with &lt;strong&gt;vLLM&lt;/strong&gt;, vector search with &lt;strong&gt;Milvus&lt;/strong&gt;, and model governance with &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; : The foundational program to design, secure, and automate resilient &lt;strong&gt;Red Hat OpenShift&lt;/strong&gt; clusters, mastering &lt;strong&gt;GitOps (ArgoCD)&lt;/strong&gt;, &lt;strong&gt;Tekton CI/CD&lt;/strong&gt;, runtime security with &lt;strong&gt;RHACS&lt;/strong&gt;, and multi-cluster networking with &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 on Red Hat OpenShift AI: Standardizing Enterprise GenAI Agents and Sovereign RAG Architectures</title><link>https://aperta.io/radar/2026-09-12-llama-stack-rhoai-architecture-enterprise-ai-agents-rag/</link><guid isPermaLink="true">https://aperta.io/radar/2026-09-12-llama-stack-rhoai-architecture-enterprise-ai-agents-rag/</guid><description>Comprehensive architecture guide to standardizing and deploying enterprise GenAI agents with Llama Stack, vLLM, Milvus, and OpenShift AI: unified APIs, Tool Calling, Guardrails, and Portability.</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 on Red Hat OpenShift AI: Standardizing Enterprise GenAI Agents and Sovereign RAG Architectures&quot; style=&quot;max-width: 100%; height: auto; border-radius: 12px; margin-bottom: 20px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The industrialization of generative artificial intelligence applications is undergoing a critical transformation in 2026. As enterprises transition from simple completion interfaces (chatbots) to &lt;strong&gt;multi-step autonomous agent systems&lt;/strong&gt; (agentic workflows) integrated with corporate databases, ERPs, and internal business APIs, engineering teams face crippling technological fragmentation: proprietary SDK sprawl, vendor lock-in with public hyperscalers, inconsistent tool calling schemas, and a lack of standardized safety guardrails.&lt;/p&gt;
&lt;p&gt;To overcome this interoperability and sovereignty challenge, the open-source ecosystem has established a pivotal layer: &lt;strong&gt;Llama Stack&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Natively integrated into &lt;strong&gt;Red Hat OpenShift AI (RHOAI)&lt;/strong&gt; via a dedicated Kubernetes Operator, Llama Stack delivers a universal API specification and modular distributions to orchestrate the complete lifecycle of enterprise agents: from high-throughput inference and vector retrieval to secure tool execution, ethical guardrails, and end-to-end telemetry.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;1. Solving &amp;quot;Agent Sprawl&amp;quot;: The Imperative for a Unified AI Specification&lt;/h3&gt;
&lt;p&gt;Building resilient enterprise AI agents in regulated environments (finance, healthcare, defense, telecommunications) requires assembling multiple specialized components:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Inference Engine:&lt;/strong&gt; Serving open foundation models (IBM Granite 3.0/3.1, Llama 3.3, Mistral Large) with maximum throughput via &lt;strong&gt;vLLM&lt;/strong&gt; or &lt;strong&gt;TGI&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Memory &amp;amp; Vector RAG (Vector IO):&lt;/strong&gt; Querying scalable vector databases (&lt;strong&gt;Milvus&lt;/strong&gt;, &lt;strong&gt;pgvector&lt;/strong&gt;) with hybrid dense/sparse search.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tool Execution Runtime (MCP / Functions):&lt;/strong&gt; Enabling models to invoke backend functions and adhere to context protocols such as the Model Context Protocol.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Safety &amp;amp; Guardrails:&lt;/strong&gt; Intercepting prompt injections and ensuring regulatory compliance using &lt;strong&gt;Granite Guardian&lt;/strong&gt;, &lt;strong&gt;Llama Guard&lt;/strong&gt;, and &lt;strong&gt;TrustyAI&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Evaluation &amp;amp; Telemetry:&lt;/strong&gt; Tracing every multi-step reasoning turn and scoring factual grounding against source documents.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Without a standardized stack, engineering teams rebuild bespoke integration code for every project, creating immense architectural debt and preventing application portability across private sovereign clusters and cloud environments.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;┌─────────────────────────────────────────────────────────────────────────────┐
│                   Enterprise Applications &amp;amp; AI Frameworks                   │
│             (LangChain, LlamaIndex, CrewAI, AutoGen, Web Clients)           │
└──────────────────────────────────────┬──────────────────────────────────────┘
                                       │
                                       ▼  (Unified Llama Stack REST/gRPC API)
┌─────────────────────────────────────────────────────────────────────────────┐
│                   Llama Stack Distribution (OpenShift AI)                   │
├──────────────┬──────────────┬──────────────┬──────────────┬─────────────────┤
│  Inference   │  Vector IO   │ Tool Runtime │    Safety    │   Eval &amp;amp; Telemetry
│   (vLLM)     │   (Milvus)   │    (MCP)     │ (TrustyAI)   │ (OpenTelemetry) │
└──────┬───────┴──────┬───────┴──────┬───────┴──────┬───────┴────────┬────────┘
       │              │              │              │                │
       ▼              ▼              ▼              ▼                ▼
┌─────────────────────────────────────────────────────────────────────────────┐
│                 Sovereign Red Hat OpenShift Infrastructure                  │
│        (H100/L40S GPU Nodes, Ceph ODF, OpenShift GitOps, RHACS)             │
└─────────────────────────────────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h3&gt;2. Core Architecture and Modular Interfaces of Llama Stack&lt;/h3&gt;
&lt;p&gt;Llama Stack structures interactions with AI subsystems across standardized high-level APIs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;/inference&lt;/code&gt;:&lt;/strong&gt; Unified abstraction for completion, token streaming, and dense embeddings, agnostic of underlying serving runtimes (vLLM, Ollama, TGI).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;/vector_io&lt;/code&gt;:&lt;/strong&gt; Standardized management of vector collections, chunk ingestion, and hybrid dense/sparse search queries.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;/agents&lt;/code&gt;:&lt;/strong&gt; Complete agentic reasoning loop (supporting &lt;em&gt;ReAct&lt;/em&gt; and &lt;em&gt;Plan-and-Solve&lt;/em&gt; paradigms), persisting conversational memory and orchestrating tool invocations autonomously.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;/safety&lt;/code&gt;:&lt;/strong&gt; Systematic policy enforcement applied pre-inference (malicious prompt injections, PII redaction) and post-inference (hallucination mitigation, data leakage prevention).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;/telemetry&lt;/code&gt;:&lt;/strong&gt; Native trace export adhering to &lt;strong&gt;OpenTelemetry GenAI Semantic Conventions&lt;/strong&gt;, correlating user requests directly with underlying GPU hardware metrics.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;3. Cloud-Native Deployment: Llama Stack Operator on OpenShift AI&lt;/h3&gt;
&lt;p&gt;On Red Hat OpenShift AI, deploying a production-grade Llama Stack distribution is fully declarative using the &lt;code&gt;LlamaStackDistribution&lt;/code&gt; Custom Resource Definition (CRD).&lt;/p&gt;
&lt;p&gt;The operator automates server lifecycle management, configures traffic routing to existing KServe &lt;em&gt;ServingRuntimes&lt;/em&gt;, establishes TLS-secured channels to Milvus clusters, and injects cluster-wide security policies.&lt;/p&gt;
&lt;h4&gt;GitOps Manifest: &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;
  
  # Provider Configuration
  providers:
    # 1. Inference Provider (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. Vector Database Provider (Milvus on ODF)
    vectorIO:
      - providerType: milvus
        endpoint: &amp;quot;milvus-cluster.vector-db.svc.cluster.local:19530&amp;quot;
        credentialsSecretRef:
          name: milvus-tls-secret

    # 3. Safety &amp;amp; Guardrails Provider (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. Observability &amp;amp; Telemetry
    telemetry:
      - providerType: opentelemetry
        collectorEndpoint: &amp;quot;otel-collector.observability.svc.cluster.local:4317&amp;quot;

  # CPU/Memory Requests &amp;amp; Limits for Agent Controller Pods
  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. Practical Implementation: Building an Enterprise Agent with Llama Stack Python SDK&lt;/h3&gt;
&lt;p&gt;With this platform abstraction, application code written by data scientists and software engineers remains completely decoupled from physical cluster topology:&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

# Connect to the secured Llama Stack endpoint on 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. Define Agent Configuration and Tooling
agent_config = AgentConfig(
    model=&amp;quot;default-llm&amp;quot;,
    instructions=&amp;quot;&amp;quot;&amp;quot;You are the technical diagnostic agent for Aperta Scientia. 
Use vector search to consult official OpenShift documentation 
and invoke authorized diagnostic tools to inspect cluster state.&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;Inspects GPU usage metrics (DRA/MIG) for a specific 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;OpenShift namespace name&amp;quot;}
            }
        }
    ],
    safety_shields=[&amp;quot;prompt-injection-detection&amp;quot;, &amp;quot;pii-masking&amp;quot;],
    temperature=0.2
)

# Initialize Agent Session
session = client.agents.create_session(agent_config=agent_config)

# 2. Execute an Agent Turn with Automated Tool Calling
user_query = &amp;quot;Why is the vLLM inference pod in &amp;#39;genai-production&amp;#39; failing with an OOM error?&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;⚙️ [Agent Action]: {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. Architectural Comparison: Bespoke Integration vs. Llama Stack on OpenShift AI&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th align=&quot;left&quot;&gt;Architectural Dimension&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;Bespoke Multi-SDK Stack&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;Llama Stack on 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;Portability &amp;amp; Lock-in&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;High coupling to hyperscaler APIs (Bedrock, Vertex, Azure OpenAI).&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;100% model- and cloud-agnostic. Runs identically on sovereign bare-metal or hybrid cloud.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Security &amp;amp; Governance&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Handled per application repository with high risk of human omission.&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Centralized &lt;em&gt;Guardrails-as-a-Platform&lt;/em&gt; enforced before requests reach serving engines.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Tool Calling &amp;amp; MCP&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Non-standardized JSON structures across model families (Llama vs Mistral vs Qwen).&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Unified tool execution protocol with native Model Context Protocol (MCP) integration.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Observability&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Scattered application logs, disjointed tracing, and isolated GPU metrics.&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Correlated OpenTelemetry GenAI traces (inference latency, token cost, vector VRAM).&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;hr&gt;
&lt;h3&gt;6. Production Best Practices&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Network Isolation and Service Mesh:&lt;/strong&gt; Enclose Llama Stack server pods and backing services (vLLM, Milvus) inside &lt;strong&gt;OpenShift Service Mesh (Istio)&lt;/strong&gt; with strict mTLS and RBAC authorization via ServiceAccounts.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;VRAM Optimization for Agent History:&lt;/strong&gt; Reserve at least 20% GPU VRAM for dynamic KV Cache allocation to accommodate extended multi-turn conversation contexts typical of autonomous agent loops.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Runtime Container Auditing with RHACS:&lt;/strong&gt; Monitor dynamic tool execution pods continuously using &lt;strong&gt;Red Hat Advanced Cluster Security (ACS)&lt;/strong&gt; to detect and block unauthorized privilege escalation or unexpected egress traffic.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h3&gt;Master Enterprise GenAI Agent Architectures with Aperta Scientia&lt;/h3&gt;
&lt;p&gt;Deploying production-grade agentic architectures requires bridging cloud-native Kubernetes platform engineering with deep LLMOps mastery.&lt;/p&gt;
&lt;p&gt;Aperta Scientia prepares infrastructure leaders and AI engineers through two flagship programs:&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;: Our intensive 3-month curriculum mastering &lt;strong&gt;Red Hat OpenShift AI (RHOAI)&lt;/strong&gt;, &lt;strong&gt;Llama Stack&lt;/strong&gt;, high-performance &lt;strong&gt;vLLM&lt;/strong&gt; serving, &lt;strong&gt;Milvus&lt;/strong&gt; vector databases, and fine-tuning with &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;: The foundational program to design, secure, and operate enterprise &lt;strong&gt;Red Hat OpenShift&lt;/strong&gt; platforms with &lt;strong&gt;GitOps (ArgoCD)&lt;/strong&gt;, &lt;strong&gt;Tekton&lt;/strong&gt; CI/CD, and multi-cluster governance using &lt;strong&gt;ACM&lt;/strong&gt; and &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>Weekly Tech Radar Digest: Tekton PaC, GPU Dynamic Resource Allocation, KubeRay &amp; Milvus ODF</title><link>https://aperta.io/radar/2026-09-11-tech-radar-tekton-gpu-dra-kuberay-oadp-milvus/</link><guid isPermaLink="true">https://aperta.io/radar/2026-09-11-tech-radar-tekton-gpu-dra-kuberay-oadp-milvus/</guid><description>Weekly intelligence briefing: Sigstore supply chain security, dynamic GPU slicing under Kubernetes, elastic Ray clusters, and high-availability ODF vector stores.</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;Weekly Tech Radar Digest: Tekton PaC, GPU Dynamic Resource Allocation, 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;Key intelligence highlights from the Aperta Scientia technology lab for our &lt;strong&gt;AS200 (DevOps Platform Engineer)&lt;/strong&gt; and &lt;strong&gt;AS300 (AI Platform Engineer)&lt;/strong&gt; curriculums.&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;Major supply chain hardening capabilities inside OpenShift Pipelines (Tekton Core + Pipelines-as-Code).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Key Takeaways:&lt;/strong&gt; Native Sigstore/Cosign cryptographic signing and automated SPDX/CycloneDX SBOM generation directly inside container build tasks.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AS200 Impact:&lt;/strong&gt; Embedded in &lt;em&gt;Cloud-Native CI/CD, Automation &amp;amp; Application Security (DO288 / DO380)&lt;/em&gt; to meet SLSA Level 3 standards.&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;Significant advances in DRA standards paired with the NVIDIA GPU Operator on OpenShift.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Key Takeaways:&lt;/strong&gt; Dynamic GPU partitioning (MIG &amp;amp; Time-Slicing) and granular NVLink bandwidth allocation without requiring static worker node reboots.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AS300 Impact:&lt;/strong&gt; Module &lt;em&gt;Hardware Acceleration, GPU Orchestration &amp;amp; NFD (AI267)&lt;/em&gt; to maximize vLLM ServingRuntime density.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;3. KubeRay &amp;amp; Ray Cluster Orchestration on Red Hat OpenShift AI&lt;/h3&gt;
&lt;p&gt;Maturity of the KubeRay operator for managing ephemeral, sovereign Ray clusters.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Key Takeaways:&lt;/strong&gt; Elastic orchestration for distributed computing (PyTorch DDP, DeepSpeed) and enterprise fine-tuning without permanent GPU lock-in.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AS300 Impact:&lt;/strong&gt; Module &lt;em&gt;Distributed Computing, MLOps Orchestration &amp;amp; Sovereign Fine-Tuning (AI267)&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;4. OpenShift API for Data Protection (OADP / Velero) — Stateful Disaster Recovery&lt;/h3&gt;
&lt;p&gt;Release of OADP 1.4 with enhanced CSI Data Mover capabilities for streaming persistent volume snapshots to sovereign S3 object storage.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Key Takeaways:&lt;/strong&gt; Granular disaster recovery of critical namespaces, etcd state, and operator CRDs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AS200 Impact:&lt;/strong&gt; Module &lt;em&gt;Resilience, Backup/Restore &amp;amp; Business Continuity (DO380 / DO370)&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;5. Distributed Milvus &amp;amp; OpenShift Data Foundation (ODF) — HA Vector Stores&lt;/h3&gt;
&lt;p&gt;Optimized bare-metal deployment of Milvus backed by Rook-Ceph/ODF for persistent HNSW/IVF-PQ vector index storage.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Key Takeaways:&lt;/strong&gt; Sub-5ms semantic search latencies across enterprise knowledge bases exceeding 10M vectors.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AS300 Impact:&lt;/strong&gt; Module &lt;em&gt;Enterprise RAG Architectures, Vector Databases &amp;amp; Semantic Search&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;6. Technical Sources &amp;amp; References&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>Multi-Cluster Networking: RHACM &amp; Submariner for Hybrid AI and Distributed Serving</title><link>https://aperta.io/radar/2026-09-11-rhacm-submariner-multi-cluster-networking-hybrid-ai/</link><guid isPermaLink="true">https://aperta.io/radar/2026-09-11-rhacm-submariner-multi-cluster-networking-hybrid-ai/</guid><description>How to connect on-premise and cloud OpenShift clusters via direct L3/L4 WireGuard tunnels using RHACM and 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;Multi-Cluster Networking: RHACM &amp; Submariner for Hybrid AI and Distributed Serving&quot; style=&quot;max-width: 100%; height: auto; border-radius: 12px; margin-bottom: 20px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;In modern enterprise architectures, AI training and model serving workloads no longer live on a single Kubernetes cluster. Organizations operate hybrid topologies: sovereign bare-metal GPU clusters on-premise paired with cloud clusters for burst traffic.&lt;/p&gt;
&lt;p&gt;Connecting these clusters across standard public Ingress controllers creates severe latency penalties, high egress costs, and security risks. Combining &lt;strong&gt;Red Hat Advanced Cluster Management (RHACM)&lt;/strong&gt; with &lt;strong&gt;Submariner&lt;/strong&gt; establishes a direct, kernel-level networking mesh.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;1. Pitfalls of Public Ingress Gateways in Multi-Cluster Setups&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Latency Overhead:&lt;/strong&gt; Inter-cluster inference traffic traverses multiple public Load Balancers and ingress controllers, spiking Time-To-First-Token (TTFT) metrics.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Brittle Service Discovery:&lt;/strong&gt; Lack of unified DNS requires manual management of external domain routing and public certificates for every model endpoint.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Public Network Exposure:&lt;/strong&gt; Sensitive enterprise datasets and inference payloads transit across public gateways, violating zero-trust policies.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;2. The RHACM + Submariner Architecture&lt;/h3&gt;
&lt;p&gt;Submariner provisions a direct, encrypted overlay network across OpenShift clusters:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Kernel-Level WireGuard / IPsec Tunnels:&lt;/strong&gt; Direct L3/L4 pod-to-pod and service-to-service connectivity across infrastructure boundaries.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Declarative Service Discovery (&lt;code&gt;ServiceExport&lt;/code&gt; / &lt;code&gt;ServiceImport&lt;/code&gt;):&lt;/strong&gt; Implementation of the Kubernetes Multi-Cluster Services (MCS) API. A model served on-premise with vLLM is discovered natively across clusters as &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;High-Throughput Routing:&lt;/strong&gt; Point-to-point data plane connectivity optimizing distributed data pipelines and RAG vector store queries.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;3. Production Engineering in Aperta Curriculums&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;AS200 Track (DevOps Platform Engineer — DO432):&lt;/strong&gt; Centralized multi-cluster operations with RHACM, automated Submariner rollout, OVN-Kubernetes configuration, and policy-based governance.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AS300 Track (AI Platform Engineer):&lt;/strong&gt; Federating vLLM/KServe ServingRuntimes across hybrid clusters and securing distributed inference backbones.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;4. Technical Sources &amp;amp; References&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 for LLMOps in 2026: Declarative LLM Deployment with OpenShift GitOps (ArgoCD), KServe, and vLLM</title><link>https://aperta.io/radar/2026-09-11-gitops-llmops-declarative-ai-deployment-argocd-kserve-vllm-openshift/</link><guid isPermaLink="true">https://aperta.io/radar/2026-09-11-gitops-llmops-declarative-ai-deployment-argocd-kserve-vllm-openshift/</guid><description>Comprehensive guide to implementing GitOps for enterprise AI models: declarative InferenceServices, LoRA adapter management, and canary rollouts on 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 for LLMOps in 2026: Declarative LLM Deployment with OpenShift GitOps (ArgoCD), KServe, and vLLM&quot; style=&quot;max-width: 100%; height: auto; border-radius: 12px; margin-bottom: 20px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The widespread enterprise adoption of foundation models and distributed inference architectures introduces a major operational challenge: &lt;strong&gt;how do you deploy, version, and promote AI models in production with the same rigor, auditability, and automation as application code?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Too often, the AI model lifecycle relies on manual console clicks, ad hoc scripts downloading multi-gigabyte weights, and a lack of real-time visibility into active inference infrastructure revisions.&lt;/p&gt;
&lt;p&gt;In 2026, the convergence between &lt;strong&gt;cloud-native Platform Engineering&lt;/strong&gt; and &lt;strong&gt;LLMOps&lt;/strong&gt; establishes an essential standard: &lt;strong&gt;GitOps for AI&lt;/strong&gt;. By combining &lt;strong&gt;OpenShift GitOps (ArgoCD)&lt;/strong&gt;, &lt;strong&gt;KServe&lt;/strong&gt;, and the &lt;strong&gt;vLLM&lt;/strong&gt; high-performance inference engine on &lt;strong&gt;Red Hat OpenShift AI (RHOAI)&lt;/strong&gt;, infrastructure teams declare the target state of their AI models in audited Git repositories, enabling automated deployments, zero-downtime &lt;em&gt;Canary Releases&lt;/em&gt;, and instant rollbacks.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;1. Fundamentals of GitOps for AI Workloads&lt;/h3&gt;
&lt;p&gt;The GitOps paradigm extends declarative Infrastructure as Code (IaC) and continuous reconciliation principles to the AI inference and training layers:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[ Git Repo: manifests/ ] ──(Declarative Sync)──► [ 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;Everything is Declared in Git:&lt;/strong&gt; Inference engine parameters (context length, tensor parallelism, AWQ/FP8 quantization), model weight sources (OCI registry, sovereign S3 bucket, or authenticated Hugging Face endpoint), GPU resource allocations, and autoscaling policies.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Model Version Immutability:&lt;/strong&gt; Every promotion of a new model version (e.g., upgrading from &lt;code&gt;granite-3.0-8b-instruct-v1&lt;/code&gt; to &lt;code&gt;granite-3.0-8b-instruct-v2-lora&lt;/code&gt;) is managed via an audited, peer-reviewed Pull Request.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Automated Reconciliation &amp;amp; Drift Detection:&lt;/strong&gt; The ArgoCD controller immediately detects out-of-band cluster modifications and enforces the desired Git state automatically.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h3&gt;2. Declarative KServe &lt;code&gt;InferenceService&lt;/code&gt; Specification with vLLM&lt;/h3&gt;
&lt;p&gt;Under OpenShift AI, an LLM is modeled as a declarative &lt;code&gt;InferenceService&lt;/code&gt; Custom Resource Definition (CRD). Here is the standard production manifest for deploying the sovereign &lt;strong&gt;IBM Granite 3.0 8B&lt;/strong&gt; model accelerated by &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 # Target concurrency per replica before scaling 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. Progressive Delivery: Declarative Canary Releases &amp;amp; Traffic Splitting&lt;/h3&gt;
&lt;p&gt;Deploying a newly fine-tuned language model directly to 100% of production traffic carries severe risks of prompt regressions, Time-To-First-Token (TTFT) latency spikes, or token throughput degradation.&lt;/p&gt;
&lt;p&gt;Leveraging OpenShift Serverless (Knative Serving) and Istio integrated within KServe, teams can declare progressive traffic splitting directly 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 # Production baseline v1
      percent: 90
    - tag: candidate
      revisionName: granite-3-8b-instruct-00002 # Candidate revision v2 (Fine-tuned LoRA)
      percent: 10
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;GitOps Orchestration Workflow:&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Phase 1 (10% Canary Routing):&lt;/strong&gt; The PR merges into the &lt;code&gt;staging-prod&lt;/code&gt; branch. ArgoCD synchronizes the candidate revision and routes 10% of live incoming user traffic.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Phase 2 (Automated SLO Verification):&lt;/strong&gt; Prometheus and OpenTelemetry metrics (P99 latency, 5xx error rate, TrustyAI hallucination scores) are continuously evaluated during a 15-minute verification window.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Phase 3 (100% Promotion or Instant Rollback):&lt;/strong&gt; Upon SLO confirmation, the declarative manifest is updated to 100% candidate traffic. If regressions are detected, a single &lt;code&gt;git revert&lt;/code&gt; restores 100% traffic to the baseline revision within seconds with zero downtime.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h3&gt;4. Declarative Management of Multi-LoRA Adapters&lt;/h3&gt;
&lt;p&gt;Instead of maintaining dedicated 8B or 70B model replicas for every specialized department, modern enterprise architectures leverage &lt;strong&gt;vLLM Multi-LoRA capabilities&lt;/strong&gt; orchestrated via GitOps:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The heavy base foundation model is loaded once into GPU VRAM.&lt;/li&gt;
&lt;li&gt;Lightweight task-specific LoRA adapters (dozens of megabytes each) for legal parsing, customer support, or code generation are tracked as declarative sub-resources in Git.&lt;/li&gt;
&lt;li&gt;Dynamic request routing targets specific adapters on-the-fly (&lt;code&gt;model: &amp;quot;granite-3.0-8b/customer-support&amp;quot;&lt;/code&gt;), maximizing enterprise GPU utilization density and slashing infrastructure overhead.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;5. Architectural Comparison: Traditional AI vs GitOps LLMOps&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th align=&quot;left&quot;&gt;Feature&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;Traditional AI Deployment&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;GitOps &amp;amp; LLMOps on 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 of Truth&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Ad hoc scripts, Jupyter UI, manual configs&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Audited, declarative Git repository (ArgoCD)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Weights &amp;amp; Model Registry&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Uncontrolled downloads at pod start&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Immutable, sovereign OCI / S3 model artifacts&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Environment Promotion&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Error-prone manual redeployments&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Pull Requests between &lt;code&gt;dev&lt;/code&gt;, &lt;code&gt;staging&lt;/code&gt;, &lt;code&gt;prod&lt;/code&gt; branches&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Rollout Strategy&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;All-at-once replacement&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Declarative Canary Releases &amp;amp; Traffic Splitting (Knative/Istio)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Mean Time to Rollback (MTTR)&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Hours (manual reconfiguration)&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;&amp;lt; 30 seconds via &lt;code&gt;git revert&lt;/code&gt; or ArgoCD history&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Compliance &amp;amp; Auditability (AI Act)&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Fragmented logs, unversioned state&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Full Git commit history (who deployed what model and when)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;hr&gt;
&lt;h3&gt;6. Master Cloud-Native GitOps and AI Platforms at Aperta Scientia&lt;/h3&gt;
&lt;p&gt;Automating enterprise AI platform lifecycles requires specialized expertise spanning both cloud-native infrastructure engineering and cutting-edge model serving runtimes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;AS200 — DevOps &amp;amp; Platform Engineering (3 months):&lt;/strong&gt; The premier program mastering Ansible automation, advanced OpenShift administration, Tekton CI/CD pipelines, and declarative GitOps with &lt;strong&gt;OpenShift GitOps (ArgoCD)&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AS300 — AI Platform Engineer (3 months):&lt;/strong&gt; The intensive advanced curriculum dedicated to architecting &lt;strong&gt;Red Hat OpenShift AI (RHOAI)&lt;/strong&gt;, KServe, vLLM, KubeRay, TrustyAI governance, and preparing for the official &lt;strong&gt;Red Hat Certified Specialist in AI/ML (EX267)&lt;/strong&gt; certification.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;👉 &lt;strong&gt;&lt;a href=&quot;/curriculums/as200/&quot; &gt;Explore the AS200 DevOps &amp; GitOps Curriculum&lt;/a&gt;&lt;/strong&gt; | &lt;strong&gt;&lt;a href=&quot;/curriculums/as300/&quot; &gt;Discover the AS300 AI Platform Engineer Curriculum&lt;/a&gt;&lt;/strong&gt; | &lt;strong&gt;&lt;a href=&quot;/contact/&quot; &gt;Book a Discovery Session with our Technical Advisors&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;7. Documentation &amp;amp; Technical References&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 Guide:&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 Documentation&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 Documentation&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>Enterprise LLM Governance in Production: TrustyAI &amp; Guardrails on OpenShift AI</title><link>https://aperta.io/radar/2026-09-10-trustyai-llm-guardrails-governance-openshift-ai/</link><guid isPermaLink="true">https://aperta.io/radar/2026-09-10-trustyai-llm-guardrails-governance-openshift-ai/</guid><description>How to automate EU AI Act compliance, drift detection, and real-time inference guardrails using TrustyAI and KServe on Red Hat OpenShift AI.</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;Enterprise LLM Governance in Production: TrustyAI &amp; Guardrails on OpenShift AI&quot; style=&quot;max-width: 100%; height: auto; border-radius: 12px; margin-bottom: 20px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Deploying foundation models in enterprise environments goes beyond maximizing token throughput (tokens/sec) or allocating GPU memory. Meeting strict regulatory mandates (&lt;strong&gt;EU AI Act&lt;/strong&gt;) and ensuring data sovereignty requires governance to be baked directly into the infrastructure platform layer.&lt;/p&gt;
&lt;p&gt;Leveraging &lt;strong&gt;TrustyAI&lt;/strong&gt; and &lt;strong&gt;Inference Guardrails&lt;/strong&gt; inside &lt;strong&gt;Red Hat OpenShift AI (RHOAI)&lt;/strong&gt; enables platform teams to automate auditability, drift detection, and compliance without introducing latency overhead into serving pipelines.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;1. Four Pillars of Enterprise LLM Governance&lt;/h3&gt;
&lt;p&gt;In multi-tenant enterprise AI architectures, four core capabilities must run continuously:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Asynchronous Payload Logging:&lt;/strong&gt; Transparent prompt and response capture via lightweight TrustyAI sidecars without adding overhead to Time to First Token (TTFT).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Drift Detection (Data &amp;amp; Concept Drift):&lt;/strong&gt; Continuous statistical monitoring (Kolmogorov-Smirnov tests, Wasserstein distance) to detect embedding degradation and distribution shifts in production traffic.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fairness &amp;amp; Explainability:&lt;/strong&gt; Real-time computation of algorithmic bias metrics (Disparate Impact Ratio - DIR, Statistical Parity Difference - SPD) and local explainability models (&lt;strong&gt;LIME / SHAP&lt;/strong&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dynamic Inference Guardrails:&lt;/strong&gt; Real-time filtering of prompt injections, mitigation of PII/GDPR leakage, and hallucination suppression at the gateway boundary.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h3&gt;2. Architecture on Red Hat OpenShift AI&lt;/h3&gt;
&lt;p&gt;Within the OpenShift AI ecosystem, TrustyAI functions as a cloud-native Kubernetes service:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Declarative Operator Management:&lt;/strong&gt; Deployed via the &lt;code&gt;TrustyAIService&lt;/code&gt; Custom Resource integrated with KServe and vLLM &lt;code&gt;ServingRuntimes&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prometheus &amp;amp; Grafana Metric Correlation:&lt;/strong&gt; Native export of fairness scores and drift metrics to Prometheus for automated alerting and proactive remediation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Immutable Trace Storage:&lt;/strong&gt; Secure payload archiving for enterprise audit trails and regulatory compliance verification.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;3. Production Skills in Aperta Scientia AS300&lt;/h3&gt;
&lt;p&gt;At Aperta Scientia, AI governance is taught as a foundational infrastructure discipline:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;AS300 Track (AI Platform Engineer — 399h):&lt;/strong&gt; Deploying and tuning TrustyAI on bare-metal clusters, configuring KServe sidecars, securing inference gateways, and enforcing EU AI Act readiness.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AS200 Track (DevOps Platform Engineer):&lt;/strong&gt; Operating multi-tenant cluster isolation and enterprise OpenShift monitoring.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;4. Technical Sources &amp;amp; References&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>Enterprise Sovereign RAG Architecture in 2026: Deploying Milvus, vLLM, and Guardrails on OpenShift AI</title><link>https://aperta.io/radar/2026-09-10-enterprise-sovereign-rag-architecture-milvus-vllm-openshift-ai/</link><guid isPermaLink="true">https://aperta.io/radar/2026-09-10-enterprise-sovereign-rag-architecture-milvus-vllm-openshift-ai/</guid><description>Architectural blueprint for building a secure, sovereign, and high-throughput enterprise RAG pipeline on Red Hat OpenShift AI with vLLM and 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;Enterprise Sovereign RAG Architecture in 2026: Deploying Milvus, vLLM, and Guardrails on OpenShift AI&quot; style=&quot;max-width: 100%; height: auto; border-radius: 12px; margin-bottom: 20px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Transitioning from Retrieval-Augmented Generation (RAG) proofs of concept (PoCs) to production-grade enterprise deployments presents critical infrastructure challenges: &lt;strong&gt;strict data privacy&lt;/strong&gt;, &lt;strong&gt;predictable inference costs&lt;/strong&gt;, &lt;strong&gt;deterministic latency&lt;/strong&gt;, and &lt;strong&gt;bulletproof security governance&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Relying on public LLM APIs and third-party SaaS vector databases exposes enterprises to regulatory compliance risks (GDPR, EU AI Act) and compromises organizational data sovereignty.&lt;/p&gt;
&lt;p&gt;In 2026, the reference enterprise RAG architecture relies on a 100% private, sovereign cloud-native stack orchestrated on &lt;strong&gt;Red Hat OpenShift AI (RHOAI)&lt;/strong&gt;, combining scalable vector databases (&lt;strong&gt;Milvus&lt;/strong&gt;), optimized inference engines (&lt;strong&gt;vLLM / KServe&lt;/strong&gt;), and dedicated safety guardrails (&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. Cloud-Native Enterprise RAG Architecture Overview&lt;/h3&gt;
&lt;p&gt;A production-grade RAG infrastructure decouples compute and storage into four independent, scalable subsystems on Kubernetes:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[ Ingestion &amp;amp; Embeddings ] ──► [ Vector DB: Milvus Cluster ]
                                              ▲
                                              │ (Hybrid Dense/Sparse Search)
[ User Query ] ──► [ Guardrails / Safety ] ──► [ RAG Orchestrator (LangChain / LlamaIndex) ]
                          │                           │
                          │ Context + Prompt          ▼
                          └───────────────────► [ LLM Serving: vLLM on OpenShift AI ]
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Continuous Ingestion &amp;amp; Embedding:&lt;/strong&gt; Document parsing, semantic chunking, and batch embedding pipelines (&lt;code&gt;bge-m3&lt;/code&gt;, &lt;code&gt;nomic-embed&lt;/code&gt;) executed via Ray Jobs or Kubernetes CronJobs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Distributed Vector Storage:&lt;/strong&gt; Milvus Operator or Qdrant cluster backed by Ceph / OpenShift Data Foundation (ODF).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sovereign LLM Inference Engine:&lt;/strong&gt; Foundation and fine-tuned models (&lt;strong&gt;Granite 3.0&lt;/strong&gt;, &lt;strong&gt;Llama 3.3&lt;/strong&gt;) deployed on partitioned GPUs using &lt;strong&gt;vLLM&lt;/strong&gt; and &lt;strong&gt;KServe&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Safety &amp;amp; Guardrails Layer:&lt;/strong&gt; Dedicated guardrail models (&lt;em&gt;Granite Guardian&lt;/em&gt;, &lt;em&gt;Llama-Guard&lt;/em&gt;) alongside bias and drift monitoring via &lt;strong&gt;TrustyAI&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h3&gt;2. Sizing &amp;amp; Deploying Distributed Vector Storage (Milvus on OpenShift)&lt;/h3&gt;
&lt;p&gt;To index tens of millions of documents with sub-millisecond retrieval latency, deploying &lt;strong&gt;Milvus Operator&lt;/strong&gt; provides automated high availability:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Disaggregated Compute &amp;amp; Storage:&lt;/strong&gt; QueryNodes scale horizontally based on query traffic, while DataNodes and IndexNodes scale independently according to ingestion throughput.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hybrid Search (Dense + Sparse / BM25):&lt;/strong&gt; Merging dense semantic embeddings with sparse keyword representations to eliminate false positives on domain-specific terminology.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;S3-Compatible Object Storage:&lt;/strong&gt; Local, immutable storage on Ceph/ODF buckets ensuring strict internal air-gapping.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;3. High-Throughput LLM Serving with vLLM &amp;amp; KServe&lt;/h3&gt;
&lt;p&gt;Large context windows (8k to 32k tokens) typical of enterprise RAG pipelines require specialized memory management:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;PagedAttention &amp;amp; Chunked Prefill:&lt;/strong&gt; vLLM segments KV cache memory into non-contiguous physical pages and chunks massive prompt prefills to prevent latency spikes on active decode batches.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Automatic Prefix Caching (APC):&lt;/strong&gt; System prompts and document context headers are cached in VRAM, slashing Time-to-First-Token (TTFT) by up to 60%.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Granular GPU Partitioning (MIG / DRA):&lt;/strong&gt; Dynamic allocation of NVIDIA hardware profiles (e.g., A100/H100 sliced into &lt;code&gt;3g.40gb&lt;/code&gt; for generative serving and &lt;code&gt;1g.10gb&lt;/code&gt; for embeddings).&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;4. Enterprise Security, Document RBAC, and Guardrails&lt;/h3&gt;
&lt;p&gt;Enterprise RAG security extends far beyond standard TLS encryption:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Vector-Level Role-Based Access Control (RBAC):&lt;/strong&gt; Injecting user security tokens directly into Milvus scalar metadata filters ensures employees retrieve only documents within their corporate authorization scope.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prompt Injection &amp;amp; Data Leak Prevention:&lt;/strong&gt; Deploying lightweight classification sidecars (&lt;em&gt;Granite Guardian&lt;/em&gt;) to evaluate inbound user queries and sanitize outbound LLM responses against data leakage and jailbreak attempts.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Runtime Isolation with Red Hat Advanced Cluster Security (RHACS):&lt;/strong&gt; eBPF-driven runtime security rules prevent unauthorized egress network connections from model serving Pods.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;5. Architectural Component Matrix&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th align=&quot;left&quot;&gt;Component&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;Recommended Technology&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;Key Role&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;Enterprise Advantage&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;Foundation Platform&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;Kubernetes AI &amp;amp; MLOps orchestration&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;24/7 enterprise SLA, FIPS security, native GPU integration&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Vector Database&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;HNSW/IVF indexing &amp;amp; hybrid search&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Scalable to 1B+ vectors, distributed sharding&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;High-throughput, low-latency serving&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;4x throughput gain, Prefix Caching, multi-LoRA support&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Language Models&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;Core generation &amp;amp; guardrail evaluation&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Open permissive licensing, 100% on-premises sovereignty&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Governance &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;Drift detection, RAG observability&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;EU AI Act compliance, auditability of generative outputs&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;hr&gt;
&lt;h3&gt;6. Upskill Your Engineering Teams with Aperta Scientia&lt;/h3&gt;
&lt;p&gt;Designing, operating, and securing enterprise AI platforms requires deep cloud-native fundamentals combined with AI infrastructure engineering:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;AS300 Curriculum — AI Platform Engineer (3 months):&lt;/strong&gt; The premier intensive program covering OpenShift AI, GPU orchestration, vLLM, vector stores, and preparing for the official &lt;strong&gt;Red Hat Certified Specialist in AI/ML (EX267)&lt;/strong&gt; certification.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AS200 Curriculum — DevOps &amp;amp; Platform Engineering (3 months):&lt;/strong&gt; Comprehensive training on Ansible automation, OpenShift/Kubernetes administration, and GitOps workflows.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;👉 &lt;strong&gt;&lt;a href=&quot;/curriculums/as300/&quot; &gt;Explore the AS300 AI Platform Engineer Curriculum&lt;/a&gt;&lt;/strong&gt; | &lt;strong&gt;&lt;a href=&quot;/curriculums/as200/&quot; &gt;Discover the AS200 DevOps Curriculum&lt;/a&gt;&lt;/strong&gt; | &lt;strong&gt;&lt;a href=&quot;/contact/&quot; &gt;Schedule a Meeting with Our Admissions Team&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;7. Technical References &amp;amp; Documentation&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 Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;vLLM Distributed Serving Guide:&lt;/strong&gt; &lt;a href=&quot;https://docs.vllm.ai/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;vLLM Docs&lt;/a&gt;&lt;/li&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/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;Red Hat Product Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TrustyAI OpenShift Integration:&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): Closed-Loop Auto-Remediation on Kubernetes</title><link>https://aperta.io/radar/2026-09-09-event-driven-ansible-closed-loop-remediation-kubernetes/</link><guid isPermaLink="true">https://aperta.io/radar/2026-09-09-event-driven-ansible-closed-loop-remediation-kubernetes/</guid><description>How pairing Prometheus Alertmanager with Ansible Rulebooks automates node cordoning, pod draining, and worker reprovisioning without human intervention.</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): Closed-Loop Auto-Remediation on Kubernetes&quot; style=&quot;max-width: 100%; height: auto; border-radius: 12px; margin-bottom: 20px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;In enterprise-scale Kubernetes and OpenShift environments, Mean Time to Remediation (&lt;strong&gt;MTTR&lt;/strong&gt;) often hinges on human on-call reactivity: receiving alerts, performing manual triage, running maintenance scripts, and logging tickets.&lt;/p&gt;
&lt;p&gt;Adopting &lt;strong&gt;Event-Driven Ansible (EDA)&lt;/strong&gt; within Ansible Automation Platform (AAP) shifts infrastructure operations toward &lt;strong&gt;closed-loop auto-remediation&lt;/strong&gt;, translating telemetry events directly into instant, policy-driven engineering workflows.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;1. The Human Bottleneck in Platform Incidents&lt;/h3&gt;
&lt;p&gt;When a Kubernetes worker node experiences critical memory pressure (&lt;code&gt;NodeMemoryPressure&lt;/code&gt;) or a degraded kubelet service:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Operational Latency:&lt;/strong&gt; Minutes pass between Prometheus alert firing and operator action, causing cascading application degradation (OOMKilled pods, traffic dropouts).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Execution Errors Under Pressure:&lt;/strong&gt; Manual &lt;code&gt;cordon&lt;/code&gt; and &lt;code&gt;drain&lt;/code&gt; commands executed under stress risk disrupting sensitive statefulsets and distributed caches.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Low-Value Toil:&lt;/strong&gt; Routine system restarts and disk space cleanups consume valuable engineering bandwidth that should be focused on platform features.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;2. The EDA Architecture: Sources, Rules, and Actions&lt;/h3&gt;
&lt;p&gt;Event-Driven Ansible uses a declarative YAML specification called &lt;strong&gt;Ansible Rulebooks&lt;/strong&gt;, built around three core primitives:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Event Sources:&lt;/strong&gt; Direct integrations with Prometheus Alertmanager webhooks, Kafka streaming topics, or Vector log streams.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Conditional Rule Engine:&lt;/strong&gt; Real-time event matching (e.g., &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;Automated Action Handlers:&lt;/strong&gt; Triggering AAP Job Templates that programmatically:&lt;ul&gt;
&lt;li&gt;Cordon the degraded node via the &lt;code&gt;kubernetes.core&lt;/code&gt; collection.&lt;/li&gt;
&lt;li&gt;Gracefully drain scheduled pods while strictly honoring &lt;code&gt;PodDisruptionBudgets&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Execute target host playbooks (restarting container runtimes, purging system caches) or trigger automated node reprovisioning via GitOps/IPI.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h3&gt;3. Production Skills in Aperta Scientia AS200&lt;/h3&gt;
&lt;p&gt;At Aperta Scientia, event-driven infrastructure automation is taught hands-on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;AS200 Track (DevOps Platform Engineer — DO374):&lt;/strong&gt; Writing production-grade Ansible Rulebooks, securing webhook event ingestion, and integrating closed-loop workflows with OpenShift Monitoring.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Measurable Outcomes:&lt;/strong&gt; Slashing MTTR from 30+ minutes to sub-second automated responses, preserving strict enterprise SLO commitments.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;4. Technical Sources &amp;amp; References&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>GPU Orchestration on Kubernetes in 2026: DRA, MIG, and Time-Slicing for LLM Serving</title><link>https://aperta.io/radar/2026-09-09-gpu-orchestration-kubernetes-dra-mig-time-slicing-llmops/</link><guid isPermaLink="true">https://aperta.io/radar/2026-09-09-gpu-orchestration-kubernetes-dra-mig-time-slicing-llmops/</guid><description>Comparative analysis of GPU allocation mechanisms on Kubernetes and OpenShift AI: Dynamic Resource Allocation (DRA), Multi-Instance GPU, and 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;GPU Orchestration on Kubernetes in 2026: DRA, MIG, and Time-Slicing for LLM Serving&quot; style=&quot;max-width: 100%; height: auto; border-radius: 12px; margin-bottom: 20px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;In production generative AI architectures, GPUs represent both the highest infrastructure cost and the primary scalability bottleneck. Allocating hardware accelerators (NVIDIA H100, L40S, A100) to LLM ServingRuntimes (&lt;strong&gt;vLLM&lt;/strong&gt;, &lt;strong&gt;KServe&lt;/strong&gt;, &lt;strong&gt;TGI&lt;/strong&gt;) or auxiliary microservices (embedding models, rerankers, RAG pipelines) requires orchestration granularity far beyond the legacy model of static, whole-node reservations.&lt;/p&gt;
&lt;p&gt;Scaling on &lt;strong&gt;Kubernetes&lt;/strong&gt; and &lt;strong&gt;Red Hat OpenShift AI&lt;/strong&gt; relies on three complementary allocation mechanisms: &lt;strong&gt;Time-Slicing&lt;/strong&gt;, &lt;strong&gt;Multi-Instance GPU (MIG)&lt;/strong&gt;, and the adoption of &lt;strong&gt;Dynamic Resource Allocation (DRA)&lt;/strong&gt; introduced in modern Kubernetes releases.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;1. The Limitations of Legacy NVIDIA Device Plugins (1 Pod = 1 GPU)&lt;/h3&gt;
&lt;p&gt;Historically, the &lt;code&gt;k8s-device-plugin&lt;/code&gt; exposed GPUs as discrete integer resources (&lt;code&gt;nvidia.com/gpu: 1&lt;/code&gt;). While this approach suits heavy distributed training workloads (PyTorch, Ray Train), it proves inefficient for inference:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Severe VRAM Underutilization:&lt;/strong&gt; Running a lightweight embedding model (0.5 GB VRAM) or a reranker on an 80 GB GPU locks the entire accelerator away from other workloads.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lack of Hardware Isolation:&lt;/strong&gt; Unconstrained application-level sharing leads to memory bus contention and unpredictable spikes in Time to First Token (&lt;strong&gt;TTFT&lt;/strong&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Topology Blindness:&lt;/strong&gt; Inability to express NVLink affinity or inter-GPU bandwidth requirements without cumbersome manual scheduling setups.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;2. Comparative Matrix: GPU Allocation Strategies&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th align=&quot;left&quot;&gt;Strategy&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;Memory &amp;amp; Compute Isolation&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;Recommended Use Case&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;Key Advantages&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;Trade-offs&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;None (Temporal Sharing)&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Dev, testing, low-traffic auxiliary embeddings&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Zero hardware configuration, high oversubscription&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Risk of cross-tenant OOMs, no latency guarantees&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;Strict Hardware Slicing (VRAM + SMs)&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Multi-tenant inference, collocated ServingRuntimes&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Deterministic QoS, full failure domain isolation&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Rigid profiles (e.g., 1g.10gb, 3g.40gb), high-end GPUs only (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;Dynamic via CDI / Structured Parameters&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Heterogeneous clusters, advanced LLMOps pipelines&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Declarative hardware matching, decoupled scheduler&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Requires modern Kubernetes (1.30+) and compatible driver stack&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;hr&gt;
&lt;h3&gt;3. The Power of Dynamic Resource Allocation (DRA)&lt;/h3&gt;
&lt;p&gt;Dynamic Resource Allocation (DRA) and the &lt;strong&gt;Container Device Interface (CDI)&lt;/strong&gt; fundamentally modernize accelerator management on Kubernetes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Structured Parameters:&lt;/strong&gt; Instead of a simple integer request, workloads define &lt;em&gt;ResourceClaims&lt;/em&gt; based on required VRAM capacity, NVLink topology, or compute capability.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;On-Demand Allocation:&lt;/strong&gt; The Kubernetes scheduler matches claims dynamically during scheduling passes without requiring cluster operators to statically carve node profiles.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Optimized Co-scheduling:&lt;/strong&gt; Native coordination between GPU allocations, NUMA affinity, and high-throughput network fabric for vLLM Tensor Parallelism.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;4. Implementation on Red Hat OpenShift AI (RHOAI)&lt;/h3&gt;
&lt;p&gt;Within &lt;strong&gt;Red Hat OpenShift AI&lt;/strong&gt;, these capabilities are delivered as an enterprise-grade platform:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;NVIDIA GPU Operator on OpenShift:&lt;/strong&gt; Automated deployment of drivers, CDI, MIG profiles, and DCGM telemetry export 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; Idling inactive ServingRuntimes to immediately release GPU slices for high-priority training or batch jobs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Elastic Scheduling with Ray / KubeRay:&lt;/strong&gt; Coordinated distributed compute across heterogeneous infrastructure.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;5. Advance Your AI Infrastructure Engineering with Aperta Scientia&lt;/h3&gt;
&lt;p&gt;To design, secure, and operate scalable AI infrastructure:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;AS300 Curriculum — AI Platform Engineer (3 months):&lt;/strong&gt; The intensive live program to master OpenShift AI, GPU partitioning, vLLM, KServe, and prepare for the official &lt;strong&gt;Red Hat Certified Specialist in AI/ML (EX267)&lt;/strong&gt; certification.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AS200 Curriculum — DevOps &amp;amp; Platform Engineering (3 months):&lt;/strong&gt; The fundamental platform engineering foundation covering hardened OpenShift clusters, Ansible automation, and GitOps.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;👉 &lt;strong&gt;&lt;a href=&quot;/curriculums/as300/&quot; &gt;Explore the AS300 AI Platform Engineer Curriculum&lt;/a&gt;&lt;/strong&gt; | &lt;strong&gt;&lt;a href=&quot;/curriculums/as200/&quot; &gt;Explore the AS200 DevOps Curriculum&lt;/a&gt;&lt;/strong&gt; | &lt;strong&gt;&lt;a href=&quot;/contact/&quot; &gt;Contact our Engineering Advisors&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;6. Technical References &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;Official Kubernetes Documentation&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 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;OpenShift AI Acceleration Guide&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>GenAI Observability: Standardizing LLM Serving Telemetry with OpenTelemetry</title><link>https://aperta.io/radar/2026-09-08-opentelemetry-genai-semantic-conventions-llm-observability/</link><guid isPermaLink="true">https://aperta.io/radar/2026-09-08-opentelemetry-genai-semantic-conventions-llm-observability/</guid><description>How OpenTelemetry GenAI semantic conventions standardize TTFT, inter-token latency, and KV-cache monitoring across vLLM and 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;GenAI Observability: Standardizing LLM Serving Telemetry with OpenTelemetry&quot; style=&quot;max-width: 100%; height: auto; border-radius: 12px; margin-bottom: 20px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Operating LLM ServingRuntimes (&lt;strong&gt;vLLM&lt;/strong&gt;, &lt;strong&gt;KServe&lt;/strong&gt;) on Kubernetes and OpenShift clusters without standardized telemetry leads to blind spots during traffic spikes.&lt;/p&gt;
&lt;p&gt;The stabilization of &lt;strong&gt;OpenTelemetry Semantic Conventions for Generative AI&lt;/strong&gt; establishes a vendor-neutral standard to monitor, trace, and optimize model serving performance in production.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;1. The Limits of Traditional Application Metrics on LLMs&lt;/h3&gt;
&lt;p&gt;For standard HTTP services, overall request latency is typically sufficient. In streaming LLM architectures, aggregate duration hides critical bottlenecks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Time to First Token (TTFT):&lt;/strong&gt; Measures the prompt prefill duration and scheduling latency. TTFT spikes indicate GPU compute saturation or excessive queuing.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Inter-Token Latency (ITL / Time per Output Token):&lt;/strong&gt; Measures token-by-token decode speed, directly tied to GPU VRAM memory bandwidth.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Token Usage &amp;amp; Quota Tracking:&lt;/strong&gt; Granular accounting of prompt and completion tokens is essential for multi-tenant rate limiting and OOM prevention.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;2. OpenTelemetry GenAI Standard in Production&lt;/h3&gt;
&lt;p&gt;Integrating these conventions into cloud-native observability pipelines (&lt;strong&gt;Prometheus&lt;/strong&gt;, &lt;strong&gt;Vector&lt;/strong&gt;, OpenShift Observability):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Standardized Metrics:&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;Unified Distributed Tracing:&lt;/strong&gt; Seamless span correlation across prompt prefill, vector database retrieval (RAG), and client application queries.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SLO-Driven Autoscaling:&lt;/strong&gt; Feeding OpenTelemetry SLIs into KEDA and Horizontal Pod Autoscalers to scale GPU workers proactively before queue saturation.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;3. Production Skills in Aperta Scientia Curriculums&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;AS300 (AI Platform Engineer):&lt;/strong&gt; Hands-on instrumentation of vLLM and KServe runtimes, Grafana dashboarding, and correlation with bare-metal NVIDIA GPU metrics.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AS200 (DevOps Platform Engineer):&lt;/strong&gt; Full observability stack integration (Prometheus, Thanos, Grafana) and SLO-based automated alerting.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;4. Technical Sources &amp;amp; References&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>Becoming an AI Platform Engineer in 2026: The Definitive Guide (LLMOps, Talent Shortage &amp; AS300)</title><link>https://aperta.io/radar/2026-09-08-becoming-ai-platform-engineer-guide-2026/</link><guid isPermaLink="true">https://aperta.io/radar/2026-09-08-becoming-ai-platform-engineer-guide-2026/</guid><description>Critical AI infrastructure talent shortage, production stack (RHOAI, vLLM), and industrial methodology to become an AI Platform Engineer in 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;Becoming an AI Platform Engineer in 2026: The Definitive Guide (LLMOps, Talent Shortage &amp; AS300)&quot; style=&quot;max-width: 100%; height: auto; border-radius: 12px; margin-bottom: 20px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The rise of generative foundation models and enterprise data sovereignty requirements has created a massive demand for &lt;strong&gt;AI Platform Engineers&lt;/strong&gt;. This specialized role bridges Cloud-Native Kubernetes infrastructure, GPU hardware acceleration, and scalable LLMOps/MLOps architectures.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;1. An Unprecedented Shortage in AI Infrastructure Talent&lt;/h3&gt;
&lt;p&gt;While the industry has an abundance of theoretical data scientists, enterprise engineering faces a critical deficit in practitioners who can build and operate sovereign AI infrastructure:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;World Economic Forum (Future of Jobs):&lt;/strong&gt; The &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 Future of Jobs Report&lt;/a&gt; ranks &lt;strong&gt;AI Infrastructure, Cloud-Native, and MLOps Specialists among the top 3 fastest-growing technical roles globally&lt;/strong&gt;, with talent shortages threatening over &lt;strong&gt;75% of enterprise AI initiatives&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; According to &lt;a href=&quot;https://www.oreilly.com/radar/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;O&apos;Reilly Research&lt;/a&gt;, the core bottleneck moving from prototype to production is not model architecture, but the &lt;strong&gt;scarcity of engineers capable of orchestrating GPU clusters, optimizing distributed inference (vLLM, KServe), and hardening data supply chains&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;McKinsey State of AI Survey:&lt;/strong&gt; In its &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;Global AI Review&lt;/a&gt;, McKinsey reports that fewer than &lt;strong&gt;15% of enterprises possess the internal systems engineering talent required to deploy sovereign AI models&lt;/strong&gt; on hybrid cloud infrastructure.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This intense supply constraint provides unmatched market leverage and senior compensation for engineers mastering the intersection of Kubernetes and accelerated computing.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;2. Why AI Platform Engineering is Vital for the Enterprise&lt;/h3&gt;
&lt;p&gt;Transitioning from API-based PoCs to private enterprise-grade AI raises complex engineering hurdles:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GPU Orchestration &amp;amp; Scheduling:&lt;/strong&gt; Multi-Instance GPU (MIG), vGPU slicing, and batch queuing with KubeRay and Kueue.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;High-Throughput Inference Serving:&lt;/strong&gt; Operating engines like &lt;strong&gt;vLLM&lt;/strong&gt; and &lt;strong&gt;KServe&lt;/strong&gt; using Chunked Prefill, PagedAttention, and Continuous Batching.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sovereign Fine-Tuning &amp;amp; Alignment:&lt;/strong&gt; Leveraging the &lt;strong&gt;InstructLab (LAB)&lt;/strong&gt; methodology to specialize models (IBM Granite, Mistral) on proprietary data without catastrophic forgetting.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;3. The 2026 Industry Technology Stack&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Enterprise AI Platform:&lt;/strong&gt; Red Hat OpenShift AI (RHOAI) &amp;amp; GPU-accelerated Kubernetes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Distributed Serving:&lt;/strong&gt; vLLM, TGI, KServe, Triton.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Workflows &amp;amp; MLOps:&lt;/strong&gt; Kubeflow Pipelines, Ray, MLflow.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Governance &amp;amp; Trust:&lt;/strong&gt; TrustyAI, NeMo Guardrails, Sigstore container signing.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;4. Essential Certifications&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Red Hat Certified Specialist in OpenShift AI (EX267):&lt;/strong&gt; Practical benchmark for enterprise AI platform operations and lifecycle management.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Red Hat Certified OpenShift Administrator (EX280):&lt;/strong&gt; Foundational cluster operations credential.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h3&gt;5. Accelerate Your Career with the AS300 Curriculum&lt;/h3&gt;
&lt;p&gt;Aperta Scientia&amp;#39;s &lt;strong&gt;AS300 — AI Platform Engineer&lt;/strong&gt; curriculum provides end-to-end industrial immersion:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;3 Months 100% Live Remote:&lt;/strong&gt; Guided by certified engineers and industry leaders.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Official Red Hat Partnership:&lt;/strong&gt; Dedicated GPU labs via RHLS and certification vouchers included.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Real-World Capstone Project:&lt;/strong&gt; Architecting and operating a production-grade private AI platform.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Accredited Training:&lt;/strong&gt; Qualiopi-certified for European and French educational funding.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;👉 &lt;strong&gt;&lt;a href=&quot;/curriculums/as300/&quot; &gt;Explore the AS300 Curriculum &amp; Apply&lt;/a&gt;&lt;/strong&gt; or &lt;strong&gt;&lt;a href=&quot;/contact/&quot; &gt;Contact our Academic Advisors&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>Tech Careers</category><author>Aperta Intelligence Lab</author><enclosure url="https://aperta.io/images/technologies/rhoai.png" length="0" type="image/png"/></item><item><title>Becoming a Platform Engineer in 2026: The Definitive Guide (Skills, Talent Shortage &amp; AS200 Curriculum)</title><link>https://aperta.io/radar/2026-09-07-becoming-platform-engineer-guide-2026/</link><guid isPermaLink="true">https://aperta.io/radar/2026-09-07-becoming-platform-engineer-guide-2026/</guid><description>Market talent shortage, essential skills, and Red Hat certifications: how to become a Cloud Native Platform Engineer in 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;Becoming a Platform Engineer in 2026: The Definitive Guide (Skills, Talent Shortage &amp; AS200 Curriculum)&quot; style=&quot;max-width: 100%; height: auto; border-radius: 12px; margin-bottom: 20px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The &lt;strong&gt;Platform Engineer&lt;/strong&gt; has become the linchpin of modern engineering organizations. While traditional DevOps sometimes overloaded product teams with infrastructure cognitive load, Platform Engineering formalizes &lt;strong&gt;Internal Developer Platforms (IDPs)&lt;/strong&gt; to provide a frictionless, secure, and automated developer experience.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;1. A Critical Talent Shortage Across Global Tech Hiring&lt;/h3&gt;
&lt;p&gt;The enterprise demand for engineers capable of architecting and operating enterprise cloud platforms far outpaces global supply:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Gartner:&lt;/strong&gt; In its research on cloud-native adoption, &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; projects that by 2026, &lt;strong&gt;80% of software engineering organizations will establish dedicated platform teams&lt;/strong&gt;, yet more than &lt;strong&gt;65% of engineering leaders cite talent acquisition as their primary roadblock&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Linux Foundation &amp;amp; CNCF:&lt;/strong&gt; The &lt;a href=&quot;https://www.linuxfoundation.org/resources/publications&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;Linux Foundation State of Tech Talent Report&lt;/a&gt; confirms that container orchestration, Kubernetes architecture, and infrastructure automation represent the &lt;strong&gt;top three most acute hiring challenges&lt;/strong&gt;, with enterprise vacancies frequently open for over 4 to 6 months.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Red Hat Global Tech Trends:&lt;/strong&gt; The &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 Study&lt;/a&gt; highlights &lt;strong&gt;talent and skills gaps as the #1 barrier&lt;/strong&gt; preventing organizations from scaling digital transformation and enterprise DevOps initiatives.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This structural supply deficit offers unprecedented leverage and career progression for engineers holding verifiable, hands-on credentials.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;2. Why Platform Engineering is Superseding Traditional DevOps&lt;/h3&gt;
&lt;p&gt;In many enterprises, the mantra &lt;em&gt;&amp;quot;You build it, you run it&amp;quot;&lt;/em&gt; led developers to wrestle with complex Kubernetes manifests, fractured CI/CD pipelines, and disparate cloud tooling.&lt;/p&gt;
&lt;p&gt;Platform Engineering resolves this bottleneck:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cognitive Load Reduction:&lt;/strong&gt; Product teams consume infrastructure via self-service &lt;em&gt;Golden Paths&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Built-in Governance &amp;amp; Compliance:&lt;/strong&gt; Security, policy enforcement, and observability are baked into the control plane.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Standardized Cloud-Native Operations:&lt;/strong&gt; Consistent application lifecycles across hybrid and multi-cloud footprints.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;3. The Core Technology Stack in 2026&lt;/h3&gt;
&lt;p&gt;Building resilient enterprise platforms requires deep mastery of proven industrial tooling:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Enterprise Container Orchestration:&lt;/strong&gt; Red Hat OpenShift &amp;amp; Advanced Kubernetes (Custom Operators, CRDs, OVN-Kubernetes SDN).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Declarative Infrastructure &amp;amp; Automation:&lt;/strong&gt; Ansible Automation Platform, Terraform, GitOps with ArgoCD.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Supply Chain Security:&lt;/strong&gt; Sigstore, Cosign, container scanning, and SELinux/RBAC isolation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Observability &amp;amp; SRE:&lt;/strong&gt; Prometheus, Grafana, OpenTelemetry, and SLO-driven engineering.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;4. Industry-Recognized Certifications That Matter&lt;/h3&gt;
&lt;p&gt;Practical, hands-on performance-based certifications carry the highest authority in European and global tech hiring:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Red Hat Certified OpenShift Administrator (EX280):&lt;/strong&gt; The gold standard for enterprise OpenShift cluster operations and security hardening.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Red Hat Certified Specialist in OpenShift Application Development (EX288):&lt;/strong&gt; Proves mastery of cloud-native build pipelines and containerized application delivery.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Red Hat Certified System Administrator (EX200):&lt;/strong&gt; The foundational Linux enterprise benchmark.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h3&gt;5. Accelerate Your Career with Aperta Scientia&amp;#39;s AS200 Curriculum&lt;/h3&gt;
&lt;p&gt;Designed to transition software engineers, Linux sysadmins, and cloud practitioners into &lt;strong&gt;production-ready Platform Engineers&lt;/strong&gt;, the &lt;strong&gt;AS200 DevOps &amp;amp; Cloud-Native Platform Engineering&lt;/strong&gt; curriculum offers deep immersive training:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;100% Live Remote &amp;amp; Mentored:&lt;/strong&gt; 3 intensive months led by certified instructors and industry practitioners.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Official Red Hat Partnership:&lt;/strong&gt; Full access to the &lt;em&gt;Red Hat Learning Subscription (RHLS)&lt;/em&gt; and official exam vouchers for EX280 &amp;amp; EX288 included.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Real-World Capstone Engineering:&lt;/strong&gt; End-to-end design, deployment, and operation of a multi-tenant enterprise platform.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Accredited &amp;amp; Certified:&lt;/strong&gt; Qualiopi-certified program eligible for educational funding in France and Europe.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;👉 &lt;strong&gt;&lt;a href=&quot;/curriculums/as200/&quot; &gt;Explore the AS200 Curriculum &amp; Apply for the Next Cohort&lt;/a&gt;&lt;/strong&gt; or &lt;strong&gt;&lt;a href=&quot;/contact/&quot; &gt;Schedule a 1-on-1 Consultation&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>Tech Careers</category><author>Aperta Intelligence Lab</author><enclosure url="https://aperta.io/images/technologies/openshift.png" length="0" type="image/png"/></item></channel></rss>