Uploaded image for project: 'Red Hat OpenShift Control Planes'
  1. Red Hat OpenShift Control Planes
  2. CNTRLPLANE-2635

Manual Verification: Kernel-Level Isolation on KubeVirt Platform

XMLWordPrintable

    • None
    • False
    • Hide

      None

      Show
      None
    • False
    • None
    • None
    • None
    • None

      Objective

      Verify kernel-level isolation for HyperShift Hosted Control Planes on KubeVirt platform with version skew between management and hosted clusters. This validates ANSSI BP-028 compliance requirements for kernel-level isolation.

      Parent Work Item

      This task is part of CNTRLPLANE-2630: E2E test for OCPSTRAT-2217 VM-level and Hosted Cluster Isolation levels

      Implementation

      PR: openshift/release#74326

      Automated CI test implemented as a periodic Prow job:

      • Job: periodic-ci-openshift-hypershift-release-4.20-periodics-e2e-kubevirt-metal-conformance-calico-version-skew-y2
      • Workflow: hypershift-kubevirt-baremetalds-conformance-calico-version-skew
      • Test step: hypershift-kubevirt-check-kernel-isolation

      Version Skew Configuration

      • Management cluster: OCP 4.20 (release:latest)
      • Hosted cluster: OCP 4.18 (release:latest-4-18)
      • Skew: y-2 (maximum allowed for even releases per OCPSTRAT-1707)

      What the Test Validates

      Check Method ANSSI BP-028 Relevance
      Different Boot IDs oc get node -o jsonpath={.status.nodeInfo.bootID} Proves separate kernel instances
      VirtLauncher pods exist oc get pods -A | grep virt-launcher Confirms VM-based deployment
      VirtualMachineInstance resources oc get vmi -n [control-plane-ns] Validates KubeVirt virtualization layer
      NetworkPolicy enforcement oc get networkpolicy -n [control-plane-ns] Network isolation for VirtLauncher pods
      Kernel version comparison Node status kernelVersion Informational — version skew evidence

      Test Results (2026-02-07)

      Cluster: build05.ci.devcluster.openshift.com | Namespace: ci-op-4605ih94

      Management Cluster (OCP 4.20)

      Field Value
      Kubernetes v1.33.6
      Kernel 5.14.0-570.86.1.el9_6.x86_64
      OS Image RHCOS 9.6.20260204-0 (Plow)
      Boot ID d7aa7795-3810-4506-aee2-364fded2921c

      Hosted Cluster (OCP 4.18)

      Field Value
      Kubernetes v1.31.14
      Kernel 5.14.0-427.110.1.el9_4.x86_64
      OS Image RHCOS 418.94.202602050004-0
      Boot ID 2e35c9b5-02c1-44d7-ba15-147e201d7292

      Version Skew Evidence

      Field Management (4.20) Hosted (4.18) Different?
      Kubernetes v1.33.6 v1.31.14
      Kernel 5.14.0-570.86.1.el9_6 5.14.0-427.110.1.el9_4
      RHCOS 9.6 418.94
      Boot ID d7aa7795... 2e35c9b5...

      VM Boundaries

      Check Result
      VirtLauncher pods 3 Running in clusters-16bc689bd9968cc28001
      VMIs 3 Running
      Boot IDs different PASS — separate kernel instances confirmed
      Kernel versions different PASS — 4.20 vs 4.18 kernels

      Key Findings

      Kernel isolation confirmed: Different boot IDs prove management and hosted clusters run separate kernel instances, satisfying ANSSI BP-028 requirements.

      Version skew working: Management uses kernel 5.14.0-570 (RHEL 9.6) vs Hosted uses 5.14.0-427 (RHEL 9.4), confirming the hosted cluster runs a different OCP version.

      VM-based isolation: 3 VirtLauncher pods and 3 VMIs confirm hosted cluster nodes run inside KubeVirt VMs.

      Bug Found & Fixed During Testing

      The hosted cluster was initially created with OCP 4.20 instead of 4.18 due to incorrect release image propagation:

      • Root cause: The create script (hypershift-kubevirt-create-commands.sh line 98) uses HYPERSHIFT_HC_RELEASE_IMAGE → fallback to RELEASE_IMAGE_LATEST. The CI config only set HOSTEDCLUSTER_RELEASE_IMAGE_LATEST which is not used by the script directly (only via support_np_skew() which requires MCE).
      • Fix: Added RELEASE_IMAGE_LATEST: release:latest-4-18 as a dependency override in the CI config.

      Files

      • ci-operator/step-registry/hypershift/kubevirt/check-kernel-isolation/hypershift-kubevirt-check-kernel-isolation-commands.sh — test script
      • ci-operator/step-registry/hypershift/kubevirt/check-kernel-isolation/hypershift-kubevirt-check-kernel-isolation-ref.yaml — step reference
      • ci-operator/step-registry/hypershift/kubevirt/baremetalds/conformance-calico-version-skew/hypershift-kubevirt-baremetalds-conformance-calico-version-skew-workflow.yaml — workflow
      • ci-operator/config/openshift/hypershift/openshift-hypershift-release-4.20__periodics.yaml — CI job config

      Acceptance Criteria

      • Hosted cluster created on KubeVirt with version skew (4.20 mgmt + 4.18 hosted)
      • VirtualMachineInstances confirmed running (3 VMIs)
      • Different boot IDs between management and hosted clusters
      • Different kernel versions confirming version skew
      • VirtLauncher pods running (3 pods)
      • Automated CI test implemented as periodic Prow job
      • Test results documented

      References

              wk2019 Ke Wang
              wk2019 Ke Wang
              None
              Ke Wang Ke Wang
              None
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Created:
                Updated: