<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Kubernetes on Le Site de François</title><link>https://lesitedefrancois.be/en/tags/kubernetes/</link><description>Recent content in Kubernetes 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/kubernetes/index.xml" rel="self" type="application/rss+xml"/><item><title>cert-manager</title><link>https://lesitedefrancois.be/en/security/cert-manager/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/security/cert-manager/</guid><description>&lt;p&gt;&lt;strong&gt;cert-manager&lt;/strong&gt; is a CNCF graduated project that brings &lt;strong&gt;PKI&lt;/strong&gt; lifecycle management into Kubernetes as a first-class controller, eliminating the manual processes — CSR generation, CA submission, secret rotation, renewal tracking — that cause certificate-related outages in clusters that manage TLS manually. Its premise is that &lt;strong&gt;X.509&lt;/strong&gt; certificates should be declared as Kubernetes resources with the same GitOps-friendly, reconciliation-driven lifecycle as any other workload configuration: an operator declares the desired certificate, cert-manager continuously ensures that a valid, non-expired certificate matching that declaration exists and is stored in a Kubernetes &lt;code&gt;Secret&lt;/code&gt;, and renews it automatically before expiry. The default renewal threshold is two-thirds of the certificate&amp;rsquo;s validity period, so a certificate with a 90-day lifetime is renewed at 60 days without operator intervention.&lt;/p&gt;</description></item><item><title>cgroups (Control Groups) v2</title><link>https://lesitedefrancois.be/en/security/cgroups/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/security/cgroups/</guid><description>&lt;p&gt;&lt;strong&gt;Control Groups (cgroups)&lt;/strong&gt; is a Linux kernel mechanism, introduced in 2.6.24 (2008), that organises processes into a hierarchy of named groups and uses &lt;strong&gt;controllers&lt;/strong&gt; to account for and limit each group&amp;rsquo;s consumption of CPU time, memory, I/O bandwidth, and process count. Every container runtime in existence — Docker, containerd, CRI-O, Podman — uses cgroups to enforce the resource limits declared in a container spec (&lt;code&gt;--memory&lt;/code&gt;, &lt;code&gt;--cpus&lt;/code&gt;, &lt;code&gt;requests.memory&lt;/code&gt;, &lt;code&gt;limits.cpu&lt;/code&gt;). Every systemd service on a modern Linux system runs in its own cgroup slice. Without cgroups, a container or service could consume all available memory, CPU, or file descriptors, starving other workloads on the same host. The current production version is &lt;strong&gt;cgroups v2&lt;/strong&gt; (also written cgroupv2, unified hierarchy), stable since kernel 4.5 and the default on all major distributions since RHEL 9, Ubuntu 21.10, and Fedora 31.&lt;/p&gt;</description></item><item><title>Confidential Cluster</title><link>https://lesitedefrancois.be/en/security/confidential-cluster/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/security/confidential-cluster/</guid><description>&lt;p&gt;A &lt;strong&gt;Confidential Cluster&lt;/strong&gt; is a Kubernetes cluster designed so that the cloud or infrastructure operator — including hypervisor administrators, datacenter staff, and anyone who can access the underlying hardware — is entirely outside the trusted computing base. It achieves this by running every Kubernetes node, including control plane nodes, as a &lt;strong&gt;Confidential VM&lt;/strong&gt;, and by extending the confidential boundary to cover not just individual workloads but the cluster&amp;rsquo;s network traffic, persistent storage, and control plane state. The goal is that a workload owner can cryptographically verify the entire cluster before trusting it, and that no privileged party outside the cluster&amp;rsquo;s own CVMs can read or tamper with workload data, cluster secrets, or etcd contents.&lt;/p&gt;</description></item><item><title>Confidential Containers (CoCo)</title><link>https://lesitedefrancois.be/en/security/coco/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/security/coco/</guid><description>&lt;p&gt;&lt;strong&gt;Confidential Containers (CoCo)&lt;/strong&gt; is a CNCF sandbox project that lifts hardware confidential computing — &lt;strong&gt;TDX&lt;/strong&gt;, &lt;strong&gt;SEV-SNP&lt;/strong&gt;, Intel SGX, IBM Secure Execution — up to the Kubernetes pod level, providing a unified software layer that abstracts away the underlying TEE technology. Its defining trust model is unusually strict: the Kubernetes control plane, the kubelet, the container runtime, and the cloud operator are all treated as &lt;strong&gt;explicitly untrusted&lt;/strong&gt;. Only the hardware itself and the workload owner&amp;rsquo;s own supply chain are in scope for trust.&lt;/p&gt;</description></item><item><title>Edge Computing</title><link>https://lesitedefrancois.be/en/telco/edge-computing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/telco/edge-computing/</guid><description>&lt;p&gt;&lt;strong&gt;Edge computing&lt;/strong&gt; in telecommunications places &lt;strong&gt;compute, storage, and application execution&lt;/strong&gt; close to users and devices — at &lt;strong&gt;cell sites&lt;/strong&gt;, &lt;strong&gt;regional points of presence&lt;/strong&gt;, or &lt;strong&gt;on-prem enterprise locations&lt;/strong&gt; — rather than only in distant &lt;strong&gt;hyperscale data centres&lt;/strong&gt;. The goal is to reduce &lt;strong&gt;end-to-end latency&lt;/strong&gt;, limit &lt;strong&gt;backhaul&lt;/strong&gt; load, satisfy &lt;strong&gt;data residency&lt;/strong&gt;, and enable &lt;strong&gt;real-time&lt;/strong&gt; applications (AR/VR, industrial control, V2X, video analytics) that are impractical with &lt;strong&gt;50–100 ms&lt;/strong&gt; round trips to central clouds. In &lt;strong&gt;5G&lt;/strong&gt;, edge is tightly coupled to the &lt;strong&gt;user plane&lt;/strong&gt;: a &lt;strong&gt;local UPF&lt;/strong&gt; on &lt;strong&gt;N6&lt;/strong&gt; breakout forwards traffic to an &lt;strong&gt;edge data network (DN)&lt;/strong&gt; hosting &lt;strong&gt;MEC applications&lt;/strong&gt; without hairpinning through the operator’s core hub.&lt;/p&gt;</description></item><item><title>ESO (External Secrets Operator)</title><link>https://lesitedefrancois.be/en/security/eso/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/security/eso/</guid><description>&lt;p&gt;&lt;strong&gt;External Secrets Operator (ESO)&lt;/strong&gt; is a CNCF incubating project that bridges the gap between Kubernetes-native secrets and enterprise secret management backends. Its premise is that native Kubernetes Secrets — base64-encoded values stored in etcd — are not adequate as a primary secret store: they offer no encryption at rest by default, no access audit trail, no versioning or rotation lifecycle, and no single source of truth across multiple clusters. Rather than replacing Kubernetes Secrets as a consumption mechanism (applications still mount them as environment variables or files in the familiar way), ESO replaces etcd as their &lt;em&gt;source of authority&lt;/em&gt;, pulling the real values from a backend that does provide those properties and keeping the Kubernetes Secret as a synchronised, ephemeral projection.&lt;/p&gt;</description></item><item><title>Kata Containers</title><link>https://lesitedefrancois.be/en/security/kata-containers/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/security/kata-containers/</guid><description>&lt;p&gt;&lt;strong&gt;Kata Containers&lt;/strong&gt; is an Open Infrastructure Foundation (OpenInfra Foundation) project that replaces the Linux namespace and cgroup isolation of a conventional container runtime with a full VM boundary, while remaining entirely compatible with the &lt;strong&gt;OCI&lt;/strong&gt; runtime specification and the Kubernetes CRI. From the perspective of containerd, CRI-O, or the Kubernetes kubelet, a Kata pod is indistinguishable from a runc or crun pod — the same API calls, the same lifecycle verbs, the same pod spec — but instead of calling &lt;code&gt;clone()&lt;/code&gt; to create a new namespace, Kata starts a lightweight virtual machine. The workload runs inside that VM with its own kernel, its own device model, and a hardware-enforced isolation boundary between itself and the host kernel. The premise is that Linux namespaces, while convenient, share the same kernel as the host: a kernel vulnerability exploitable from inside a container can affect the host and every other container running on the same node. A VM boundary means that even a full guest kernel compromise cannot directly affect the host.&lt;/p&gt;</description></item><item><title>KMS v2 (Kubernetes KMS Provider v2)</title><link>https://lesitedefrancois.be/en/security/kmsv2/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/security/kmsv2/</guid><description>&lt;p&gt;&lt;strong&gt;KMS v2 (Kubernetes KMS Provider version 2)&lt;/strong&gt; is the stable (GA since Kubernetes 1.29, KMS v1 deprecated in 1.28 and disabled by default in 1.29) mechanism for encrypting the contents of the Kubernetes etcd datastore at rest using an external key management service. Without encryption, Kubernetes Secrets stored in etcd are base64-encoded — trivially decodable by anyone with read access to the etcd data files or a snapshot. With KMS v2 enabled, resources written to etcd — Secrets, ConfigMaps, and any other API objects selected by the &lt;code&gt;EncryptionConfiguration&lt;/code&gt; — are encrypted before being persisted, using a unique per-object key derived locally. The &lt;strong&gt;envelope encryption&lt;/strong&gt; scheme means those per-object keys are never stored in plaintext: only their encrypted form lives in etcd, and only the external KMS holds the wrapping key. The encryption configuration is declared in a file referenced by the API server&amp;rsquo;s &lt;code&gt;--encryption-provider-config&lt;/code&gt; flag, with &lt;code&gt;kms: apiVersion: v2&lt;/code&gt; selecting the KMS v2 code path, and &lt;code&gt;endpoint: unix:///path/to/plugin.sock&lt;/code&gt; pointing at the plugin&amp;rsquo;s Unix domain socket.&lt;/p&gt;</description></item><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>llm-d</title><link>https://lesitedefrancois.be/en/ai/llm-d/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/ai/llm-d/</guid><description>&lt;p&gt;&lt;strong&gt;llm-d&lt;/strong&gt; is an open-source &lt;strong&gt;distributed inference serving stack&lt;/strong&gt; for production LLM workloads on &lt;strong&gt;Kubernetes&lt;/strong&gt;. Its objective is not to replace model servers such as &lt;strong&gt;vLLM&lt;/strong&gt; or SGLang but to sit above them and fix cluster-scale problems: which replica should receive the next request, how to split &lt;strong&gt;prefill&lt;/strong&gt; (compute-heavy) from &lt;strong&gt;decode&lt;/strong&gt; (memory-bandwidth-heavy), how to share or tier &lt;strong&gt;KV cache&lt;/strong&gt; state, and how to scale MoE models with wide expert parallelism. llm-d publishes “well-lit path” guides—benchmarked Helm recipes and architectures—so teams reach strong time-to-first-token and throughput without hand-rolling schedulers. The project is a &lt;strong&gt;CNCF sandbox&lt;/strong&gt; effort with contributors including &lt;strong&gt;Red Hat&lt;/strong&gt;, IBM, Google, and cloud partners.&lt;/p&gt;</description></item><item><title>MIG (Multi-Instance GPU)</title><link>https://lesitedefrancois.be/en/ai/mig/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/ai/mig/</guid><description>&lt;p&gt;&lt;strong&gt;MIG (Multi-Instance GPU)&lt;/strong&gt; is an NVIDIA &lt;strong&gt;GPU&lt;/strong&gt; partitioning mode on datacenter accelerators (e.g. &lt;strong&gt;A100&lt;/strong&gt;, &lt;strong&gt;H100&lt;/strong&gt;) that splits one physical card into up to seven &lt;strong&gt;GPU instances (GIs)&lt;/strong&gt;, each with isolated &lt;strong&gt;streaming multiprocessors&lt;/strong&gt;, memory bandwidth, and &lt;strong&gt;HBM&lt;/strong&gt; capacity. The objective is &lt;strong&gt;higher utilization&lt;/strong&gt; in multi-tenant environments: several smaller models or dev/test workloads share one expensive GPU without time-slicing contention as severe as full-card sharing. Each MIG instance appears to the OS and &lt;strong&gt;CUDA&lt;/strong&gt; as a separate GPU with fixed resources; workloads cannot oversubscribe another instance’s memory. MIG suits &lt;strong&gt;inference&lt;/strong&gt; and modest training more often than massive single-job training that needs the entire GPU and &lt;strong&gt;NVLink&lt;/strong&gt; domain.&lt;/p&gt;</description></item><item><title>OIDC (OpenID Connect)</title><link>https://lesitedefrancois.be/en/security/oidc/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/security/oidc/</guid><description>&lt;p&gt;&lt;strong&gt;OpenID Connect (OIDC)&lt;/strong&gt; is an authentication protocol built as a thin layer on top of &lt;strong&gt;OAuth 2.0&lt;/strong&gt;, published by the OpenID Foundation in 2014. Where OAuth 2.0 defines how to delegate authorisation (granting access to resources), OIDC adds the missing authentication semantics: a standard &lt;strong&gt;ID token&lt;/strong&gt; that proves who the user is, a &lt;strong&gt;UserInfo endpoint&lt;/strong&gt; that returns standardised identity claims, and a &lt;strong&gt;discovery document&lt;/strong&gt; that allows clients to configure themselves automatically from a single well-known URL. The separation is precise: OAuth 2.0 access tokens prove that a client is authorised to call an API; OIDC ID tokens prove that a specific user authenticated with a specific identity provider at a specific time. OIDC is the protocol behind virtually every &amp;ldquo;Sign in with Google / GitHub / Microsoft&amp;rdquo; flow, every SAML-to-modern-stack migration, and every Kubernetes service account token issued today — making it the dominant authentication federation standard in cloud-native infrastructure.&lt;/p&gt;</description></item><item><title>Peer Pods</title><link>https://lesitedefrancois.be/en/security/peer-pods/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/security/peer-pods/</guid><description>&lt;p&gt;&lt;strong&gt;Peer Pods&lt;/strong&gt; is the deployment model for &lt;strong&gt;CoCo (Confidential Containers)&lt;/strong&gt; designed for public cloud environments where the Kubernetes worker nodes are standard VMs — not bare metal — and therefore cannot host a nested confidential VM for each pod. The fundamental constraint it solves is physical: confidential computing hardware (&lt;strong&gt;TDX&lt;/strong&gt;, &lt;strong&gt;SEV-SNP&lt;/strong&gt;) does not support nested virtualisation, meaning a confidential guest cannot be launched inside another VM. In the conventional CoCo deployment, the Kata Containers runtime asks a local hypervisor (QEMU/KVM) on the worker node to create a micro-VM for each pod; if the worker node is itself a VM, this requires nested virtualisation that the TEE hardware cannot provide. Peer Pods sidestep this entirely by moving the pod&amp;rsquo;s VM off the worker node and onto a separate, cloud-provisioned instance running directly on bare-metal TEE-capable hardware.&lt;/p&gt;</description></item><item><title>PSA (Pod Security Admission)</title><link>https://lesitedefrancois.be/en/security/psa/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/security/psa/</guid><description>&lt;p&gt;&lt;strong&gt;Pod Security Admission (PSA)&lt;/strong&gt; is the built-in Kubernetes admission controller that enforces the &lt;strong&gt;Pod Security Standards (PSS)&lt;/strong&gt;, a set of predefined security profiles that constrain what a pod is allowed to do. It became stable in Kubernetes 1.25, at which point its predecessor &lt;strong&gt;PodSecurityPolicy (PSP)&lt;/strong&gt; was simultaneously removed. Where PSP was a complex, cluster-scoped object requiring deep RBAC wiring and prone to misconfiguration, PSA is deliberately simpler: it is always enabled, requires no CRDs or RBAC setup, and is configured entirely through namespace labels. The trade-off for that simplicity is that PSA is opinionated and coarse-grained — it enforces fixed profiles rather than arbitrary custom rules, and its granularity is the namespace rather than the individual workload or service account. Teams needing finer-grained policy beyond what PSA offers typically combine it with a policy engine such as Kyverno or OPA Gatekeeper.&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><item><title>Sealed Secrets</title><link>https://lesitedefrancois.be/en/security/sealed-secrets/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/security/sealed-secrets/</guid><description>&lt;p&gt;&lt;strong&gt;Sealed Secrets&lt;/strong&gt; is a Kubernetes controller and companion CLI tool (&lt;code&gt;kubeseal&lt;/code&gt;) created by Bitnami that solves a specific GitOps problem: how to store Kubernetes Secret manifests in a Git repository without exposing their contents. A standard Kubernetes Secret is base64-encoded, not encrypted — anyone who can read the manifest file or the Git history can decode the values instantly. Sealed Secrets resolves this by encrypting the secret values using asymmetric cryptography before they ever leave the developer&amp;rsquo;s machine, producing a &lt;code&gt;SealedSecret&lt;/code&gt; custom resource that contains only ciphertext and is safe to commit to any repository, public or private. The corresponding plaintext Secret is materialised exclusively inside the cluster by the controller, which holds the only private key capable of decryption.&lt;/p&gt;</description></item><item><title>seccomp (Secure Computing Mode)</title><link>https://lesitedefrancois.be/en/security/seccomp/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/security/seccomp/</guid><description>&lt;p&gt;&lt;strong&gt;seccomp (Secure Computing Mode)&lt;/strong&gt; is a Linux kernel facility, activated by the &lt;code&gt;seccomp(2)&lt;/code&gt; syscall, that restricts which system calls a process may subsequently invoke. In its original &lt;code&gt;SECCOMP_SET_MODE_STRICT&lt;/code&gt; form (2005) it was a blunt instrument: the process could call only &lt;code&gt;read&lt;/code&gt;, &lt;code&gt;write&lt;/code&gt;, &lt;code&gt;_exit&lt;/code&gt;, and &lt;code&gt;sigreturn&lt;/code&gt;. The operationally useful form is &lt;code&gt;SECCOMP_SET_MODE_FILTER&lt;/code&gt;, introduced in kernel 3.5 (2012), which accepts a &lt;strong&gt;BPF&lt;/strong&gt; (classic BPF, predating eBPF) filter program that receives each syscall&amp;rsquo;s number and arguments and returns one of several verdicts: &lt;code&gt;ALLOW&lt;/code&gt; (continue normally), &lt;code&gt;ERRNO&lt;/code&gt; (return a specified error to the process), &lt;code&gt;KILL_PROCESS&lt;/code&gt; or &lt;code&gt;KILL_THREAD&lt;/code&gt; (terminate immediately without giving the process a chance to handle signals), &lt;code&gt;TRAP&lt;/code&gt; (deliver &lt;code&gt;SIGSYS&lt;/code&gt;), or &lt;code&gt;TRACE&lt;/code&gt; (notify a ptracer). Once installed, a seccomp filter cannot be removed, and child processes created by &lt;code&gt;fork()&lt;/code&gt; or threads created by &lt;code&gt;clone()&lt;/code&gt; inherit it. Filters may only add restrictions, never loosen them — so a chain of filters is the intersection of all their allowlists. The filter runs entirely in the kernel, in BPF bytecode verified for safety, before the syscall implementation is entered, making it extremely low-overhead relative to the security it provides.&lt;/p&gt;</description></item><item><title>Secrets Store CSI Driver</title><link>https://lesitedefrancois.be/en/security/csi-secret-store/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/security/csi-secret-store/</guid><description>&lt;p&gt;&lt;strong&gt;Secrets Store CSI Driver&lt;/strong&gt; (formally &lt;code&gt;secrets-store.csi.k8s.io&lt;/code&gt;) is a Kubernetes SIG Auth project that uses the Container Storage Interface to mount secrets, certificates, and keys from external secret backends directly into pod filesystems as ephemeral &lt;code&gt;tmpfs&lt;/code&gt; volumes, bypassing the Kubernetes &lt;code&gt;Secret&lt;/code&gt; object and etcd entirely. The driver runs as a DaemonSet on every node; when a pod referencing a CSI volume of type &lt;code&gt;secrets-store.csi.k8s.io&lt;/code&gt; is scheduled, the driver communicates with a &lt;strong&gt;provider plugin&lt;/strong&gt; over gRPC to retrieve the secret content from the configured backend, writes it to a per-pod &lt;code&gt;tmpfs&lt;/code&gt; mount, and makes it available inside the container at the specified path. When the pod terminates, the &lt;code&gt;tmpfs&lt;/code&gt; is unmounted and the data is gone — secrets have no persistence beyond the lifetime of the pod that requested them.&lt;/p&gt;</description></item><item><title>SOAR (Security Orchestration, Automation and Response)</title><link>https://lesitedefrancois.be/en/security/soar/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/security/soar/</guid><description>&lt;p&gt;&lt;strong&gt;SOAR (Security Orchestration, Automation and Response)&lt;/strong&gt; is the actuation complement to a &lt;strong&gt;SIEM&lt;/strong&gt;: where the SIEM detects and alerts, SOAR responds and acts. It receives alerts — primarily from the SIEM, but also directly from EDR platforms, vulnerability scanners, cloud security posture tools, and CNI/container security platforms — and executes structured response &lt;strong&gt;playbooks&lt;/strong&gt;: predefined, branching workflows that enrich the alert with additional context from connected systems, make automated or human-gated decisions based on that context, and issue remediation actions across the organisation&amp;rsquo;s security tooling. The three pillars of SOAR are &lt;strong&gt;orchestration&lt;/strong&gt; (connecting disparate security tools into a unified, API-driven workflow so they exchange data and coordinate actions without human clipboard-copying), &lt;strong&gt;automation&lt;/strong&gt; (executing repeatable investigation and containment steps at machine speed, consistently and without analyst fatigue), and &lt;strong&gt;case management&lt;/strong&gt; (tracking the full lifecycle of a security incident — detection, triage, investigation, containment, eradication, recovery, and post-incident review — in a structured, auditable record). Leading platforms include Splunk SOAR (formerly Phantom), IBM QRadar SOAR (formerly Resilient), Palo Alto XSOAR (formerly Demisto), Microsoft Sentinel with Playbooks (Logic Apps), and open-source options such as TheHive with Cortex.&lt;/p&gt;</description></item><item><title>SR-IOV</title><link>https://lesitedefrancois.be/en/telco/sr-iov/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/telco/sr-iov/</guid><description>&lt;p&gt;&lt;strong&gt;SR-IOV (Single Root I/O Virtualisation)&lt;/strong&gt; is a &lt;strong&gt;PCI-SIG&lt;/strong&gt; specification that lets one physical &lt;strong&gt;PCIe&lt;/strong&gt; device (typically a &lt;strong&gt;NIC&lt;/strong&gt; or accelerator) expose multiple lightweight &lt;strong&gt;Virtual Functions (VFs)&lt;/strong&gt; — each assignable directly to a &lt;strong&gt;VM&lt;/strong&gt; or container — while a &lt;strong&gt;Physical Function (PF)&lt;/strong&gt; remains for management and global configuration. VFs bypass much of the hypervisor’s software switching path, delivering &lt;strong&gt;lower latency&lt;/strong&gt;, &lt;strong&gt;higher throughput&lt;/strong&gt;, and more &lt;strong&gt;deterministic&lt;/strong&gt; behaviour than &lt;strong&gt;paravirtualised virtio&lt;/strong&gt; alone — properties valued in &lt;strong&gt;telco NFV&lt;/strong&gt; (vEPC, vRAN CU/DU, firewall, DPI) and in &lt;strong&gt;cloud-native&lt;/strong&gt; packet workloads on &lt;strong&gt;Kubernetes&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Storage Encryption</title><link>https://lesitedefrancois.be/en/security/storage-encryption/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/security/storage-encryption/</guid><description>&lt;p&gt;Storage encryption is not a single feature but a &lt;strong&gt;four-layer decision&lt;/strong&gt; that must be made independently, because each layer addresses a different adversary and a different failure mode. &lt;strong&gt;Layer 1 — disk/OSD at-rest encryption&lt;/strong&gt; protects against physical media theft: a decommissioned OSD or stolen drive is unreadable without the key. &lt;strong&gt;Layer 2 — cluster-internal wire encryption&lt;/strong&gt; protects against a network-layer attacker who can observe traffic between storage nodes: OSDs, monitors, and clients on the cluster network. &lt;strong&gt;Layer 3 — PV/volume-level encryption&lt;/strong&gt; protects against a storage operator or another tenant reading a workload&amp;rsquo;s data through the storage system itself — the threat model where the storage cluster is itself potentially untrusted or multi-tenant. &lt;strong&gt;Layer 4 — object storage server-side encryption&lt;/strong&gt; provides per-object key management for S3-compatible workloads, enabling customer-managed keys (CMK) and per-tenant key isolation in object stores. These layers are &lt;strong&gt;independent and composable&lt;/strong&gt;: enabling Layer 1 without Layer 2 protects against physical theft but not a network interceptor; enabling Layer 3 without Layer 1 protects against the storage operator but not physical media extraction. A complete encryption posture addresses all four explicitly, even if some layers are deliberately left disabled with a documented rationale.&lt;/p&gt;</description></item><item><title>Vault (HashiCorp Vault)</title><link>https://lesitedefrancois.be/en/security/vault/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/security/vault/</guid><description>&lt;p&gt;&lt;strong&gt;HashiCorp Vault&lt;/strong&gt; is a secrets management platform designed to replace the pattern of static, long-lived credentials scattered across configuration files, environment variables, and CI pipelines with a centralised, policy-enforced, fully audited secrets API. Its core abstraction is that every secret has an identity (a path), an owner (determined by an auth method), a policy (an HCL &lt;code&gt;HashiCorp Configuration Language&lt;/code&gt; document granting access to specific paths), and a lease (a TTL after which the secret expires or must be renewed). Nothing in Vault is persistent by default — every access is authenticated, every secret access is logged to an immutable audit trail, and credentials that are no longer needed expire automatically rather than accumulating indefinitely.&lt;/p&gt;</description></item><item><title>vLLM</title><link>https://lesitedefrancois.be/en/ai/vllm/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/ai/vllm/</guid><description>&lt;p&gt;&lt;strong&gt;vLLM&lt;/strong&gt; is an open-source library and serving stack for &lt;strong&gt;large language model (LLM) inference&lt;/strong&gt;. Its objective is to turn a trained model into a production service that sustains many concurrent users with low latency and high &lt;strong&gt;tokens per second&lt;/strong&gt; per GPU. vLLM targets the inference phase (prefill + decode), not training: it loads weights onto accelerators, batches incoming prompts, schedules decode steps, and streams completions back to clients over HTTP/gRPC (often via an OpenAI-compatible API). It has become a de facto engine behind many private and cloud AI gateways because it ships integrations for Hugging Face models, LoRA adapters, tensor parallelism, pipeline parallelism, speculative decoding, and quantization (GPTQ, AWQ, FP8).&lt;/p&gt;</description></item></channel></rss>