このドキュメントは、コンテナへの仮想マシンベース ワークロードの移行プランを設計し、実装を担当するクラウド アーキテクトを対象としています。このドキュメントは、Migrate to Containers を使用して、移行元の環境から Google Kubernetes Engine(GKE)または GKE Enterprise で実行されるコンテナに仮想マシン(VM)を移行する際のガイダンスとなります。移行元の環境は、オンプレミス環境、プライベート ホスティング環境、または別のクラウドで実行されていることを前提としています。
このドキュメントでは、Migrate to Containers の概要について説明します。また、コンテナへの VM の移行を計画する際に考慮すべき重要なポイントについても説明します。これは、Google Cloud への移行に関する複数のパートからなるシリーズの一部です。シリーズの概要については、Google Cloud への移行: 移行パスの選択をご覧ください。
このドキュメントは、Migrate to Containers を使用して、サポートされている移行元の環境から GKE または GKE Enterprise 環境に Linux や Windows などの互換性のあるオペレーティング システム(OS)が稼働している VM を移行する計画がある場合にお読みください。移行元の環境としては、次のようなものがあります。
- Compute Engine 環境
- VMware vSphere 環境
- Microsoft Azure VM 環境
- Amazon Elastic Compute Cloud(Amazon EC2)環境
Migrate to Containers を使用すると、以下のことを行わずに、VM ベースの既存のワークロードを GKE と GKE Enterprise コンテナに配置できます。
- ソースコードへのアクセスを要求する
- ワークロードを書き換える
- ワークロードを手動でコンテナ化する
Migrate to Containers を使用した VM ベースのワークロードの移行には、次の利点があります。
- コンテナ化された環境。次のようなメリットがあります。
- 高密度ワークロード
- 豊富なオーケストレーション メカニズムとポリシー管理
- 柔軟なサービス間通信チャネル
- 継続的インテグレーションと継続的デプロイのパイプラインの使用
- サポートされていない OS バージョンからの移行が可能
- VM ベースの環境の縮小と廃止
Migrate to Containers を使用した VM ベースのワークロードのコンテナへの移行は、ワークロードのモダナイゼーションでも実施できるステップの一つです。Migrate to Containers を使用して VM ベースのワークロードを移行すると、ワークロードのモダナイズに必要な高コストの書き換えが不要になります。ただし、クラウド環境で実行するように設計されたワークロードに変換されることはありません。
この移行に適した候補としては、次のようなものがあります。
- 完全な書き換えによるモダナイゼーションができないか、コストが高すぎるワークロード
- 変更すると破損する可能性がある不明な依存関係のあるワークロード
- メンテナンスはされているが、積極的に開発が行われていないワークロード
- メンテナンスされていないワークロード
- ソースコードにアクセスできないワークロード
Migrate to Containers は、いくつかの方法で使用できます。たとえば、Google Cloud コンソールからアクセスできます。移行プロセスを自動化し、既存のツールチェーンと統合する必要がある場合は、コマンドライン インターフェースと Migrate to Containers の Kubernetes カスタム リソース定義(CRD)を使用します。
Migrate to Containers インターフェースの詳細については、API とリファレンス | Migrate to Containers をご覧ください。
このドキュメントは、次のドキュメントを読み、その内容を理解していることを前提としています。
- Google Cloud への移行: スタートガイド。ワークロードを Google Cloud に移行するプロセスについて説明しています。
- Migrate to Containers アーキテクチャでは、Migrate to Containers のリファレンス アーキテクチャについて説明しています。
- Migrate to Containers の移行の前提条件は、Migrate to Containers での移行とワークロードの互換性を評価する方法について説明しています。
Google Cloud への移行の設計
VM を移行元の環境から Google Cloud 内で実行されるコンテナに移行するには、Google Cloud への移行のシリーズで説明されているフレームワークに従うことをおすすめします。
次の図は、移行の過程を示しています。
上の図に示すフレームワークは、4 フェーズで構成されています。
- 評価。このフェーズでは、移行元の環境を評価し、Google Cloud に移行するワークロードを評価して、どの VM が各ワークロードをサポートするのかを評価します。
- 計画。このフェーズでは、リソース階層のプロビジョニングやネットワーク アクセスの設定など、Migrate to Containers の基本インフラストラクチャを作成します。
- デプロイ。このフェーズでは、Migrate to Containers を使用して、VM を移行元の環境から GKE または GKE Enterprise に移行します。
- 最適化。このフェーズでは、クラウドのテクノロジーと機能を最大限に活用します。
移行元の環境とワークロードの評価
評価フェーズでは、移行元の環境と移行する VM ベースのワークロードに関する情報を収集します。これは、移行と移行先の環境の両方で必要なリソースのサイズを適切に設定するのに役立ちます。
評価フェーズでは、次のことを行います。
- ワークロードの包括的なインベントリを作成する。
- プロパティと依存関係に応じてアプリケーションを分類する。
- チームを Google Cloud でトレーニングして教育する。
- Google Cloud 上で実験と概念実証を作成する。
- ターゲット環境の総所有コスト(TCO)を計算する。
- 最初に移行するワークロードを選ぶ。
以降のセクションは、Google Cloud への移行: ワークロードの評価と調査の情報に基づいていますが、Migrate to Containers でコンテナに移行する VM ベースのワークロードの評価については固有の情報を提供しています。
インベントリを構築する
移行のスコープを設定するには、現在の VM ベースの環境を把握する必要があります。環境を把握するには、ワークロードとその依存関係に関する情報を収集します。
アプリのインベントリを作成するでは、VM ベース環境のワークロードとその依存関係のインベントリを作成する方法について説明しています。そのガイダンスに沿ってインベントリを作成してから、このドキュメントの手順を続けてください。
ワークロードとその依存関係のインベントリを作成したら、インベントリを修正します。Migrate to Containers で VM ベースのワークロードを移行するときに、組織で重要となる側面と機能を評価します。
ワークロードのインベントリを完了するには、次の点を考慮してください。
移行元の環境。Migrate to Containers は、次のような異なる移行元環境からの VM の移行をサポートしています。
- Compute Engine
- VMware vSphere
- Microsoft Azure VM
- Amazon EC2
ワークロードを移行できるように Migrate to Containers を正しく設定するには、移行元の環境を評価する必要があります。
VM で実行中のオペレーティング システム: VM で実行中のオペレーティング システムとそのライセンスに関する情報を収集し、オペレーティング システムと Migrate to Containers の互換性を維持します。Migrate to Containers がサポート対象外の OS を実行している場合は、サポートされているバージョンにアップグレードするか、OS を Migrate to Containers がサポートする OS に変更することを検討します。
VM 内のワークロード: 各 VM にデプロイされているワークロードを評価します。次に、ワークロード間の依存関係をマッピングします。また、ワークロードと外部サービス間の依存関係もマッピングします。次に、ワークロードの構成ソースに関する情報を収集します。たとえば、ワークロードを動的に構成するために、環境変数、分散構成システム、またはメタデータ サーバーを使用しているかどうか。また、ワークロードがロギング システムにどのように情報を送信するかも評価します。
Migrate to Containers の適合性スコア: ワークロードが Migrate to Containers を使用した移行に適しているかどうかを評価します。Migrate to Containers は、VM で適合性スコアを計算できる Linux および Windows 用の適合性評価ツールを提供します。適合性スコアが低い場合は、ワークロードを移行する前に解決しなければならない問題があることを示しています。たとえば、セキュリティが強化された Linux を VM で有効にした場合、移行前にこの依存関係を軽減するための追加作業が必要になることがあります。
ネットワーク サービス: ネットワーク サービスの構成と VM ベースのワークロードがこれらのサービスをどのように使用しているのかに関する情報を収集します。たとえば、他のワークロードやサービスのロケーションを特定するために、ワークロードがドメイン ネーム システム(DNS)、マルチキャスト DNS、ホストファイルなどのサービス ディスカバリ メカニズムをどのように使用しているかを評価します。次に、ワークロードに必要なカスタム エントリについて、各 VM の hosts ファイルを評価します。hosts ファイルの詳細については、生成されたリソースと記述子の確認と検証をご覧ください。
ハードウェアの依存関係: 高パフォーマンス ストレージ デバイス、GPU、TPU、ネットワーク アプライアンスなど、VM ベースの環境で使用しているあらゆるタイプのハードウェアを評価します。
ステートレス ワークロードとステートフル ワークロード: ステートレス ワークロードは、クラスタまたは永続ストレージに状態を保存しません。ステートフル ワークロードでは、後で使用するためにデータを保存します。ステートフル ワークロードの移行は通常、ステートレス ワークロードの移行よりも難しいため、どのワークロードがステートレスで、どのワークロードがステートフルを評価してください。
ストレージ: ステートフル ワークロードの場合は、ストレージ要件のリストを作成します。リストを作成する際は、次の点を考慮してください。
- ストレージ システムの種類(ブロック ボリューム、ファイル ストレージ、オブジェクト ストレージ)
- ストレージ システムのサイズ
ストレージ システムへのワークロード アクセス
- たとえば、ワークロードがネットワーク ファイル システム(NFS)やサーバー メッセージ ブロック(SMB)を使用してネットワークを介してファイルにアクセスしているかどうか。
たとえば、NFS サーバーまたは SMB サーバーで VM を実行しているかどうか。
VM がカーネルモードで NFS サーバーを実行している場合、サーバーの移行に追加の作業が必要になります。これらのサーバーは、Compute Engine や GKE などの別のランタイム環境に移行できます。また、フルマネージド ネットワーク接続ストレージ サービスである Filestore にデータを移行することもできます。
ディスク構成:
- VM 内のすべてのディスク、データ パーティション、ボリュームの構成と、それぞれのセキュリティと機密性保持に関する機能を評価します。
データの局所性: データの局所性は、ステートフル ワークロードのパフォーマンスに影響を与えます。環境と外部システムの距離や接続性がレイテンシに影響します。外部データ ストレージ システムごとに、満たす必要があるパフォーマンスと可用性の要件を検討します。
評価を完了する
環境と VM ベースのワークロードに関連するインベントリを作成したら、Google Cloud への移行: ワークロードの評価と調査の評価フェーズの残りの作業を行います。この作業が完了したら、以下の説明に進んでください。
基盤の計画と構築
計画と構築フェーズでは、Google Cloud 上のワークロードをサポートするクラウド インフラストラクチャとサービスをプロビジョニングして構成します。
- リソース階層を構築する。
- Identity and Access Management を構成する。
- お支払い情報を設定する。
- ネットワーク接続を設定する。
- セキュリティを強化する。
- モニタリングとアラートを設定する。
ワークロードとその依存関係をサポートするクラウド インフラストラクチャとサービスの構築方法については、Google Cloud への移行: 基盤の構築をご覧ください。これらのガイドラインに沿って環境の基盤を構築します。この作業が完了したら、以下の説明に進んでください。
「Google Cloud への移行: 基盤の構築」のガイダンスに沿って、Migrate to Containers の設定により、基盤に関する作業を完了します。
- ワークロードと移行元の環境が Migrate to Containers の前提条件を満たしていることを確認します。
- Migrate to Containers Cloud APIs への移行を有効にします。
- Migrate to Containers が移行先の環境のリソースにアクセスするために使用するサービス アカウントをプロビジョニングします。
- ワークロードを Google Cloud の GKE または GKE クラスタに移行する場合は、Migrate to Virtual Machines を設定します。
- Migrate to Containers 処理クラスタを構成します。Migrate to Containers クラスタは、移行中にコンテナ移行コンポーネントを実行します。
- 処理クラスタに Migrate to Containers をインストールして構成します。
前述の「Migrate to Containers の設定」記事では、Migrate to Containers とその依存関係をプロビジョニングして構成する方法について説明しました。そのガイダンスに従って、Migrate to Containers を設定します。
作業が完了したら、このドキュメントの先に進みます。
VM ベースのワークロードのコンテナへの移行
デプロイ フェーズでは、次のマイルストーンを使用して、移行元の環境から GKE または GKE Enterprise で実行されているコンテナに VM を移行します。
- 移行計画を生成して確認します。
- コンテナ アーティファクトとデプロイ記述子を生成します。
- Migrate to Containers が生成したリソース記述子を確認、検証、カスタマイズします。
- コンテナ化されたワークロードを GKE または GKE Enterprise にデプロイして検証します。
- Migrate to Containers をアンインストールします。
Migrate to Containers を使用して VM を移行するために必要な手順については、移行を実行するをご覧ください。
移行計画を作成して確認する
VM ベースのワークロードの Migrate to Containers 移行計画を作成します。
- 移行元の環境を Migrate to Containers の移行元として構成します。Migrate to Containers で VM ベースのワークロードを移行するには、VM が現在実行されている移行元の環境に関する情報が必要です。これらの情報は、このドキュメントのインベントリの作成で説明している手順で収集しています。移行元の環境の構成の詳細については、移行元の追加(Linux)と移行元の追加(Windows)をご覧ください。
- 移行計画を作成します。移行元の環境からサポートされている移行先の環境に移行する VM ベースのワークロードを指定するには、移行計画を作成します。たとえば、永続データを保存する場所を構成します。移行計画の作成とモニタリングの詳細については、移行の作成(Linux)と移行の作成(Windows)をご覧ください。
- 移行計画を確認してカスタマイズします。移行する VM ベースのワークロードごとに移行計画を生成したら、各移行計画を確認して、要件に合わせてカスタマイズすることをおすすめします。移行計画のカスタマイズの詳細については、移行計画のカスタマイズ(Linux)および移行計画のカスタマイズ(Windows)をご覧ください。
作業が完了したら、このドキュメントの先に進みます。
コンテナ アーティファクトとデプロイ記述子を生成する
ワークロードのターゲット コンテナ アーティファクトを生成するため、Migrate to Containers は、移行計画の VM から抽出したワークロードとデータを含むコンテナ イメージを作成します。次に、コンテナ イメージのコピーを構成済みのコンテナ イメージ リポジトリに保存します。Migrate to Containers は、ターゲット環境でコンテナ イメージのインスタンスのデプロイとカスタマイズに使用できるデプロイ記述子を生成します。
コンテナ アーティファクトの生成方法については、移行の実行(Linux)と移行の実行(Windows)をご覧ください。
作成して移行するコンテナ アーティファクトの進行状況をモニタリングできます。移行のモニタリングの詳細については、移行のモニタリング(Linux)と移行のモニタリング(Windows)をご覧ください。
Windows ワークロードのコンテナ アーティファクトを生成する場合は、Migrate to Containers が生成したアーティファクトとデプロイ記述子を使用して、そのワークロードの Windows コンテナ イメージをビルドします。ワークロードに Windows コンテナ イメージをビルドする方法については、Windows コンテナ イメージのビルドをご覧ください。
作業が完了したら、このドキュメントの先に進みます。
生成されたリソースと記述子を確認して検証する
Migrate to Containers でコンテナ アーティファクトとデプロイ記述子を生成したら、これらのアーティファクトと記述子を確認し、要件に合わせて更新します。コンテナ アーティファクトとデプロイ記述子の更新に必要な時間は、移行する VM ベースのワークロードの数と複雑さによって異なります。コンテナ アーティファクトとデプロイ記述子の確認方法については、生成されたデプロイ ファイル(Linux)の確認と Windows コンテナ イメージのビルドをご覧ください。たとえば、次の点を検討してください。
リソースと記述子の命名
- コンテナ イメージ記述子: Migrate to Containers で生成したコンテナ イメージ記述子を調べ、VM ベースのワークロードに関する要件を満たしていることを確認します。コンテナ イメージ記述子を更新する必要がある場合は、移行後のイメージの更新をご覧ください。たとえば、ワークロード コンテナ イメージレイヤと Migrate to Containers コンテナ イメージレイヤを更新できます。
- 環境変数とインスタンス メタデータ: ワークロードが環境変数またはインスタンス メタデータに依存する場合は、これらの値を ConfigMap で定義し、これらの ConfigMap を使用するように、ワークロードを実行する Pod を構成します。
- 名前空間とサービス名: Kubernetes は、名前空間とサービス名を使用してワークロードの DNS エントリを構成するサービス ディスカバリ メカニズムをサポートしています。ワークロードが DNS レコードに依存して他のワークロードを検出している場合は、デプロイ記述子内のすべての名前空間とサービスの名前を確認する必要があります。名前を確認したら、必要に応じて名前を調整します。ワークロードがサービス ディスカバリでホスト名に依存している場合は、そのホスト名が移行先の環境で適用されなくなるため、対応するサービスを作成する必要があります。
構成およびログのリソースと記述子
- アプリケーション レベルのロギング: Migrate to Containers では、特定のログメッセージが自動的に Cloud Logging に書き込まれます。追加のログを Cloud Logging に転送する必要がある場合は、Cloud Logging(Linux)へのロギングを構成すると Cloud Logging へのロギングを構成する(Windows)をご覧ください。
- ディスク、パーティション、マウント ポイントの構成: 移行されたワークロードは、ディスクとパーティションの構成が正しくない場合、起動に失敗する可能性があります。このため、ワークロードが想定するディスク、パーティション、マウント ポイントの構成を確認する必要があります。たとえば、ファイル システムのテーブル ファイルを評価して、すべてのファイル システムがマウント可能であり、ディスクに全体で一意の ID が構成されていることを確認します。ワークロードで NFS マウントが必要な場合は、生成されたデプロイ記述子でワークロードを構成します。永続ボリュームで管理していないボリュームがワークロードで必要な場合は、外部ボリュームのマウントで追加マウントのガイダンスをご確認ください。
- ホストファイル: ワークロードが特定のホストファイルで特定のホストを構成する必要がある場合、HostAliases を構成して、ワークロードを実行する Pod のホストファイルにエントリを追加できます。
ポリシーおよびプロファイルのリソースと記述子
- Windows ワークロードのアクセス制御リスト(ACL): Windows コンテナは Windows コンテナ イメージのビルド時の ACL の設定をサポートしていません。このため、Migrate to Containers は、カスタマイズされた Windows ACL を移行しません。Windows ワークロードをカスタマイズする必要がある場合は、ACL の設定をご覧ください。
- AppArmor プロファイル: ワークロードに必要なすべての AppArmor プロファイルがターゲット環境で利用可能であることを確認します。利用可能でないと、移行されたワークロードが起動しない可能性があります。
- ネットワーク ポリシー: ワークロードを実行している Pod へのアクセスを制限する必要がある場合は、NetworkPolicies を使用して Pod との間のトラフィック フローを制御できます。
その他のリソースと記述子
- システム サービスの無効化: Migrate to Containers は、移行先の環境で不要なシステム サービスを自動的に無効化します。また、移行計画のカスタマイズ時に無効にしたサービスも無効になります。これらのシステム サービスにワークロードが依存している場合、これらの依存関係を回避するために、追加の作業が必要になることがあります。Migrate to Containers が無効にするシステム サービスの詳細については、不要なサービスを無効にするをご覧ください。
- ダウンタイムとカットオーバー期間: ワークロードの高可用性要件を評価します。ワークロードでダウンタイムが発生した場合は、冗長性とカットオーバーの時間枠を計画します。たとえば、VM のクラスタを移行する場合は、クラスタを分割して移行後に組み立てなおす必要があります。
作業が完了したら、このドキュメントの先に進みます。
コンテナ化されたワークロードをデプロイして検証する
ワークロードのデプロイ記述子の準備ができたら、次の手順を行います。
- 移行したワークロードを移行先の環境にデプロイします。移行された Linux および Windows ワークロードのデプロイ方法については、Linux ワークロードをターゲット クラスタにデプロイするとターゲット クラスタに Windows ワークロードをデプロイするをご覧ください。
移行したワークロードをモニタリングします。移行した Linux ワークロードと Windows ワークロードをデプロイすると、パフォーマンスに関する情報を収集できます。詳細については、移行されたワークロードのモニタリング(Linux)と移行されたワークロードのモニタリング(Windows)をご覧ください。
移行したワークロードを統合します。移行先の環境にデプロイしたワークロードが動作するようになったら、ワークロードの統合を行います。ワークロードのコンテナ アーティファクトの生成プロセスとデプロイ プロセスをデプロイ プロセスとパイプラインに統合します。現在、自動デプロイ プロセスを実施しておらず、ワークロードを手動でデプロイする場合は、手動デプロイから自動デプロイに移行することをおすすめします。
作業が完了したら、このドキュメントの先に進みます。
Migrate to Containers をアンインストールする
Migrate to Containers でのワークロード移行の完了後は、次のことをおすすめします。
- 移行中に Migrate to Containers で生成されたアーティファクトへのすべての参照が存在することを確認します。
- Migrate to Containers をアンインストールします。
作業が完了したら、このドキュメントの先に進みます。
移行後に環境を最適化する
環境の最適化が移行の最終段階です。GKE と GKE Enterprise 環境を最適化するには、環境の最適化をご覧ください。
次のステップ
- Google Cloud への移行に関するスタートガイドと Migrate to Containers を確認する。
- Migrate to Containers に関する一般的な問題のトラブルシューティング方法を学習する。
- Migrate to Containers リリースノートで、新機能または更新された機能、バグ修正、既知の問題、非推奨になった機能を確認する。
- 手動デプロイからコンテナ化されたデプロイに自動的に移行する方法を学習する。
- コンテナの構築と操作のベスト プラクティスについて学習する。
- GKE ネットワーキングのベスト プラクティスを確認する。
- クラスタのセキュリティを強化する方法を把握し、GKE のセキュリティの概要を確認する。
- 費用を最適化した Kubernetes アプリケーションを GKE で実行するためのベスト プラクティスを確認する。
- Google Cloud に関するリファレンス アーキテクチャ、図、ベスト プラクティスを確認する。Cloud アーキテクチャ センター をご覧ください。