Managing virtual machines with OpenShift Pipelines
Red Hat OpenShift Pipelines is a Kubernetes-native CI/CD framework that allows developers to design and run each step of the CI/CD pipeline in its own container.
The Tekton Tasks Operator (TTO) integrates OKD Virtualization with OpenShift Pipelines. TTO includes cluster tasks and example pipelines that allow you to:
Create and manage virtual machines (VMs), persistent volume claims (PVCs), and data volumes
Run commands in VMs
Manipulate disk images with
libguestfs
tools
Managing virtual machines with Red Hat OpenShift Pipelines is a Technology Preview feature only. Technology Preview features are not supported with Red Hat production service level agreements (SLAs) and might not be functionally complete. Red Hat does not recommend using them in production. These features provide early access to upcoming product features, enabling customers to test functionality and provide feedback during the development process. For more information about the support scope of Red Hat Technology Preview features, see Technology Preview Features Support Scope. |
Prerequisites
You have access to an OKD cluster with
cluster-admin
permissions.You have installed the OpenShift CLI (
oc
).You have installed OpenShift Pipelines.
Deploying the Tekton Tasks Operator resources
The Tekton Tasks Operator (TTO) cluster tasks and example pipelines are not deployed by default when you install OKD Virtualization. To deploy TTO resources, enable the deployTektonTaskResources
feature gate in the HyperConverged
custom resource (CR).
Procedure
Open the
HyperConverged
CR in your default editor by running the following command:$ oc edit hco -n openshift-cnv kubevirt-hyperconverged
Set the
spec.featureGates.deployTektonTaskResources
field totrue
.apiVersion: hco.kubevirt.io/v1beta1
kind: HyperConverged
metadata:
name: kubevirt-hyperconverged
namespace: kubevirt-hyperconverged
spec:
tektonPipelinesNamespace: <user_namespace> (1)
featureGates:
deployTektonTaskResources: true (2)
# ...
1 The namespace where the pipelines are to be run. 2 The feature gate to be enabled to deploy TTO resources. The cluster tasks and example pipelines remain available even if you disable the feature gate later.
Save your changes and exit the editor.
Virtual machine tasks supported by the Tekton Tasks Operator
The following table shows the cluster tasks that are included as part of the Tekton Tasks Operator.
Task | Description |
---|---|
| Create a virtual machine from a template. |
| Copy a virtual machine template. |
| Modify a virtual machine template. |
| Create or delete data volumes or data sources. |
| Run a script or a command in a virtual machine and stop or delete the virtual machine afterward. |
| Use the |
| Use the |
| Wait for a specific status of a virtual machine instance and fail or succeed based on the status. |
Example pipelines
The Tekton Tasks Operator includes the following example Pipeline
manifests. You can run the example pipelines by using the web console or CLI.
You might have to run more than one installer pipline if you need multiple versions of Windows. If you run more than one installer pipeline, each one requires unique parameters, such as the autounattend
config map and base image name. For example, if you need Windows 10 and Windows 11 or Windows Server 2022 images, you have to run both the Windows efi installer pipeline and the Windows bios installer pipeline. However, if you need Windows 11 and Windows Server 2022 images, you have to run only the Windows efi installer pipeline.
Windows EFI installer pipeline
This pipeline installs Windows 11 or Windows Server 2022 into a new data volume from a Windows installation image (ISO file). A custom answer file is used to run the installation process.
Windows BIOS installer pipeline
This pipeline installs Windows 10 into a new data volume from a Windows installation image, also called an ISO file. A custom answer file is used to run the installation process.
Windows customize pipeline
This pipeline clones the data volume of a basic Windows 10, 11, or Windows Server 2022 installation, customizes it by installing Microsoft SQL Server Express or Microsoft Visual Studio Code, and then creates a new image and template.
Running the example pipelines using the web console
You can run the example pipelines from the Pipelines menu in the web console.
Procedure
Click Pipelines → Pipelines in the side menu.
Select a pipeline to open the Pipeline details page.
From the Actions list, select Start. The Start Pipeline dialog is displayed.
Keep the default values for the parameters and then click Start to run the pipeline. The Details tab tracks the progress of each task and displays the pipeline status.
Running the example pipelines using the CLI
Use a PipelineRun
resource to run the example pipelines. A PipelineRun
object is the running instance of a pipeline. It instantiates a pipeline for execution with specific inputs, outputs, and execution parameters on a cluster. It also creates a TaskRun
object for each task in the pipeline.
Procedure
To run the Windows 10 installer pipeline, create the following
PipelineRun
manifest:apiVersion: tekton.dev/v1beta1
kind: PipelineRun
metadata:
generateName: windows10-installer-run-
labels:
pipelinerun: windows10-installer-run
spec:
params:
- name: winImageDownloadURL
value: <link_to_windows_10_iso> (1)
pipelineRef:
name: windows10-installer
taskRunSpecs:
- pipelineTaskName: copy-template
taskServiceAccountName: copy-template-task
- pipelineTaskName: modify-vm-template
taskServiceAccountName: modify-vm-template-task
- pipelineTaskName: create-vm-from-template
taskServiceAccountName: create-vm-from-template-task
- pipelineTaskName: wait-for-vmi-status
taskServiceAccountName: wait-for-vmi-status-task
- pipelineTaskName: create-base-dv
taskServiceAccountName: modify-data-object-task
- pipelineTaskName: cleanup-vm
taskServiceAccountName: cleanup-vm-task
status: {}
1 Specify the URL for the Windows 10 64-bit ISO file. The product language must be English (United States). Apply the
PipelineRun
manifest:$ oc apply -f windows10-installer-run.yaml
To run the Windows 10 customize pipeline, create the following
PipelineRun
manifest:apiVersion: tekton.dev/v1beta1
kind: PipelineRun
metadata:
generateName: windows10-customize-run-
labels:
pipelinerun: windows10-customize-run
spec:
params:
- name: allowReplaceGoldenTemplate
value: true
- name: allowReplaceCustomizationTemplate
value: true
pipelineRef:
name: windows10-customize
taskRunSpecs:
- pipelineTaskName: copy-template-customize
taskServiceAccountName: copy-template-task
- pipelineTaskName: modify-vm-template-customize
taskServiceAccountName: modify-vm-template-task
- pipelineTaskName: create-vm-from-template
taskServiceAccountName: create-vm-from-template-task
- pipelineTaskName: wait-for-vmi-status
taskServiceAccountName: wait-for-vmi-status-task
- pipelineTaskName: create-base-dv
taskServiceAccountName: modify-data-object-task
- pipelineTaskName: cleanup-vm
taskServiceAccountName: cleanup-vm-task
- pipelineTaskName: copy-template-golden
taskServiceAccountName: copy-template-task
- pipelineTaskName: modify-vm-template-golden
taskServiceAccountName: modify-vm-template-task
status: {}
Apply the
PipelineRun
manifest:$ oc apply -f windows10-customize-run.yaml