クイックスタート

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

始める前に

Compute Engine のサポート有効化

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

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

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

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

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

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

    API の有効化

GKE の有効化と設定

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

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

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

gcloud init の使用

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

    gcloud init

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

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

gcloud config の使用

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

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

次のステップでは、「Hello World!」のウェブページを表示する簡単な Compute Engine VM を作成します。このページで、移行後のテストを行うことができます。

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

    このトピックの後半で GKE を作成するゾーンと同じゾーンを指定します。

    gcloud beta compute  --project=project-id instances create \
      quickstart-instance  --zone=zone --machine-type=n1-standard-1 \
      --subnet=default --scopes="cloud-platform" \
      --tags=http-server,https-server --image=ubuntu-minimal-1604-xenial-v20200317 \
      --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 のインストール

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

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

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

    gcloud container clusters create migration-processing --scopes="cloud-platform" \
      --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. クラスタに接続します。

    gcloud container clusters get-credentials migration-processing \
      --zone zone --project project-id
    
  3. 処理クラスタで Migrate for Anthos のコンポーネントを設定します。

    migctl setup install
    
  4. Migrate for Anthos のインストールを検証します。

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

    migctl doctor
    

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

    [✓] Deployment
    

VM の移行

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

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

    migctl source create ce quickstart-source --project project-id --zone zone
    
  2. 移行を作成します。

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

    migctl migration create my-migration --source quickstart-source \
      --vm-id quickstart-instance --intent Image
    
  3. 編集した移行計画を保存します。

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

    これにより VM が移行され、ワークロードのデプロイに使用できるアーティファクトが生成されます。

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

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

    migctl migration status my-migration
    

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

    migctl migration status my-migration
    NAME           PROCESS              STATE       STATUS      PROGRESS   AGE
    my-migration   generate-artifacts   completed   COMPLETED   [15/15]    7m25s
    

移行したワークロードのデプロイ

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

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

    migctl migration get-artifacts my-migration
    

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

    • deployment_spec.yaml -- ワークロードを構成する YAML ファイル。
    • Dockerfile -- 移行された VM のイメージのビルドに使用される Dockerfile。
    • migration.yaml -- 移行計画のコピー。
  2. deployment_spec.yaml ファイルを開き、名前が app-quickstart-instanceService オブジェクトを見つけます。

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

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

    apiVersion: v1
    kind: Service
    metadata:
      creationTimestamp: null
      name: app-quickstart-instance
    spec:
      clusterIP: None
      selector:
        app: app-quickstart-instance
      type: ClusterIP
    status:
      loadBalancer: {}
    
    ---
    
    
    apiVersion: v1
    kind: Service
    metadata:
      name: hello-service
    spec:
      selector:
        app: 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 を使用して、不要なプロジェクトを削除します。

次のステップ