ASP.NET Web アプリの Azure Kubernetes Service へのモダン化 (プレビュー)
この記事では、Azure Migrate を使用して、ASP.NET Web アプリを Azure Kubernetes Service に大規模に移行する方法について説明します。 現時点では、このフローでは、VMware で実行されている ASP.NET Web アプリのみがサポートされています。 その他の環境では、次の手順に従います。
Note
チュートリアルでは、概念実証をすばやく設定できるように、シナリオの最も簡単なデプロイ パスを示します。 チュートリアルでは、可能な限り既定のオプションを使用しており、使用可能な設定とパスをすべて示しているわけではありません。
このチュートリアルでは、次の方法について説明します。
- Azure Migrate の統合フローを使用して、Azure Kubernetes Service への移行のために ASP.NET Web アプリを大規模に選択して準備します。
- アプリケーションを実行およびレプリケートするアプリケーション インスタンスの数などのターゲット設定を構成します。
- テスト移行を実行して、アプリケーションが正しく起動することを確認します。
- AKS へのアプリケーションの完全な移行を実行します。
前提条件
このチュートリアルを始める前に、次のことに対処する必要があります。
- Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。
- 最初のチュートリアルを実施して、VMware 環境で実行されている Web アプリを検出します。
- 既存のプロジェクトに移動するか、新しいプロジェクトを作成します。
制限事項
- Microsoft .NET Framework 3.5 以降を使用して ASP.NET アプリケーションを移行できます。
- Windows Server 2012 R2 以降が実行されるアプリケーション サーバーを移行できます (アプリケーション サーバーで、PowerShell バージョン 5.1 が実行されている必要があります)。
- アプリケーションは、インターネット インフォメーション サービス (IIS) 7.5 以降で実行されている必要があります。
レプリケーションを有効にする
評価が実施されると、Azure Migrate の統合移行フローを使用して Web アプリを移行できます。 このプロセスの最初の手順では、Web アプリのレプリケーションを構成して開始します。
意図を指定する
Azure Migrate プロジェクト >[サーバー、データベース、Web アプリ]>[移行ツール]>[移行およびモダン化] に移動し、[レプリケート] を選択します。
[意図の指定] タブ >[移行する内容] で、ドロップダウンから [ASP.NET Web アプリ] を選択します。
[移行先] で、[Azure Kubernetes Service (AKS)] を選択します。
[仮想化] の種類で、 [VMware vSphere] を選択します。
[オンプレミス アプライアンス] で、vSphere で目的の Web アプリを検出したアプライアンスを選択します。
[続行] を選択します。
検出されたアプリから選択する
[Web アプリのレプリケート>] で、環境で検出された ASP.NET アプリの一覧を確認できます。
レプリケートする必要がある 1 つ以上のアプリケーションを選択します。
[モダン化の状態] 列は、AKS で実行するアプリケーションの準備状況を示します。 これには、[準備完了]、[エラー]、[レプリケーション進行中] のいずれかの値を使用できます。
アプリケーションを選択し、[アプリの構成] リンクを選択して [アプリケーションの構成] タブを開きます。これにより、検出された構成ファイルから検出された属性の一覧が提供されます。 必要な属性値を入力し、[保存] を選択します。 これらの構成は、ターゲット クラスターにシークレットとして直接格納されるか、Azure Key Vault を使用してマウントできます。 これは、詳細設定で構成できます。
アプリケーションを選択し、 [アプリ ディレクトリ] リンクを選択して [アプリケーション ディレクトリ] タブを開きます。アプリケーションを実行するためにコピーする必要があるフォルダー/ファイルへのパスを指定し、[保存] を選択します。 ドロップダウンから選択したオプションに基づいて、これらの成果物はコンテナー イメージに直接コピーされるか、Azure ファイル共有を介してクラスター上の永続ボリュームとしてマウントされます。 永続ボリュームを選択した場合は、詳細設定でターゲットを構成できます。
[次へ] をクリックします。
Note
アプリ構成とアプリ ディレクトリのソース パスと属性値は、3,000 文字以下にする必要があります。 これは、それぞれ約 200 文字の約 15 エントリ (構成とディレクトリの両方を含む) にほぼ変換できます。
ターゲット設定の構成
[ターゲットのレプリケート>] 設定では、アプリケーションの移行先となるターゲットを構成できます。
- アプリ コンテナー イメージをプッシュするサブスクリプション、リソース グループ、およびコンテナー レジストリ リソースを選択します。
- アプリをデプロイするサブスクリプション、リソース グループ、AKS クラスター リソースを選択します。
- [次へ] を選択します。
Note
Windows ノードを持つ AKS クラスターのみが一覧表示されます。
展開の設定を構成する
[デプロイのレプリケート>] 設定では、AKS クラスターでアプリケーションを構成できます。
- 既定値は、アプリの検出に基づいて指定されます。
- [レプリカ] オプションで、各アプリのアプリ インスタンスの数を選択します。
- アプリにインターネット経由でアクセスする必要がある場合は、[ロード バランサー] オプションで [外部] を選択します。 [内部] が選択されている場合、アプリには AKS クラスターの仮想ネットワーク内でのみアクセスできます。
- [次へ] を選択します。
上級設定を構成します
[レプリケート]>[Web アプリ] で 1 つ以上のアプリのアプリ構成またはディレクトリが更新された場合は、必要な追加の構成を提供するために [レプリケート]>[詳細] が使用されます。
- アプリケーション構成が指定されている場合は、それらをネイティブ Kubernetes シークレットとして格納するか、シークレット ストア CSI ドライバーを使用して Azure Key Vault に格納するかを選択します。 ターゲット クラスターでシークレット ストア ドライバー アドオンが有効になっていることを確認します。
- アプリケーション ディレクトリに永続的なストレージ オプションが指定されている場合は、Azure ファイル共有を選択してこれらのファイルを格納します。
- [次へ] を選択します。
レプリケーションを確認して開始する
[レプリケート] タブの右側のタブに移動して、選択内容を確認し、その他の必要な変更を加えます。確認後、[レプリケート] を選択します。
移行を準備する
レプリケーションを開始すると、Azure Migrate によって、プロジェクトからアクセスできるレプリケーション ジョブが作成されます。
ターゲット リソースに移動する
Azure Migrate プロジェクト >[サーバー、データベース、Web アプリ]>[移行ツール]>[移行およびモダン化] に移動し、[概要] を選択します。
[Azure Migrate: Server Migration ハブ] >[モダン化 (プレビュー)]>[ジョブ] を選択します。
レプリケーション ターゲットとして [Azure Kubernetes Service (AKS)] を選択します。 Azure Migrate では、レプリケートされた ASP.NET アプリごとに 1 つのレプリケーション ジョブが作成されます。 [ワークロードのデプロイ] の種類の [ワークロードのデプロイの作成または更新] ジョブを選択します。
[ターゲット] リソースを選択します。 移行前のすべての手順は、ここで構成できます。
レプリケーションが完了すると、レプリケーションの状態 は [完了] になり、全体的な [状態] は [イメージのビルド保留中] になります。
コンテナー イメージと Kubernetes マニフェストを確認する
[ターゲット設定] タブで、Docker ファイルと Kubernetes マニフェストへのリンクが提供されます。
[Docker ファイル] 確認リンクを選択してエディターを開きます。 確認し、必要に応じて変更します。 [保存] を選択します。
[デプロイ仕様] 確認リンクを選択してエディターを開きます。 これには、
StatefulSet
、Service
、ServiceAccount
など、デプロイされるすべてのリソースが記載された Kubernetes マニフェスト ファイルが含まれています。確認し、必要に応じて変更します。 [保存] を選択します。[概要] タブで、[コンテナー イメージのビルド] を選択してコンテナー イメージをビルドし、指定されたコンテナー レジストリにプッシュします。
イメージがビルドされると、全体的な [状態] が [移行準備完了] に変わります。
テスト移行を実行する
コンテナー イメージの準備ができたら、テスト移行を実行して、アプリケーションが AKS で正しく起動することを確認します。
- [概要] タブで [テスト移行] を選択し、[はい] を選択して確認します。
- テスト移行が完了したら、ワークロードが AKS クラスターで実行されていることを確認します。 レプリケーション プロセス中に外部ロード バランサー オプションを選択した場合は、パブリック IP アドレスが割り当てられた種類
loadbalancer
のサービスを介して、アプリケーションをインターネットに公開する必要があります。 - アプリケーションが動作していることを確認したら、[テスト移行のクリーンアップ] を選択してテスト移行をクリーンアップします。
テスト移行が失敗した場合:
[Azure Migrate: Server Migration ハブ] >[モダン化 (プレビュー)]>[ジョブ] に移動します。
失敗した [テスト移行の開始] ジョブを選択します。
失敗したタスクのリンクを選択して、考えられる失敗の原因と推奨事項を確認します。
AKS にアプリケーションを移行する
ついにアプリケーションを移行する準備ができました。
[概要] タブで [移行] を選択し、[はい] を選択して確認します。
テスト移行のワークフローと同様に、ワークロードが AKS クラスターで実行されていることを確認します。
これで、アプリケーションが正常に移行されました。 アプライアンスでもう一度検出し、移行に使用できるようにする場合は、[移行の完了] を選択します。
次の手順
アプリケーションを AKS に正常に移行したら、次の記事を調べてクラウド用アプリを最適化できます。
- Azure Pipelines、GitHub Actions、または GitOps を使用して CI/CD を設定します。
- Azure Monitor を使用して、AKS とアプリの正常性とパフォーマンスを監視します。
- Microsoft Defender for Containers を使用して、AKS クラスターとコンテナーのセキュリティ体制を強化します。
- Windows Dockerfile を最適化します。
- AKS でアプリをビルドおよび管理するためのベスト プラクティスを確認して実装します。