10.17. OpenShift Pipelines を使用した仮想マシンの管理

Red Hat OpenShift Pipelines は、開発者が独自のコンテナーで CI/CD パイプラインの各ステップを設計および実行できるようにする、Kubernetes ネイティブの CI/CD フレームワークです。

Tekton Tasks Operator (TTO) は、OpenShift Virtualization と OpenShift Pipelines を統合します。TTO には、次のことを可能にするクラスタータスクとサンプルパイプラインが含まれています。

  • 仮想マシン (VM)、永続ボリューム要求 (PVC)、およびデータボリュームの作成と管理
  • 仮想マシンでコマンドを実行する
  • libguestfs ツールを使用してディスクイメージを操作する
重要

Red Hat OpenShift Pipelines を使用した仮想マシンの管理は、テクノロジープレビュー機能のみです。テクノロジープレビュー機能は、Red Hat 製品サポートのサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではない場合があります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。

Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。

10.17.1. 前提条件

10.17.2. Tekton Tasks Operator リソースのデプロイ

Tekton Tasks Operator (TTO) クラスタータスクとサンプルパイプラインは、OpenShift Virtualization のインストール時にデフォルトではデプロイされません。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
    パイプラインが実行される namespace。
    2
    TTO リソースをデプロイするために有効にするフィーチャーゲート。
    注記

    後でフィーチャーゲートを無効にしても、クラスタータスクとサンプルパイプラインは引き続き使用できます。

  3. 変更を保存し、エディターを終了します。

10.17.3. Tekton Tasks Operator によってサポートされる仮想マシンタスク

次の表は、Tekton Tasks Operator の一部として含まれているクラスタータスクを示しています。

表10.3 Tekton Tasks Operator によってサポートされる仮想マシンタスク

タスクDescription

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 インストールイメージ (ISO ファイル) から Windows 10 を新しいデータボリュームにインストールします。インストールプロセスの実行には、カスタムアンサーファイルが使用されます。
Windows 10 カスタマイズパイプライン
このパイプラインは、基本的な Windows 10 インストールのデータボリュームを複製し、Microsoft SQL Server Express をインストールしてカスタマイズし、新しいイメージとテンプレートを作成します。

10.17.4.1. Web コンソールを使用してサンプルパイプラインを実行する

サンプルパイプラインは、Web コンソールの Pipelines メニューから実行できます。

手順

  1. サイドメニューの PipelinesPipelines をクリックします。
  2. パイプラインを選択して、Pipeline details ページを開きます。
  3. Actions リストから、Start を選択します。Start Pipeline ダイアログが表示されます。
  4. パラメーターのデフォルト値を保持し、Start をクリックしてパイプラインを実行します。Details タブでは、各タスクの進行状況が追跡され、パイプラインのステータスが表示されます。

10.17.4.2. CLI を使用してサンプルパイプラインを実行する

PipelineRun リソースを使用して、サンプルパイプラインを実行します。PipelineRun オブジェクトは、パイプラインの実行中のインスタンスです。これは、クラスター上の特定の入力、出力、および実行パラメーターで実行されるパイプラインをインスタンス化します。また、パイプライン内のタスクごとに 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 を指定します。製品の言語は英語 (米国) でなければなりません。
  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. 関連情報