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

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

始める前に

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

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

IAM ロールをリクエストする

プロジェクトに対する次のロールをリクエストするには、プロジェクト IAM 管理者にお問い合わせください。

  • 仮想マシン プロジェクト管理者(project-vm-admin): プロジェクト Namespace で VM を作成、変更、一覧表示、削除します。

  • プロジェクト閲覧者(project-viewer): プロジェクト名前空間内のすべてのリソースを表示します。

  • 仮想マシン イメージ プロジェクト管理者(project-vm-image-admin): プロジェクト Namespace で VM イメージを作成、一覧表示、削除します。

すべての VM ロールは、VM が存在するプロジェクトの名前空間にバインドする必要があります。手順に沿ってアクセス権を確認します。

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

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

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

gdcloud

import コマンドは、GDC 提供のイメージに、セキュアシェル(SSH)とリモート デスクトップ プロトコル(RDP)を使用してインスタンスに接続するための認証情報を構成するために必要なパッケージがあることを確認します。これには、ゲスト環境用のパッケージが含まれます。

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

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

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 を使用して仮想ディスクをインポートする手順は次のとおりです。

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

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
      -n PROJECT_ID \
      apply -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: IMAGE_OS
        minimumDiskSize: DISK_SIZE
    EOF
    

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

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

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
      -n PROJECT_ID \
      get virtualmachineimageimport.virtualmachine.gdc.goog IMAGE_NAME \
      -o jsonpath='{.status}'
    

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

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

次のステップ

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