仮想ディスクをインポートする

必要なソフトウェアと構成を備えた仮想ディスク(ゴールデン ディスクまたはゴールデン イメージと呼ばれることもあります)がオンプレミス環境にある場合、そのような仮想ディスクを Distributed Cloud にインポートし、インポートされたイメージを使用して仮想マシンを作成することによって、時間を節約できます。インポート ツールは、RAW と QCOW のイメージ形式をサポートしています。

始める前に

続行する前に、次のものがあることを確認してください。

  • gdcloud CLI がダウンロード、インストール、構成されている。GDC のすべての CLI コマンドは gdcloud または kubectl CLI を使用し、オペレーティング システム(OS)環境が必要です。
  • Kubernetes クラスタへのログイン アクセス権。ログインの CLI 手順に沿って、Kubernetes クラスタにログインします。

権限とアクセス権をリクエストする

このページに記載されているタスクを行うには、プロジェクトの VirtualMachine 管理者ロールが必要です。VM が存在するプロジェクトの名前空間にプロジェクト VirtualMachine 管理者(project-vm-admin)ロールがあることを確認する手順に沿って操作します。

GDC コンソールまたは gdcloud CLI を使用した VM オペレーションの場合は、プロジェクト IAM 管理者に、前の段落に記載されているロールとプロジェクト閲覧者(project-viewer)ロールの割り当てをリクエストします。

仮想ディスクをインポートする

仮想ディスクは、gdcloud CLI または Virtual Machine Manager API を使用してインポートできます。

イメージのインポートに必要な権限を取得するには、組織の IAM 管理者に、プロジェクトに対するプロジェクト VirtualMachine イメージ管理者(project-vm-image-admin)ロールの付与を依頼してください。

gdcloud

gdcloud compute images import コマンドを使用して、起動可能なイメージを作成します。

import コマンドを使用すると、Linux でセキュアシェル(SSH)を使用してインスタンスに接続し、Windows でリモート デスクトップ プロトコル(RDP)を使用してインスタンスに接続するための認証情報を構成するために必要なゲスト環境など、必要なパッケージが必ずディスクに収められます。

Linux では、このコマンドは、インスタンスが GDC で適切に実行されるように、ネットワーク タイム プロトコル(NTP)と cloud-init のパッケージもインストールします。

仮想ディスク ファイルは、ワークステーションから直接インポートできます。インポート ツールは、ファイルをプロジェクトのオブジェクト ストレージ バケットに自動的にアップロードします。

gdcloud compute images import IMAGE_NAME \
  --source-file=SOURCE_FILE \
  --os=IMAGE_OS \
  --timeout=TIMEOUT

次の変数を置き換えます。

  • IMAGE_NAME: 対象イメージの名前。名前は 35 文字以下にする必要があります。
  • SOURCE_FILE: 仮想ディスク ファイル。このファイルはワークステーションのローカル ファイルです。絶対パスまたは相対パスを指定できます。
  • IMAGE_OS: インポートするディスクの OS。
  • TIMEOUT: インポートが「TIMEOUT」で失敗するまでの時間。たとえば、2h を指定すると、プロセスは 2 時間後に失敗します。デフォルトのタイムアウトは 1h です。

アップロード オペレーションには、仮想ディスクのサイズとネットワーク接続の速度に応じて、長時間かかることがあります。インポート オペレーションは、ディスクのサイズによって数十分かかることがあります。

API

API を使用してインポート プロセスを開始する前に、仮想ディスクを vm-images-bucket という名前のオブジェクト ストレージ バケットにアップロードする必要があります。オブジェクト ストレージ バケットを作成するには、プロジェクトのストレージ バケットを作成するをご覧ください。

API を使用して仮想ディスクをインポートする手順は次のとおりです。

  1. Management API サーバーに VirtualMachineImageImport オブジェクトを作成して、イメージのインポート プロセスを開始します。

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
      apply -n PROJECT_ID -f - <<EOF
    apiVersion: virtualmachine.gdc.goog/v1
    kind: VirtualMachineImageImport
    metadata:
      name: IMAGE_NAME
      namespace: PROJECT_ID
    spec:
      source:
        objectStorage:
          bucketRef:
            name: vm-images-bucket
          objectName: SOURCE_FILE
      imageMetadata:
        name: IMAGE_NAME
        operatingSystem: OPERATING_SYSTEM
        minimumDiskSize: DISK_SIZE
    EOF
    

    次の変数を置き換えます。

    変数 説明
    IMAGE_NAME インポートするイメージの名前。名前は 35 文字以下にする必要があります。
    PROJECT_ID イメージをインポートするプロジェクトのプロジェクト ID。
    SOURCE_FILE オブジェクト ストレージへの仮想ディスクのアップロードを含むソースファイルの名前。この値は、vm-images-bucket/ の後のオブジェクト ストレージ パスのセクションです。
    OPERATING_SYSTEM インポートするディスクの OS。
    DISK_SIZE このイメージで作成されるディスクの最小サイズ。元の画像のファイル システム サイズに加えて、少なくとも 20% のバッファを使用することをおすすめします。たとえば、元のファイル システムのサイズが 10Gi の仮想ディスクには、少なくとも 12Gi を使用します。
  2. VirtualMachineImageImport オブジェクトのステータスをクエリして、インポートの進行状況をモニタリングします。

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
      get virtualmachineimageimport --namespace PROJECT_ID \
      IMAGE_NAME -o jsonpath='{.status}'
    

リソースのクリーンアップ

インポート プロセスでは、仮想ディスク ファイルをオブジェクト ストレージにアップロードします。gdcloud CLI を使用する場合、コマンドが成功したかどうかにかかわらず、コマンドが完了するとオブジェクトはクリーンアップされます。コマンドが中断された場合、または API でイメージのインポートが完了した場合、仮想ディスク ファイルは、手動で削除するまで vm-images-bucket という名前のオブジェクト ストレージ バケットに残る可能性があります。

次のステップ

[VM の作成と起動] ページで、イメージを使用する新しい VM インスタンスを作成します。