10.17. 使用 OpenShift Pipelines 管理虚拟机

Red Hat OpenShift Pipelines 是一个 Kubernetes 原生 CI/CD 框架,允许开发人员在其自己的容器中设计和运行 CI/CD 管道的每个步骤。

Tekton Tasks Operator (TTO) 将 OpenShift Virtualization 与 OpenShift Pipelines 集成。TTO 包含集群任务和示例管道,允许您:

  • 创建和管理虚拟机 (VM)、持久性卷声明 (PVC) 和数据卷
  • 在虚拟机中运行命令
  • 使用 libguestfs 工具操作磁盘镜像
重要

使用 Red Hat OpenShift Pipelines 管理虚拟机只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

10.17.1. 先决条件

  • 您可以使用 cluster-admin 权限访问 OpenShift Container Platform 集群。
  • 已安装 OpenShift CLI(oc)。
  • 安装 OpenShift Pipelines

10.17.2. 部署 Tekton Tasks Operator 资源

安装 OpenShift Virtualization 时,默认不会部署 Tekton Tasks Operator (TTO) 集群任务和示例管道。要部署 TTO 资源,请在 HyperConverged 自定义资源 (CR) 中启用 deployTektonTaskResources 功能门。

步骤

  1. 运行以下命令,在默认编辑器中打开 HyperConverged CR:

    $ oc edit hco -n openshift-cnv kubevirt-hyperconverged
  2. spec.featureGates.deployTektonTaskResources 字段设置为 true

    apiVersion: hco.kubevirt.io/v1beta1
    kind: HyperConverged
    metadata:
      name: kubevirt-hyperconverged
      namespace: kubevirt-hyperconverged
    spec:
      tektonPipelinesNamespace: <user_namespace> 1
      featureGates:
        deployTektonTaskResources: true 2
    #...
    1
    运行管道的命名空间。
    2
    要启用的功能门来部署 TTO 资源。
    注意

    即使稍后禁用功能门,集群任务和示例管道仍可用。

  3. 保存更改并退出编辑器。

10.17.3. Tekton Tasks Operator 支持的虚拟机任务

下表显示了作为 Tekton Tasks Operator 一部分的集群任务。

表 10.3. Tekton Tasks Operator 支持的虚拟机任务

任务描述

create-vm-from-template

从模板创建虚拟机。

copy-template

复制虚拟机模板。

modify-vm-template

修改虚拟机模板。

modify-data-object

创建和删除数据卷或数据源。

cleanup-vm

在虚拟机上运行脚本或命令,并在之后停止或删除虚拟机。

disk-virt-customize

使用 virt-customize 工具在目标 PVC 上运行自定义脚本。

disk-virt-sysprep

使用 virt-sysprep 工具在目标 PVC 上运行 sysprep 脚本。

wait-for-vmi-status

等待虚拟机实例的特定状态,并根据状态失败或成功。

10.17.4. 管道示例

Tekton Tasks Operator 包含以下 Pipeline 清单示例。您可以使用 Web 控制台或 CLI 运行示例管道。

Windows 10 安装程序管道
此管道将 Windows 10 安装到来自 Windows 安装镜像(ISO 文件) 的新数据卷中。自定义应答文件用于运行安装过程。
Windows 10 自定义管道
此管道克隆基本 Windows 10 安装的数据卷,通过安装 Microsoft SQL Server Express 进行自定义,然后创建新镜像和模板。

10.17.4.1. 使用 Web 控制台运行示例管道

您可以从 web 控制台中的 Pipelines 菜单运行示例管道。

流程

  1. 在侧边菜单中点 PipelinesPipelines
  2. 选择一个管道以打开 Pipeline 详情页面。
  3. Actions 列表中,选择 Start。此时会显示 Start Pipeline 对话框。
  4. 保留参数的默认值,然后点 Start 运行管道。Details 选项卡跟踪每个任务的进度,并显示管道状态。

10.17.4.2. 使用 CLI 运行示例管道

使用 PipelineRun 资源来运行示例管道。PipelineRun 对象是管道的运行实例。它使用集群上的特定输入、输出和执行参数来实例化 Pipeline 执行。它还为管道中的每个任务创建一个 TaskRun 对象。

流程

  1. 要运行 Windows 10 安装程序管道,请创建以下 PipelineRun 清单:

    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
    指定 Windows 10 64 位 ISO 文件的 URL。产品语言必须是 English (United States)。
  2. 应用 PipelineRun 清单:

    $ oc apply -f windows10-installer-run.yaml
  3. 要运行 Windows 10 自定义管道,请创建以下 PipelineRun 清单:

    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: {}
  4. 应用 PipelineRun 清单:

    $ oc apply -f windows10-customize-run.yaml

10.17.5. 其他资源