クイックスタート

このクイックスタートでは、シンプルな Compute Engine 仮想マシン(VM)を作成し、Migrate for Anthos を使用して VM をクラウドの Google Kubernetes Engine(GKE)の処理クラスタに移行します。

migctl ツールと Google Cloud Console のいずれかを使用して、クイックスタートの手順を実行できます。migctl は、Google Cloud で Migrate for Anthos 移行環境を設定および管理するためのコマンドライン ツールです。migctlCloud Shell で使用できます。

始める前に

Compute Engine のサポート有効化

  1. Google アカウントにログインします。

    Google アカウントをまだお持ちでない場合は、新しいアカウントを登録します。

  2. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    [プロジェクトの選択] ページに移動

  3. Cloud プロジェクトに対して課金が有効になっていることを確認します。プロジェクトに対して課金が有効になっていることを確認する方法を学習する

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

    API の有効化

GKE の有効化と設定

作業を始める前に、次のことを確認してください。

次のいずれかの方法で gcloud のデフォルトの設定を指定します。

  • gcloud init。デフォルトの設定全般を確認する場合に使用します。
  • gcloud config。プロジェクト ID、ゾーン、リージョンを個別に設定する場合に使用します。

gcloud init の使用

エラー One of [--zone, --region] must be supplied: Please specify location を受信した場合は、このセクションの内容を実施します。

  1. gcloud init を実行して、次の操作を行います。

    gcloud init

    リモート サーバーで SSH を使用している場合は、--console-only フラグを指定して、コマンドがブラウザを起動しないようにします。

    gcloud init --console-only
  2. 手順に従って gcloud を承認し、Google Cloud アカウントを使用します。
  3. 新しい構成を作成するか、既存の構成を選択します。
  4. Google Cloud プロジェクトを選択します。
  5. ゾーンクラスタの場合はデフォルトの Compute Engine ゾーン、リージョン クラスタまたは Autopilot クラスタの場合はデフォルトの Compute Engine リージョンを選択します。

gcloud config の使用

  • デフォルトのプロジェクト ID を設定します。
    gcloud config set project PROJECT_ID
  • ゾーンクラスタを使用する場合は、デフォルトのコンピューティング ゾーンを設定します。
    gcloud config set compute/zone COMPUTE_ZONE
  • Autopilot クラスタまたはリージョン クラスタを使用する場合は、デフォルトのコンピューティング リージョンを設定します。
    gcloud config set compute/region COMPUTE_REGION
  • gcloud を最新バージョンに更新します。
    gcloud components update

ウェブサーバーを使用した VM の作成

次の手順では、「Hello World!」というウェブページを配信するシンプルな Compute Engine VM を作成します。このページで、移行後のテストを行うことができます。

  1. 次のコマンドを実行して、移行する VM インスタンスを作成します。

    このトピックの後の部分で、GKE クラスタを作成するゾーンと同じゾーンを指定します。

    gcloud compute instances create quickstart-instance \
      --project=project-id  --zone=zone --machine-type=n1-standard-1 \
      --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
    
  2. 次のコマンドを実行して、HTTP 経由でインスタンスへのリクエストを許可するファイアウォール ルールを作成します。

    gcloud compute --project=project-id 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
    
  3. Google Cloud Console で、[VM インスタンス] ページに移動します。

    [VM インスタンス] ページに移動

  4. 仮想マシン インスタンスのリストで、作成したインスタンスの行にある [SSH] をクリックします。

    SSH による接続の詳細については、インスタンスへの接続をご覧ください。

  5. クイックスタート インスタンス コマンド ウィンドウで、パッケージ マネージャーを使用して apache2 パッケージをインストールします。

    sudo apt-get update && sudo apt-get install apache2 -y
    

    Apache をインストールすると、オペレーティング システムにより Apache サーバーが自動的に起動します。

  6. 同じコマンド ウィンドウで、Apache ウェブサーバーのデフォルトのウェブページを次のコマンドで上書きします。

    echo '<!doctype html><html><body><h1>Hello World!</h1></body></html>' | sudo tee /var/www/html/index.html
    
  7. [VM インスタンス] ページで、作成したインスタンスの行を見つけて、外部 IP アドレスをコピーします。

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

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

  9. [VM インスタンス] ページで、作成したインスタンスの行の左端にあるチェックボックスをオンにします。

  10. ページの上部にある [停止] ボタンをクリックして、VM を停止します。

