Chapter 2. OpenShift Virtualization architecture Learn about OpenShift Virtualization architecture. 2.1. How OpenShift Virtualization architecture works After you install OpenShift Virtualization, the Operator Lifecycle Manager (OLM) deploys operator pods for each component of OpenShift Virtualization: Compute: virt-operator Storage: cdi-operator Network: cluster-network-addons-operator Scaling: ssp-operator Templating: tekton-tasks-operator OLM also deploys the hyperconverged-cluster-operator pod, which is responsible for the deployment, configuration, and life cycle of other components, and several helper pods: hco-webhook , and hyperconverged-cluster-cli-download . After all operator pods are successfully deployed, you should create the HyperConverged custom resource (CR). The configurations set in the HyperConverged CR serve as the single source of truth and the entrypoint for OpenShift Virtualization, and guide the behavior of the CRs. The HyperConverged CR creates corresponding CRs for the operators of all other components within its reconciliation loop. Each operator then creates resources such as daemon sets, config maps, and additional components for the OpenShift Virtualization control plane. For example, when the hco-operator creates the KubeVirt CR, the virt-operator reconciles it and create additional resources such as virt-controller , virt-handler , and virt-api . The OLM deploys the hostpath-provisioner-operator , but it is not functional until you create a hostpath provisioner (HPP) CR. Additional resources HyperConverged CR configuration Virtctl client commands 2.2. About the hco-operator The hco-operator (HCO) provides a single entry point for deploying and managing OpenShift Virtualization and several helper operators with opinionated defaults. It also creates custom resources (CRs) for those operators. Table 2.1. hco-operator components Component Description deployment/hco-webhook Validates the HyperConverged custom resource contents. deployment/hyperconverged-cluster-cli-download Provides the virtctl tool binaries to the cluster so that you can download them directly from the cluster. KubeVirt/kubevirt-kubevirt-hyperconverged Contains all operators, CRs, and objects needed by OpenShift Virtualization. SSP/ssp-kubevirt-hyperconverged An SSP CR. This is automatically created by the HCO. CDI/cdi-kubevirt-hyperconverged A CDI CR. This is automatically created by the HCO. NetworkAddonsConfig/cluster A CR that instructs and is managed by the cluster-network-addons-operator . 2.3. About the cdi-operator The cdi-operator manages the Containerized Data Importer (CDI), and its related resources, which imports a virtual machine (VM) image into a persistent volume claim (PVC) by using a data volume. Table 2.2. cdi-operator components Component Description deployment/cdi-apiserver Manages the authorization to upload VM disks into PVCs by issuing secure upload tokens. deployment/cdi-uploadproxy Directs external disk upload traffic to the appropriate upload server pod so that it can be written to the correct PVC. Requires a valid upload token. pod/cdi-importer Helper pod that imports a virtual machine image into a PVC when creating a data volume. 2.4. About the cluster-network-addons-operator The cluster-network-addons-operator deploys networking components on a cluster and manages the related resources for extended network functionality. Table 2.3. cluster-network-addons-operator components Component Description deployment/kubemacpool-cert-manager Manages TLS certificates of Kubemacpool's webhooks. deployment/kubemacpool-mac-controller-manager Provides a MAC address pooling service for virtual machine (VM) network interface cards (NICs). daemonset/bridge-marker Marks network bridges available on nodes as node resources. daemonset/kube-cni-linux-bridge-plugin Installs CNI plugins on cluster nodes, enabling the attachment of VMs to Linux bridges through network attachment definitions. 2.5. About the hostpath-provisioner-operator The hostpath-provisioner-operator deploys and manages the multi-node hostpath provisioner (HPP) and related resources. Table 2.4. hostpath-provisioner-operator components Component Description deployment/hpp-pool-hpp-csi-pvc-block-<worker_node_name> Provides a worker for each node where the hostpath provisioner (HPP) is designated to run. The pods mount the specified backing storage on the node. daemonset/hostpath-provisioner-csi Implements the Container Storage Interface (CSI) driver interface of the HPP. daemonset/hostpath-provisioner Implements the legacy driver interface of the HPP. 2.6. About the ssp-operator The ssp-operator deploys the common templates, the related default boot sources, and the template validator. Table 2.5. ssp-operator components Component Description deployment/virt-template-validator Checks vm.kubevirt.io/validations annotations on virtual machines created from templates, and rejects them if they are invalid. 2.7. About the tekton-tasks-operator The tekton-tasks-operator deploys example pipelines showing the usage of OpenShift Pipelines for VMs. It also deploys additional OpenShift Pipeline tasks that allow users to create VMs from templates, copy and modify templates, and create data volumes. Table 2.6. tekton-tasks-operator components Component Description deployment/create-vm-from-template Creates a VM from a template. deployment/copy-template Copies a VM template. deployment/modify-vm-template Creates or removes a VM template. deployment/modify-data-object Creates or removes data volumes or data sources. deployment/cleanup-vm Runs a script or a command on a VM, then stops or deletes the VM afterward. deployment/disk-virt-customize Runs a customize script on a target PVC using virt-customize . deployment/disk-virt-sysprep Runs a sysprep script on a target PVC by using virt-sysprep . deployment/wait-for-vmi-status Waits for a specific VMI status, then fails or succeeds according to that status. 2.8. About the virt-operator The virt-operator deploys, upgrades, and manages OpenShift Virtualization without disrupting current virtual machine (VM) workloads. Table 2.7. virt-operator components Component Description deployment/virt-api HTTP API server that serves as the entry point for all virtualization-related flows. deployment/virt-controller Observes the creation of a new VM instance object and creates a corresponding pod. When the pod is scheduled on a node, virt-controller updates the VM with the node name. daemonset/virt-handler Monitors any changes to a VM and instructs virt-launcher to perform the required operations. This component is node-specific. pod/virt-launcher Contains the VM that was created by the user as implemented by libvirt and qemu .

Commands: