Migrate to Containers CLI を使用して Linux VM を移行する
このクイックスタートでは、Compute Engine 仮想マシン(VM)インスタンスを作成し、Migrate to Containers CLI を使用して VM を Google Kubernetes Engine(GKE)に移行します。
始める前に
Google Cloud コンソールのプロジェクト セレクタ ページで、Google Cloud プロジェクトを選択または作成作成します。
Google Cloud プロジェクトの課金が有効になっていることを確認します。プロジェクトで課金が有効になっているかどうかを確認する
Compute Engine API を有効にします。
GKE API を有効にします。
移行元 VM として使用するウェブサーバーを含む Compute Engine VM を作成する
このセクションでは、移行完了後にテストに使用できる Hello World! ウェブページを提供する Compute Engine VM を作成する方法について説明します。
Google Cloud コンソールで、「Cloud Shell をアクティブにする」アイコン()をクリックします。
VM を作成します。
gcloud compute instances create quickstart-source-vm \ --zone=us-central1-a --machine-type=e2-medium \ --subnet=default --scopes="cloud-platform" \ --tags=http-server,https-server --image=ubuntu-2204-jammy-v20240208 \ --image-project=ubuntu-os-cloud --boot-disk-size=10GB --boot-disk-type=pd-standard \ --boot-disk-device-name=quickstart-source-vm
VM の作成が完了するまで数分待ちます。
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
[VM インスタンス] ページに移動します。
VM
quickstart-source-vm
に接続するには、VM の行を探して [SSH] をクリックします。新しいタブで接続が確立されます。
quickstart-source-vm
コマンドタブで、apache2
パッケージをインストールします。sudo apt-get update && sudo apt-get install apache2 -y
Apache をインストールすると、オペレーティング システムにより Apache サーバーが自動的に起動します。
同じタブで、Apache ウェブサーバーのデフォルトのウェブページを新しいページで上書きします。
echo '<!doctype html><html><body><h1>Hello World!</h1></body></html>' | sudo tee /var/www/html/index.html
[VM インスタンス] ページに戻り、
quickstart-source-vm
に表示されている外部 IP アドレスをコピーします。VM の IP アドレスをブラウザのアドレスバーに貼り付けます。
http://
の接頭辞を付けます。「Hello World!」ページが表示されます。
ローカルマシンとして使用する Compute Engine VM を作成する
このセクションでは、ローカルマシンとして使用できる Linux VM を作成します。この VM を使用して、移行元 VM の移行に必要な Migrate to Containers オペレーションを実行します。
Google Cloud コンソールで、「Cloud Shell をアクティブにする」アイコン()をクリックします。
VM を作成します。
gcloud compute instances create quickstart-local-vm \ --zone=us-central1-a --machine-type=e2-medium \ --subnet=default --scopes="cloud-platform" \ --tags=http-server,https-server --image=ubuntu-2204-jammy-v20240208 \ --image-project=ubuntu-os-cloud --boot-disk-size=50GB --boot-disk-type=pd-standard \ --boot-disk-device-name=quickstart-local-vm
VM の作成が完了するまで数分待ちます。
GKE クラスタを作成する
このセクションでは、Google Cloud に GKE クラスタを作成します。このクラスタには、このクイックスタートの後半でコンテナ化されたワークロードをデプロイします。
Cloud Shell で、新しい Kubernetes クラスタを作成します。
gcloud container clusters create quickstart-cluster \ --zone=us-central1-a --machine-type=e2-medium \ --image-type=ubuntu_containerd --num-nodes=1 \ --logging=SYSTEM,WORKLOAD,API_SERVER,SCHEDULER,CONTROLLER_MANAGER
クラスタの作成が完了するまで数分待ちます。
移行を実行するローカル VM を準備する
[VM インスタンス] ページに移動します。
VM
quickstart-local-vm
に接続するには、VM の行を探して [SSH] をクリックします。新しいタブで接続が確立されます。
quickstart-local-vm
コマンドタブで、Google Cloud CLI をインストールします。# Import the Google Cloud public key. curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/cloud.google.gpg # Add the gcloud CLI distribution URI as a package source echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list # Update and install gcloud sudo apt-get update && sudo apt-get install google-cloud-cli # Get started gcloud init
gcloud CLI の設定を完了するには、
quickstart-local-vm
コマンドタブに表示される指示に従います。- オペレーションを実行するアカウントを選択するには、「
1
」と入力します。 - VM を作成したプロジェクトを選択するには、「
1
」と入力します。 - デフォルトのリージョンとゾーンの構成をスキップするには、「
n
」と入力します。
- オペレーションを実行するアカウントを選択するには、「
Docker をインストールし、root 以外のユーザーがコンテナを実行できるようにします。
# Download the convenience script curl -fsSL https://get.docker.com -o install-docker.sh # Install Docker sudo sh install-docker.sh # Allow the non-root user to access Docker sudo usermod -aG docker $USER # Activate the group changes newgrp docker
Skaffold をインストールします。
curl -Lo skaffold https://storage.googleapis.com/skaffold/releases/latest/skaffold-linux-amd64 && \ sudo install skaffold /usr/local/bin/
Migrate to Containers CLI をダウンロードします。
curl -O "https://m2c-cli-release.storage.googleapis.com/$(curl -s https://m2c-cli-release.storage.googleapis.com/latest)/linux/amd64/m2c" chmod +x ./m2c
移行元 VM を移行する
移行には通常、移行元 VM のファイル システムをコピーする、ファイル システムを分析して移行計画を作成する、移行アーティファクトを生成する、という 3 つのステップがあります。
以降のセクションでは、ローカル Linux VM を使用して移行元 VM を移行するために Migrate to Containers CLI を使用する方法について説明します。
移行元 VM のファイル システムをコピーする
移行元 VM ファイル システムをコピーするときに、Migrate to Containers CLI は、デフォルトのフィルタを使用して、コピーされたファイル システムのサイズを小さくします。ただし、Apache サーバーを起動できるようにするには、デフォルトのフィルタで削除される /var/log
ディレクトリが必要です。
このセクションでは、デフォルトのフィルタを編集して、移行元 VM のファイル システムと一緒に /var/log/*
をコピーする方法について説明します。
quickstart-local-vm
コマンドタブで、filters.txt
というファイルにあるデフォルトの Migrate to Containers フィルタのリストを取得します。./m2c copy default-filters > filters.txt
デフォルトのフィルタを編集するには、次の操作を行います。
テキスト エディタで
filters.txt
ファイルを開きます。vi filters.txt
ファイルを変更するには、
i
キーを押します。次のステートメントを削除します。
- /var/log/*
ファイルを保存してテキスト エディタを終了するには、
Esc
キーを押してから「:wq
」と入力します。
移行元マシンのファイル システムをコピーします。
./m2c copy gcloud \ --project PROJECT_ID --zone us-central1-a \ --vm-name quickstart-source-vm --output quickstart-vm-filesystem \ --filters filters.txt
PROJECT_ID は、プロジェクトの ID に置き換えます。
移行元マシンのファイル システムのコピーは、
quickstart-vm-filesystem
ディレクトリに作成されます。
移行計画を作成する
quickstart-local-vm
コマンドタブで、移行計画を作成します。./m2c analyze \ --source quickstart-vm-filesystem --plugin linux-vm-container \ --output analysis-output
分析が完了すると、
analysis-output
という新しいディレクトリが作成され、そこに移行計画config.yaml
が保存されます。
移行アーティファクトを生成する
quickstart-local-vm
コマンドタブで、移行アーティファクトを生成します。./m2c generate --input analysis-output --output migration-artifacts
生成された移行アーティファクトが
migration-artifacts
ディレクトリに追加されます。
移行したワークロードをデプロイする
このセクションでは、移行したワークロードをローカル VM quickstart-local-vm
から Google Cloud で実行されている GKE クラスタにデプロイします。
quickstart-local-vm
コマンドタブで、gke-gcloud-auth-plugin
プラグインをインストールします。sudo apt-get install google-cloud-sdk-gke-gcloud-auth-plugin
kubectl
をインストールします。sudo apt-get install kubectl
クラスタ
quickstart-cluster
に接続します。gcloud container clusters get-credentials quickstart-cluster \ --zone us-central1-a --project PROJECT_ID
migration-artifacts
フォルダを開きます。cd migration-artifacts
ワークロードをインターネットに公開するには、
deployment_spec.yaml
ファイルに新しいLoadBalancer
サービスを追加します。deployment_spec.yaml
ファイルを編集するには、次の操作を行います。テキスト エディタで
deployment_spec.yaml
ファイルを開きます。vi deployment_spec.yaml
ファイルを変更するには、
i
キーを押します。linux-system
という名前のService
オブジェクトを探します。次のように表示されます。apiVersion: v1 kind: Service metadata: labels: anthos-migrate.cloud.google.com/type: linux-container migrate-for-anthos-optimization: "true" migrate-for-anthos-version: m2c-cli-1.2.2 name: linux-system spec: clusterIP: None selector: app: linux-system type: ClusterIP
linux-system
の直後に、hello-service
という別のService
オブジェクトを追加します。apiVersion: v1 kind: Service metadata: labels: anthos-migrate.cloud.google.com/type: linux-container migrate-for-anthos-optimization: "true" migrate-for-anthos-version: m2c-cli-1.2.2 name: linux-system spec: clusterIP: None selector: app: linux-system type: ClusterIP --- # Add the hello-service object apiVersion: v1 kind: Service metadata: name: hello-service spec: selector: app: linux-system ports: - protocol: TCP port: 80 targetPort: 80 type: LoadBalancer
ファイルを保存してテキスト エディタを終了するには、
Esc
キーを押してから「:wq
」と入力します。
移行した VM をデプロイします。
skaffold run -d eu.gcr.io/PROJECT_ID
移行後の VM の外部 IP アドレスを取得します。
kubectl get service hello-service
ウェブサーバーの準備が整うと、追加した
hello-service
の外部 IP アドレスが表示されます。NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE hello-service LoadBalancer 10.23.241.124 EXTERNAL_IP 80:32611/TCP 5m4s
移行が成功したかどうかを確認するには、新しいブラウザタブを開き、外部 IP アドレスを使用してウェブページにアクセスします。
http://EXTERNAL_IP
HTTPS
ではなくHTTP
を使用してください。画面に「Hello World!」というテキストが表示されたら VM の移行は成功しています。
移行したワークロードにアクセスできない場合は、既知の問題のトラブルシューティングをご覧ください。
クリーンアップ
このページで使用したリソースに対して Google Cloud アカウントで課金されないようにするには、次の操作を行います。
GKE クラスタを削除する
- Google Cloud コンソールで、[GKE] ページに移動します。
- [
quickstart-cluster
] を選択して、[ 削除] をクリックします。 - 確認のメッセージが表示されたら、もう一度 [削除] をクリックします。
VM を削除する
- Google Cloud コンソールで [VM インスタンス] ページに移動します。
quickstart-source-vm
という名前をクリックします。- インスタンスの詳細ページの上部にある [ 削除] をクリックします。
quickstart-local-vm
という名前をクリックします。- インスタンスの詳細ページの上部にある [ 削除] をクリックします。
次のステップ
- ゲスト検出とデータ収集をバッチ処理する方法を学習する。
- Migrate to Containers GitHub リポジトリにある Spring フレームワーク アプリケーションの移行に関するチュートリアルで、より複雑なアプリケーションを移行する方法を学習する。