処理クラスタの作成と Migrate for Anthos のインストール

次の手順では、Cloud 内に処理クラスタとして使用する GKE クラスタを作成します。ここで Migrate for Anthos をインストールして移行を実行します。

  1. Cloud Shell で次のコマンドを使用して、処理クラスタとして使用する新しい Kubernetes クラスタを作成します。

    machine-type 値を指定する際は、15 GB 以上のメモリを備えたマシンタイプを指定してください。

    gcloud container clusters create migration-processing \
      --project=project-id --zone=zone --machine-type n1-standard-4 \
      --image-type ubuntu --num-nodes 1 --enable-stackdriver-kubernetes \
      --subnetwork "projects/project-id/regions/region/subnetworks/default"
    
  2. Migrate for Anthos をインストールします。

    migctl

    Migrate for Anthos が Container Registry と Cloud Storage にアクセスできるようにするには、storage.admin のロールを持つサービス アカウントを作成する必要があります。

    1. Cloud Shellm4a-install サービス アカウントを作成します。

      gcloud iam service-accounts create m4a-install \
        --project=PROJECT_ID
    2. サービス アカウントに storage.admin ロールを付与します。

      gcloud projects add-iam-policy-binding PROJECT_ID  \
        --member="serviceAccount:m4a-install@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/storage.admin"
    3. サービス アカウント用のキーファイルをダウンロードします。

      gcloud iam service-accounts keys create m4a-install.json \
        --iam-account=m4a-install@PROJECT_ID.iam.gserviceaccount.com \
        --project=PROJECT_ID 
    4. クラスタに接続します。

      gcloud container clusters get-credentials migration-processing \
        --zone zone --project project-id
      
    5. Cloud Shell で、Migrate for Anthos に含まれている migctl コマンドライン ツールを使用して、処理クラスタに Migrate for Anthos コンポーネントを設定します。

      migctl setup install --json-key=m4a-install.json
      
    6. Migrate for Anthos のインストールを検証します。

      migctl doctor コマンドを使用して、デプロイが成功したことを確認します。

      migctl doctor
      

      コマンドが以下の成功結果を返すまでに 1 分以上かかることがあります。

      [✓] Deployment
      

    Console

    必要なインストール コマンドを生成し、Cloud Shell で実行することで、Google Cloud Console はインストール プロセスに役立ちます。

    1. Cloud Console で Migrate for Anthos ページを開きます。

      Migrate for Anthos ページに移動

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

    3. プルダウン リストから上記で作成したクラスタ(migration-processing)を選択します。

    4. Cloud Shell の各コマンドを実行して、以下を行います。

      • Migrate for Anthos が Container Registry と Cloud Storage にアクセスできるようにするためのサービス アカウントを作成します。
      • Migrate for Anthos コンポーネントをインストールします。
    5. 最後の Cloud Shell コマンドを使用して、インストールのステータスをモニタリングします。

      インストールが完了する前に、次のようなメッセージが表示されることがあります。メッセージが表示された場合は、インストールが完了するまで数分待ってから migctl doctor を再度実行してください。

      migctl doctor
      [!] Deployment
       validation job is in-progress
      

      次の出力例のチェックマークは、Migrate for Anthos が正常にデプロイされたことを示します。

      migctl doctor
      [✓] Deployment
      
    6. インストールが正常に完了したら [Done] を選択します。

VM を移行する

