diff --git a/_topic_maps/_topic_map.yml b/_topic_maps/_topic_map.yml index 29da0acb8a..4ce00a3729 100644 --- a/_topic_maps/_topic_map.yml +++ b/_topic_maps/_topic_map.yml @@ -3126,6 +3126,8 @@ Distros: openshift-enterprise,openshift-origin Topics: - Name: About OpenShift Virtualization File: about-virt +- Name: OpenShift Virtualization architecture + File: virt-architecture Distros: openshift-enterprise - Name: About OKD Virtualization File: about-virt diff --git a/images/cnv_components_cdi-operator.png b/images/cnv_components_cdi-operator.png new file mode 100644 index 0000000000..26e52340e4 Binary files /dev/null and b/images/cnv_components_cdi-operator.png differ diff --git a/images/cnv_components_cluster-network-addons-operator.png b/images/cnv_components_cluster-network-addons-operator.png new file mode 100644 index 0000000000..ffd3e871fc Binary files /dev/null and b/images/cnv_components_cluster-network-addons-operator.png differ diff --git a/images/cnv_components_hco-operator.png b/images/cnv_components_hco-operator.png new file mode 100644 index 0000000000..36adf5bb9e Binary files /dev/null and b/images/cnv_components_hco-operator.png differ diff --git a/images/cnv_components_hpp-operator.png b/images/cnv_components_hpp-operator.png new file mode 100644 index 0000000000..57f9a4ada4 Binary files /dev/null and b/images/cnv_components_hpp-operator.png differ diff --git a/images/cnv_components_main.png b/images/cnv_components_main.png new file mode 100644 index 0000000000..45577eb8a5 Binary files /dev/null and b/images/cnv_components_main.png differ diff --git a/images/cnv_components_ssp-operator.png b/images/cnv_components_ssp-operator.png new file mode 100644 index 0000000000..68166b451d Binary files /dev/null and b/images/cnv_components_ssp-operator.png differ diff --git a/images/cnv_components_tekton-tasks-operator.png b/images/cnv_components_tekton-tasks-operator.png new file mode 100644 index 0000000000..680e601724 Binary files /dev/null and b/images/cnv_components_tekton-tasks-operator.png differ diff --git a/images/cnv_components_virt-operator.png b/images/cnv_components_virt-operator.png new file mode 100644 index 0000000000..844fd378c8 Binary files /dev/null and b/images/cnv_components_virt-operator.png differ diff --git a/modules/virt-about-cdi-operator.adoc b/modules/virt-about-cdi-operator.adoc new file mode 100644 index 0000000000..c692fb90a0 --- /dev/null +++ b/modules/virt-about-cdi-operator.adoc @@ -0,0 +1,26 @@ +// Module included in the following assemblies: +// +// * virt/virt-architecture.adoc + +:_content-type: CONCEPT +[id="virt-about-cdi-operator_{context}"] += 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. + +image::cnv_components_cdi-operator.png[cdi-operator components] + +.cdi-operator components +[cols="1,1"] +|=== +|*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. +|=== diff --git a/modules/virt-about-cluster-network-addons-operator.adoc b/modules/virt-about-cluster-network-addons-operator.adoc new file mode 100644 index 0000000000..9f1942d3f9 --- /dev/null +++ b/modules/virt-about-cluster-network-addons-operator.adoc @@ -0,0 +1,29 @@ +// Module included in the following assemblies: +// +// * virt/virt-architecture.adoc + +:_content-type: CONCEPT +[id="virt-about-cluster-network-addons-operator_{context}"] += 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. + +image::cnv_components_cluster-network-addons-operator.png[cluster-network-addons-operator components] + +.cluster-network-addons-operator components +[cols="1,1"] +|=== +|*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. +|=== diff --git a/modules/virt-about-hco-operator.adoc b/modules/virt-about-hco-operator.adoc new file mode 100644 index 0000000000..5e599a5ece --- /dev/null +++ b/modules/virt-about-hco-operator.adoc @@ -0,0 +1,35 @@ +// Module included in the following assemblies: +// +// * virt/virt-architecture.adoc + +:_content-type: CONCEPT +[id="virt-about-hco-operator_{context}"] += About the hco-operator + +The `hco-operator` (HCO) provides a single entry point for deploying and managing {VirtProductName} and several helper operators with opinionated defaults. It also creates custom resources (CRs) for those operators. + +image::cnv_components_hco-operator.png[hco-operator components] + +.hco-operator components +[cols="1,1"] +|=== +|*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 {VirtProductName}. + +|`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`. +|=== diff --git a/modules/virt-about-hpp-operator.adoc b/modules/virt-about-hpp-operator.adoc new file mode 100644 index 0000000000..eca5b80d5c --- /dev/null +++ b/modules/virt-about-hpp-operator.adoc @@ -0,0 +1,26 @@ +// Module included in the following assemblies: +// +// * virt/virt-architecture.adoc + +:_content-type: CONCEPT +[id="virt-about-hpp-operator_{context}"] += About the hostpath-provisioner-operator + +The `hostpath-provisioner-operator` deploys and manages the multi-node hostpath provisioner (HPP) and related resources. + +image::cnv_components_hpp-operator.png[hpp-operator components] + +.hostpath-provisioner-operator components +[cols="1,1"] +|=== +|*Component* |*Description* + +|`deployment/hpp-pool-hpp-csi-pvc-block-` +|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. +|=== diff --git a/modules/virt-about-ssp-operator.adoc b/modules/virt-about-ssp-operator.adoc new file mode 100644 index 0000000000..cc181ec9e7 --- /dev/null +++ b/modules/virt-about-ssp-operator.adoc @@ -0,0 +1,20 @@ +// Module included in the following assemblies: +// +// * virt/virt-architecture.adoc + +:_content-type: CONCEPT +[id="virt-about-ssp-operator_{context}"] += About the ssp-operator + +The `ssp-operator` deploys the common templates, the related default boot sources, and the template validator. + +image::cnv_components_ssp-operator.png[ssp-operator components] + +.ssp-operator components +[cols="1,1"] +|=== +|*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. +|=== diff --git a/modules/virt-about-tekton-tasks-operator.adoc b/modules/virt-about-tekton-tasks-operator.adoc new file mode 100644 index 0000000000..3fc1f8e4c9 --- /dev/null +++ b/modules/virt-about-tekton-tasks-operator.adoc @@ -0,0 +1,11 @@ +// Module included in the following assemblies: +// +// * virt/virt-architecture.adoc + +:_content-type: CONCEPT +[id="virt-about-tekton-tasks-operator_{context}"] += 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. + +image::cnv_components_tekton-tasks-operator.png[tekton-tasks-operator components] diff --git a/modules/virt-about-virt-operator.adoc b/modules/virt-about-virt-operator.adoc new file mode 100644 index 0000000000..aa3af58fde --- /dev/null +++ b/modules/virt-about-virt-operator.adoc @@ -0,0 +1,29 @@ +// Module included in the following assemblies: +// +// * virt/virt-architecture.adoc + +:_content-type: CONCEPT +[id="virt-about-virt-operator_{context}"] += About the virt-operator + +The `virt-operator` deploys, upgrades, and manages {VirtProductName} without disrupting current virtual machine (VM) workloads. + +image::cnv_components_virt-operator.png[virt-operator components] + +.virt-operator components +[cols="1,1"] +|=== +|*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`. +|=== diff --git a/modules/virt-how-virt-works.adoc b/modules/virt-how-virt-works.adoc new file mode 100644 index 0000000000..65b978962d --- /dev/null +++ b/modules/virt-how-virt-works.adoc @@ -0,0 +1,22 @@ +// Module included in the following assemblies: +// +// * virt/virt-architecture.adoc + +[id="virt-how-virt-works_{context}"] += How {VirtProductName} architecture works + +After you install {VirtProductName}, the Operator Lifecycle Manager (OLM) deploys operator pods for each component of {VirtProductName}: + +* 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 {VirtProductName}, 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 {VirtProductName} 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. diff --git a/virt/virt-architecture.adoc b/virt/virt-architecture.adoc new file mode 100644 index 0000000000..cc30e78d96 --- /dev/null +++ b/virt/virt-architecture.adoc @@ -0,0 +1,35 @@ +:_content-type: ASSEMBLY +include::_attributes/common-attributes.adoc[] +[id="virt-architecture"] += {VirtProductName} architecture +:context: virt-architecture + +toc::[] + +Learn about {VirtProductName} architecture. + +include::modules/virt-how-virt-works.adoc[leveloffset=+1] + +image::cnv_components_main.png[CNV Deployments] + +[role="_additional-resources"] +.Additional resources +* link:https://github.com/kubevirt/hyperconverged-cluster-operator/blob/main/docs/cluster-configuration.md[HyperConverged CR configuration] + +* xref:../virt/virt-using-the-cli-tools.adoc#virt-virtctl-commands_virt-using-the-cli-tools[Virtctl client commands] + +* xref:../virt/virtual_machines/virtual_disks/virt-configuring-local-storage-for-vms.adoc#virt-about-hostpath-provisioner_virt-configuring-local-storage-for-vms[About the hostpath provisioner] + +include::modules/virt-about-hco-operator.adoc[leveloffset=+1] + +include::modules/virt-about-cdi-operator.adoc[leveloffset=+1] + +include::modules/virt-about-cluster-network-addons-operator.adoc[leveloffset=+1] + +include::modules/virt-about-hpp-operator.adoc[leveloffset=+1] + +include::modules/virt-about-ssp-operator.adoc[leveloffset=+1] + +include::modules/virt-about-tekton-tasks-operator.adoc[leveloffset=+1] + +include::modules/virt-about-virt-operator.adoc[leveloffset=+1]