Migrate to Containers を使用して Linux VM を移行する

このクイックスタートでは、Compute Engine 仮想マシン(VM)を作成し、Migrate to Containers を使用して VM を Google Kubernetes Engine(GKE)に移行します。

始める前に

  1. Google Cloud コンソールのプロジェクト セレクタ ページで、Google Cloud プロジェクトを選択または作成作成します。

    プロジェクト セレクタに移動

  2. Google Cloud プロジェクトの課金が有効になっていることを確認します。プロジェクトで課金が有効になっているかどうかを確認する

  3. Compute Engine API を有効にします。

    Compute Engine API を有効にする

  4. GKE API を有効にします。

    GKE API を有効にする

  5. このガイドのコマンドラインの例を使用するには、次のことを行います。

    1. Google Cloud CLI の最新バージョンをインストールするか、最新バージョンに更新します。
    2. デフォルトのリージョンとゾーンを設定します。

ウェブサーバーを使用して Compute Engine VM を作成する

このセクションでは、「Hello World!」というウェブページを提供する簡単な Compute Engine VM を作成する方法を説明します。このページは、移行完了後のテストで使用します。

  1. Google Cloud コンソールで、Shell をアクティブにするボタンCloud Shell をアクティブにする」をクリックします。

    Google Cloud コンソールに移動

  2. VM を作成するには、次のコマンドを実行します。

    gcloud compute instances create quickstart-instance \
      --zone=us-central1-a --machine-type=e2-standard-2 \
      --subnet=default --scopes="cloud-platform" \
      --tags=http-server,https-server --image=ubuntu-minimal-1604-xenial-v20210119a \
      --image-project=ubuntu-os-cloud --boot-disk-size=10GB --boot-disk-type=pd-standard \
      --boot-disk-device-name=quickstart-instance
    
  3. HTTP 経由でインスタンスへのリクエストを許可するファイアウォール ルールを作成するには、次のコマンドを実行します。

    gcloud compute firewall-rules create default-allow-http \
     --direction=INGRESS --priority=1000 --network=default --action=ALLOW \
     --rules=tcp:80 --source-ranges=0.0.0.0/0 --target-tags=http-server
    
  4. Google Cloud コンソールで [VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  5. VM quickstart-instance に接続するには、VM の行を探して [SSH] をクリックします。

    新しいタブで接続が確立されます。

  6. apache2 パッケージをインストールするには、新しい quickstart-instance コマンドのタブで次のコマンドを実行します。

    sudo apt-get update && sudo apt-get install apache2 -y
    
  7. Apache をインストールすると、オペレーティング システムにより Apache サーバーが自動的に起動します。

  8. 同じタブで、Apache ウェブサーバーのデフォルトのウェブページを新しいページで上書きするには、次のコマンドを実行します。

    echo '<!doctype html><html><body><h1>Hello World!</h1></body></html>' | sudo tee /var/www/html/index.html
    
  9. [VM インスタンス] ページに戻り、quickstart-instance に表示されている外部 IP アドレスをコピーします。

  10. VM の IP アドレスをブラウザのアドレスバーに貼り付けます。http:// の接頭辞を付けます。

    これで「Hello World」のページが表示されます。

  11. [VM インスタンス] ページで、quickstart-instance の行の左側にあるチェックボックスをオンにします。

  12. VM を停止するには、ページの上部にある [停止] をクリックします。

    移行を開始する前に VM を停止する必要があります。移行の完了後に、再度起動できます。

処理クラスタを作成する

このセクションでは、Google Cloud で処理クラスタとして使用する GKE クラスタを作成します。

  1. Google Cloud コンソールで、Shell をアクティブにするボタンCloud Shell をアクティブにする」をクリックします。

    Google Cloud コンソールに移動

  2. 処理クラスタとして使用する新しい Kubernetes クラスタを作成するには、次のコマンドを実行します。

    gcloud container clusters create migration-processing \
     --zone=us-central1-a --machine-type e2-standard-4 \
     --image-type ubuntu_containerd --num-nodes 1 \
     --enable-stackdriver-kubernetes \
     --subnetwork "projects/PROJECT_ID/regions/us-central1/subnetworks/default"
    

    PROJECT_ID は、実際のプロジェクト ID に置き換えます。

    クラスタの作成が完了するまで数分待ちます。

Migrate to Containers をインストールする

  1. Google Cloud コンソールで、[Migrate to Containers] ページに移動します。

    [Migrate to Containers] に移動

  2. [処理中のクラスタ] タブをクリックし、[処理クラスタを追加] をクリックします。

  3. [ワークロード OS の種類] リストで [Linux] を選択し、[次へ] をクリックします。

  4. [クラスタを選択] リストから migration-processing を選択し、[次へ] をクリックします。

  5. [構成] セクションでデフォルト値をそのままにして、[次へ] をクリックします。

  6. [サービス アカウント] セクションで、[サービス アカウントを新規作成] を選択します。

  7. [サービス アカウント名] フィールドに「quickstart-sa1」と入力します。

  8. [続行]、[デプロイ] の順にクリックします。

    処理クラスタの設定が完了するまで数分かかります。

Compute Engine VM を移行する

以降のセクションでは、移行元を Compute Engine VM として指定します。このステップにより、移行元の仕様が移行計画に追加されます。次に、移行の詳細を含む移行計画を作成し、それを使用して VM を移行します。

移行元を指定する

  1. Google Cloud コンソールで、[Migrate to Containers] ページに移動します。

    [Migrate to Containers] に移動

  2. [ソースを追加] をクリックします。

  3. [処理クラスタを選択] リストで [migration-processing] を選択し、[次へ] をクリックします。

  4. [名前] フィールドに「quickstart-source」と入力します。

  5. [ソースの種類] は Compute Engine のままにして、[次へ] をクリックします。

  6. [プロジェクト] フィールドに、移行する VM を含むプロジェクトのプロジェクト ID を指定します。

  7. [サービス アカウントを新規作成] を選択して、移行元として Compute Engine を使用できるようにするアカウントを作成します。

  8. [サービス アカウント名] フィールドに「quickstart-sa2」と入力します。

  9. [続行]、[ソースを追加] の順にクリックします。

移行計画を作成する

  1. Google Cloud コンソールで、[Migrate to Containers] ページに移動します。

    [Migrate to Containers] に移動

  2. [移行を作成] をクリックします。

  3. [移行名] フィールドに「quickstart-migration」と入力します。

  4. [ソースを選択] リストから quickstart-source を選択します。

  5. [ワークロード タイプ] リストから [Linux system container] を選択します。

  6. [インスタンス名] フィールドに「quickstart-instance」と入力します。

  7. [移行を作成] をクリックします。

    移行が [移行] テーブルに追加されます。ただし、移行の作成が完了するまでに数分かかることがあります。完了すると、[移行] テーブルの [ステータス] 列が更新されます。

移行したワークロードをデプロイする

移行用の VM の処理の一部としてターゲット コンテナ アーティファクトを生成するには、次の操作を行います。

  1. Google Cloud コンソールで、[Migrate to Containers] ページに移動します。

    [Migrate to Containers] に移動

  2. quickstart-migration の [次のステップ] 列で、[オプション] - [アーティファクトの生成] を選択します。アーティファクトが生成されると、移行の [ステータス] 列が更新されます。

  3. 移行が完了したら、Shell をアクティブにするボタンCloud Shell をアクティブにする」をクリックします。

  4. 生成された YAML アーティファクトをダウンロードするには、次のコマンドを実行します。

    migctl migration get-artifacts quickstart-migration
    

    このコマンドを実行すると、移行中に生成された次のファイルがダウンロードされます。

    • deployment_spec.yaml - ワークロードを構成する YAML ファイル。
    • Dockerfile - 移行された VM のイメージのビルドに使用される Dockerfile。
    • migration.yaml - 移行計画のコピー。
    • blocklist.yaml - 移行計画の設定に基づいて無効にするコンテナ サービスのリスト。
  5. Cloud Shell エディタを開くには、[エディタを開く] をクリックします。

  6. deployment_spec.yaml ファイルを開き、quickstart-instance という名前の Service オブジェクトを見つけます。次のように表示されます。

    apiVersion: v1
    kind: Service
    metadata:
      creationTimestamp: null
      name: quickstart-instance
    spec:
      clusterIP: None
      selector:
        app: quickstart-instance
      type: ClusterIP
    status:
      loadBalancer: {}
    
    ---
    
  7. 上記の Service 定義の下に、青色でハイライト表示された Service 定義を貼り付けます。これにより、HTTP 経由でウェブサーバーにアクセスできるようにポート 80 を公開します。

    apiVersion: v1
    kind: Service
    metadata:
      creationTimestamp: null
      name: quickstart-instance
    spec:
      clusterIP: None
      selector:
        app: quickstart-instance
      type: ClusterIP
    status:
      loadBalancer: {}
    
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: hello-service
    spec:
      selector:
        app: quickstart-instance
      ports:
        - protocol: TCP
          port: 80
          targetPort: 80
      type: LoadBalancer
    
    ---
    

    必要に応じて、ファイル内の Service 定義のインデントを修正します。

  8. ファイルを保存します。

  9. [ターミナルを開く] をクリックします。

  10. 移行された VM をデプロイするには、次のコマンドを実行します。

    skaffold run -d eu.gcr.io/PROJECT_ID
    

    PROJECT_ID は、実際のプロジェクト ID に置き換えます。

  11. 移行された VM の外部 IP アドレスを取得するには、次のコマンドを実行します。

    kubectl get service hello-service
    

    ウェブサーバーの準備が整うと、追加した hello-service の外部 IP アドレスが表示されます。

    kubectl get service hello-service
    NAME            TYPE           CLUSTER-IP      EXTERNAL-IP    PORT(S)        AGE
    hello-service   LoadBalancer   10.23.241.124   ##.##.###.##   80:32611/TCP   5m4s
    
  12. 移行が成功したかどうかを確認するには、新しいブラウザタブを開き、外部 IP アドレスのウェブページにアクセスします(HTTPS ではなく HTTP を使用してください)。

    http://##.##.###.##
    

    画面に「Hello World!」というテキストが表示されている場合、VM の移行は成功しています。

    移行したワークロードにアクセスできない場合は、既知の問題のトラブルシューティングをご覧ください。

クリーンアップ

このページで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、次の操作を行います。

移行を削除する

  1. Google Cloud コンソールで、[Migrate to Containers] ページに移動します。

    [Migrate to Containers] に移動

  2. [移行] タブをクリックして、使用可能な移行を含むテーブルを表示します。
  3. quickstart-migration で、テーブルの右側にある [削除] をクリックし、[移行を削除] を選択します。

移行元を削除する

  1. Google Cloud コンソールで、[Migrate to Containers] ページに移動します。

    [Migrate to Containers] に移動

  2. [ソースを管理] をクリックして、使用可能なソースのリストを表示します。
  3. quickstart-source で、テーブルの右側にある [削除] をクリックします。
  4. 表示されたテキストを入力して削除を確認し、もう一度 [削除] をクリックします。

GKE クラスタを削除する

  1. Google Cloud コンソールで、Google Kubernetes Engine のページに移動します。

    Google Kubernetes Engine に移動

  2. [migration-processing] を選択して、[削除] をクリックします。
  3. 確認のメッセージが表示されたら、もう一度 [削除] をクリックします。

サービス アカウントを削除する

  1. Google Cloud コンソールで [サービス アカウント] ページに移動します。

    [サービス アカウント] に移動

  2. サービス アカウントを作成したプロジェクトを選択します。
  3. quickstart-sa1quickstart-sa2 を選択し、[削除] をクリックします。
  4. 確認のメッセージが表示されたら、もう一度 [削除] をクリックします。

VM を削除する

  1. Google Cloud コンソールで [VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. quickstart-instance という名前をクリックします。
  3. インスタンスの詳細ページの上部にある [削除] をクリックします。

次のステップ