次の手順では、移行の詳細を含む移行計画を作成し、作成した計画を使用して VM を移行します。

  1. 移行元を Compute Engine VM として指定します。このステップにより、移行元の仕様が移行計画に追加されます。

    migctl

    Compute Engine を移行元として使用するには、まず compute.viewercompute.storageAdminのロールを持つサービス アカウントを作成します。

    1. Cloud Shellm4a-ce-src サービス アカウントを作成します。

      gcloud iam service-accounts create m4a-ce-src \
        --project=PROJECT_ID
    2. サービス アカウントに compute.viewer ロールを付与します。

      gcloud projects add-iam-policy-binding PROJECT_ID  \
        --member="serviceAccount:m4a-ce-src@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/compute.viewer"
    3. サービス アカウントに compute.storageAdmin ロールを付与します。

      gcloud projects add-iam-policy-binding PROJECT_ID  \
        --member="serviceAccount:m4a-ce-src@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/compute.storageAdmin"
    4. サービス アカウント用のキーファイルをダウンロードします。

      gcloud iam service-accounts keys create m4a-ce-src.json \
        --iam-account=m4a-ce-src@PROJECT_ID.iam.gserviceaccount.com \
        --project=PROJECT_ID 
    5. 移行のソースを作成します。

      migctl source create ce quickstart-source --project project-id --json-key=m4a-ce-src.json
      

      ここで、m4a-ce-src.json には、上記で作成したサービス アカウントを指定します。

    Console

    1. Cloud Console で Migrate for Anthos ページを開きます。

      Migrate for Anthos ページに移動

    2. [Add Source] をクリックします。

    3. プルダウン リストから Migrate for Anthos コンポーネントをすでにインストールしたクラスタを選択します。

    4. [次へ] をクリックします。

    5. 移行の名前を quickstart-source として指定します。

    6. [ソースタイプ] を [Compute Engine] に設定します。

    7. [次へ] をクリックします。

    8. 移行する VM が含まれているプロジェクトを選択します。

    9. [新しいサービス アカウントを作成する] を選択して、移行元として Compute Engine を使用できるようにするサービス アカウントを作成します。新しいサービス アカウントの名前の入力を求められます。

    10. [次へ] をクリックします。

    11. [ソースを追加] を選択します。

  2. 移行を作成します。

    migctl

    このコマンドは、移行対象を定義する移行計画を作成します。

    migctl migration create my-migration --source quickstart-source \
      --vm-id quickstart-instance --intent Image
    

    移行が作成されたことを示す移行ステータスが表示されたら、次のステップに進みます。

    migctl migration status my-migration
    
    NAME           CURRENT-OPERATION      PROGRESS STEP                   STATUS   AGE
    my-migration   GenerateMigrationPlan  [1/3]    CreateSourceSnapshots  Running  13s

    Console

    1. Cloud Console で Migrate for Anthos ページを開きます。

      Migrate for Anthos ページに移動

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

    3. [移行名] を migration に設定します。

    4. 前の手順で作成した移行元(quickstart-source)を選択します。

    5. 移行元の VM 名または IDquickstart-instance に設定します。

    6. [移行インテント] を Image として設定します。

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

      移行が完了すると、[ステータス] 列に [移行計画の生成完了] と表示されます。

  3. 移行計画を確認します。

    このクイックスタートでは、移行計画のみを確認します。編集することもできます。 詳細については、移行計画のカスタマイズをご覧ください。

    migctl

    移行計画をダウンロードして確認する必要があります。

    1. 移行計画をダウンロードします。

      migctl migration get my-migration
      
    2. ダウンロードした移行計画 my-migration.yaml をテキスト エディタで開き、確認します。

    3. 変更した場合は、編集した移行計画をアップロードします(クイックスタートを完了するために変更を行う必要はありません)。

      migctl migration update my-migration --file my-migration.yaml
      

    Console

    YAML エディタを使用して Google Cloud Console で移行プランを確認します。

    1. 目的の移行の行で移行の名前を選択し、[詳細] タブを開きます。

    2. [YAML] タブを選択します。

    3. 移行計画を確認します。

    4. 編集せずに計画を閉じるには、右上の [X] アイコンをクリックします。

  4. 移行計画を使用して VM を移行します。

    このステップで、VM を移行し、ワークロードのデプロイに使用できるアーティファクトを生成します。

    migctl

    migctl migration generate-artifacts my-migration
    

    Console

    1. Cloud Console で Migrate for Anthos ページを開きます。

      Migrate for Anthos ページに移動

    2. 目的の移行の行の [次のステップ] プルダウンで、[アーティファクトを生成] を選択します。

  5. 移行が開始したら、移行が完了するまでステータスをチェックします。

    移行には数分かかることがあります。この間、ステータスを確認することで移行の現在の状態が報告されます。

    migctl

    migctl migration status my-migration
    

    移行が完了すると、次のようなメッセージが表示されます。

    migctl migration status my-migration
    
    NAME            CURRENT-OPERATION       PROGRESS        STEP            STATUS    AGE
    my-migration    GenerateArtifacts       [1/1]           ExtractImage    Completed 14m23s

    Console

    1. Cloud Console で Migrate for Anthos ページを開きます。

      Migrate for Anthos ページに移動

    2. 次の方法で移行のステータスを表示します。

      • 移行の行について [ステータス] 列を表示します。

      • 移行名をクリックします。[移行の詳細] ページが開きます。[モニタリング] タブをクリックしてステータスの詳細を確認するか、[イベント] タブをクリックして移行イベントを確認します。

    3. 移行の作成が完了すると、[ステータス] に [移行計画の生成完了] と表示されます。

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

