<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Openshift on Le Site de François</title><link>https://lesitedefrancois.be/en/tags/openshift/</link><description>Recent content in Openshift on Le Site de François</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>© 2026 François</copyright><atom:link href="https://lesitedefrancois.be/en/tags/openshift/index.xml" rel="self" type="application/rss+xml"/><item><title>KubeVirt</title><link>https://lesitedefrancois.be/en/security/kubevirt/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/security/kubevirt/</guid><description>&lt;p&gt;&lt;strong&gt;KubeVirt&lt;/strong&gt; is a CNCF project that makes Kubernetes a native hypervisor management plane, allowing KVM virtual machines to be declared, scheduled, and operated through the Kubernetes API without a separate virtualisation management layer. The motivating use case is organisational convergence: teams running a mix of legacy VM workloads and modern containerised services no longer need two separate platforms (an OpenStack or vSphere cluster for VMs, a Kubernetes cluster for containers) with separate networking, storage, RBAC, and CI/CD integration. With KubeVirt, both workload types live in the same cluster, share the same &lt;code&gt;kubectl&lt;/code&gt; and GitOps tooling, and are subject to the same scheduling, resource quota, and network policy primitives. KubeVirt reached 1.0 in 2023 and is the engine behind &lt;strong&gt;Red Hat OpenShift Virtualization&lt;/strong&gt;, the downstream product used by organisations migrating away from VMware.&lt;/p&gt;</description></item><item><title>KVM/QEMU</title><link>https://lesitedefrancois.be/en/security/kvm-qemu/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/security/kvm-qemu/</guid><description>&lt;p&gt;&lt;strong&gt;KVM&lt;/strong&gt; (Kernel-based Virtual Machine) and &lt;strong&gt;QEMU&lt;/strong&gt; (Quick Emulator) solve different halves of the same problem and are almost always used together. &lt;strong&gt;KVM&lt;/strong&gt; is a Linux kernel module that turns the kernel into a hypervisor: with &lt;strong&gt;Intel VT-x&lt;/strong&gt; or &lt;strong&gt;AMD-V&lt;/strong&gt;, guest CPUs run on real hardware at near-native speed and guest memory is managed through extended page tables. KVM has no device model of its own — no disk, network, or firmware emulation. &lt;strong&gt;QEMU&lt;/strong&gt; supplies that in userspace (virtio, USB, VGA, ACPI) and controls KVM by issuing &lt;strong&gt;ioctl&lt;/strong&gt; calls on &lt;strong&gt;&lt;code&gt;/dev/kvm&lt;/code&gt;&lt;/strong&gt; — creating VMs, mapping memory, running vCPUs via &lt;code&gt;KVM_RUN&lt;/code&gt; — while &lt;strong&gt;QMP&lt;/strong&gt; exposes external management over a Unix socket. &lt;strong&gt;libvirt&lt;/strong&gt;, originally from Red Hat, sits above both: it translates &lt;strong&gt;domain XML&lt;/strong&gt; into QEMU command lines and lifecycle operations. The stack is the default on Linux: &lt;strong&gt;RHEL&lt;/strong&gt; ships &lt;code&gt;qemu-kvm&lt;/code&gt;, &lt;strong&gt;OpenShift Virtualization&lt;/strong&gt; runs &lt;strong&gt;KubeVirt&lt;/strong&gt; (&lt;code&gt;virt-launcher&lt;/code&gt; → libvirt → QEMU), and &lt;strong&gt;OpenShift Sandboxed Containers&lt;/strong&gt; uses &lt;strong&gt;Kata Containers&lt;/strong&gt; with the same hypervisor to isolate pods in micro-VMs.&lt;/p&gt;</description></item><item><title>RHCOS (Red Hat Enterprise Linux CoreOS)</title><link>https://lesitedefrancois.be/en/security/rhcos/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/security/rhcos/</guid><description>&lt;p&gt;&lt;strong&gt;RHCOS (Red Hat Enterprise Linux CoreOS)&lt;/strong&gt; is the operating system that runs on every OpenShift control plane and worker node. It is not a general-purpose Linux distribution — it is a purpose-built, immutable, container-optimised OS designed to run exclusively as a managed node in an OpenShift cluster. Its security posture is architecturally different from a hardened RHEL installation: rather than hardening a mutable system through configuration management, RHCOS makes the OS layer structurally resistant to modification by design. The root filesystem&amp;rsquo;s &lt;code&gt;/usr&lt;/code&gt; tree is &lt;strong&gt;read-only&lt;/strong&gt; (enforced at mount time by rpm-ostree and, in recent versions, by &lt;strong&gt;composefs&lt;/strong&gt; over the OSTree object store), &lt;code&gt;/etc&lt;/code&gt; and &lt;code&gt;/var&lt;/code&gt; are writable but managed exclusively by the &lt;strong&gt;Machine Config Operator (MCO)&lt;/strong&gt;, and no package manager is available at runtime for ad-hoc software installation. An operator who wants to change any node-level configuration — kernel arguments, sysctl settings, systemd units, certificates, kubelet configuration — creates a &lt;strong&gt;MachineConfig&lt;/strong&gt; object in the OpenShift API; the MCO renders it into an Ignition config, applies it to the target MachineConfigPool (master, worker, or custom), and drains and reboots the affected nodes in a rolling fashion. Direct SSH access to nodes for configuration changes is explicitly unsupported and actively discouraged — &lt;code&gt;oc debug node/&amp;lt;name&amp;gt;&lt;/code&gt; is the supported emergency access path, dropping into a privileged container on the node&amp;rsquo;s host namespaces under audit.&lt;/p&gt;</description></item><item><title>SCC (Security Context Constraints)</title><link>https://lesitedefrancois.be/en/security/scc/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/security/scc/</guid><description>&lt;p&gt;&lt;strong&gt;Security Context Constraints (SCCs)&lt;/strong&gt; are OpenShift&amp;rsquo;s mechanism for controlling and enforcing the security posture of pods at admission time. They predate and are more expressive than Kubernetes &lt;strong&gt;PSA&lt;/strong&gt;: where PSA validates a pod spec against a fixed profile and either admits or rejects it, an SCC acts as both a validator &lt;em&gt;and&lt;/em&gt; a mutator — it can inject missing fields into the pod spec (a UID from the namespace&amp;rsquo;s allocated range, an SELinux context, capability drops) so that a pod that did not specify its full security context in its manifest is brought into compliance automatically rather than rejected. SCCs are cluster-scoped resources, and access to them is controlled via RBAC: a service account must be granted &lt;code&gt;use&lt;/code&gt; of an SCC through a &lt;code&gt;Role&lt;/code&gt; or &lt;code&gt;ClusterRole&lt;/code&gt; binding before pods running under that service account can be admitted with the permissions that SCC grants.&lt;/p&gt;</description></item></channel></rss>