次の手順では、移行中に生成したデプロイ アーティファクトを取得して、移行したワークロードのクラスタへのデプロイに使用します。最後に、移行したアプリから「Hello World!」のウェブページにアクセスできることを確認します。

  1. 移行が完了したら、生成された YAML アーティファクトをダウンロードします。

    migctl

    migctl migration get-artifacts my-migration
    

    Console

    1. Cloud Console で Migrate for Anthos ページを開きます。

      Migrate for Anthos ページに移動

    2. 目的の移行の行で移行の [名前] をクリックします。移行の [詳細] タブが開きます。

    3. [アーティファクト] タブを選択します。

    4. 各ファイルを選択して別々にダウンロードします。

    移行中に生成されたダウンロード済みアーティファクト ファイルは次のとおりです。

    • deployment_spec.yaml -- ワークロードを構成する YAML ファイル。
    • Dockerfile -- 移行された VM のイメージのビルドに使用される Dockerfile。
    • migration.yaml -- 移行計画のコピー。
    • blocklist.yaml -- 移行計画内の設定に基づいて無効にするコンテナ サービスのリスト。サービスリストのカスタマイズをご覧ください。
  2. deployment_spec.yaml ファイルを開き、名前が quickstart-instance である Service オブジェクトを見つけます。

  3. Service 定義の下に、HTTP 経由でウェブサーバーにアクセスするためのポート 80 を公開する別の Service を貼り付け、ファイルを保存します。

    ハイライトされたコードを貼り付けて、デプロイ仕様に以下を含めます。

    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
    
    

  4. デプロイ仕様 YAML を適用してワークロードをデプロイします。

    kubectl apply -f deployment_spec.yaml
    

    デプロイが完了するまで数分かかることがあります。

  5. 外部 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
    
  6. ブラウザを開いて外部 IP アドレスのウェブページにアクセスし、移行をテストします(HTTPS ではなく HTTP を使用してください)。

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

ワークロードを移行したコンテナに対して bash コマンドを実行できます。詳しくは、トラブルシューティングをご覧ください。

クリーンアップ

不要な Google Cloud 料金が発生しないようにするには、Google Cloud Console を使用して、不要なプロジェクトを削除します。

次のステップ