次の方法で共有


ASP.NET アプリのコンテナー化と Azure App Service への移行

この記事では、Azure Migrate App Containerization ツールを使用して、ASP.NET アプリケーションをコンテナー化し、それらを Azure App Service に移行する方法について説明します。 このコンテナ化プロセスでは、コードベースへのアクセスは不要で、既存のアプリケーションを簡単な方法でコンテナ化できます。 このツールは、サーバー上のアプリケーションの実行状態を使用して動作し、アプリケーション コンポーネントを判別します。 次に、それらをコンテナー イメージにパッケージ化することを支援します。 その後、コンテナ化されたアプリケーションを、Azure App Service にデプロイできます。

Azure Migrate App Containerization ツールは、現時点で以下をサポートしています。

App Containerization ツールを使用すると、次のことができます。

  • アプリケーション コンポーネントを検出するします。 このツールは、ASP.NET アプリケーションが実行されているアプリケーション サーバーにリモート接続し、アプリケーション コンポーネントを検出します。 これにより、アプリケーションのコンテナー イメージを作成するために使用できる Dockerfile が作成されます。
  • コンテナー イメージをビルドします。 Dockerfile を検査し、アプリケーションの要件に基づいてさらにカスタマイズし、それを使用してアプリケーション コンテナー イメージをビルドできます。 アプリケーション コンテナー イメージは、指定した Azure コンテナー レジストリにプッシュされます。
  • Azure App Service にデプロイします。 その後、ツールにより、コンテナ化されたアプリケーションを Azure App Service にデプロイするために必要なデプロイ ファイルが生成されます。

注意

Azure Migrate App Containerization ツールを使用すると、アプリケーション サーバー上の特定のアプリケーションの種類 (ASP.NET と Apache Tomcat 上の Java Web アプリ) とそのコンポーネントを検出できます。 オンプレミスのコンピューターで実行されているサーバーとアプリ、ロール、および機能のインベントリを検出するには、 Azure Migrate Discovery and Assessment ツールを使用します。

すべてのアプリケーションが、大幅な再設計なしでコンテナーに直接シフトすることの恩恵を受けるわけではありません。 ただし、既存のアプリを書き換えずにコンテナーに移動した場合、次ような利点があります。

  • インフラストラクチャ使用率の向上。 コンテナーを使用すると、複数のアプリケーションがリソースを共有でき、同じインフラストラクチャ上でホストされるようにできます。 これにより、インフラストラクチャを統合し、使用率を向上させることができます。
  • 簡略化された管理。 AKS や App Service などの最新のマネージド プラットフォームでアプリケーションをホストすることにより、管理作業を簡略化できます。 この簡略化は、所有するインフラストラクチャでこれまで実行していた、インフラストラクチャのメンテナンスおよび管理のプロセスを廃止または削減することで実現できます。
  • アプリケーションの移植性。 コンテナー仕様の形式およびプラットフォームの導入と標準化が進んだことで、アプリケーションの移植性は問題ではなくなりました。
  • DevOps を使用して最新の管理を導入します。 コンテナーを使用すると、管理、セキュリティ、DevOps への移行のために最新の手法を導入し、標準とすることができます。

このチュートリアルで学習する内容は次のとおりです。

  • Azure アカウントを設定します。
  • Azure Migrate App Containerization ツールをインストールします。
  • ASP.NET アプリケーションを検出します。
  • コンテナー イメージをビルドします。
  • コンテナー化されたアプリケーションを App Service にデプロイします。

注意

チュートリアルでは、概念実証をすばやく設定できるように、シナリオの最も簡単なデプロイ パスを示します。 チュートリアルでは、可能であれば既定のオプションが使用され、設定とパスがすべて示されているわけではありません。

前提条件

このため、このチュートリアルの前に、以下を行う必要があります。

要件 細部
ツールをインストールするマシンを特定する Azure Migrate App Containerization ツールをインストールして実行するには、Windows マシンが必要です。 Windows マシンでは、サーバー (Windows Server 2016 以降) またはクライアント (Windows 10) オペレーティング システムを実行できます。 (このツールはデスクトップで実行できます。)

ツールが実行される Windows マシンには、コンテナ化する ASP.NET アプリケーションをホストするサーバーまたは仮想マシンへのネットワーク接続が必要です。

Azure Migrate App Containerization ツールが実行される Windows マシンで 6 GB が使用可能であることを確認します。 この領域は、アプリケーション成果物の格納用です。

Windows コンピューターは、直接またはプロキシ経由でインターネットにアクセスできる必要があります。

App Containerization ツールとアプリケーション サーバーが実行されるマシンに Microsoft Web 配置ツールをインストールします (まだインストールされていない場合)。 ツールをダウンロードできます。
アプリケーション サーバー アプリケーション サーバーで PowerShell リモート処理を有効にします。アプリケーション サーバーにサインインし、 次の手順に従って PowerShell リモート処理を有効にします

PowerShell 5.1 がアプリケーション サーバーにインストールされていることを確認します。 アプリケーション・サーバーへの WMF 5.1 のインストールと構成 に関する記事の手順に従います。

App Containerization ツールとアプリケーション サーバーが実行されるマシンに Microsoft Web 配置ツールをインストールします (まだインストールされていない場合)。 ツールをダウンロードできます。
ASP.NET アプリケーション このツールでは現在、次のものがサポートされています。
  • .NET Framework 3.5 以降を使用している ASP.NET アプリケーション。
  • Windows Server 2012 R2 以降を実行しているアプリケーション サーバー。 (アプリケーション サーバーは PowerShell 5.1 を実行している必要があります。)
  • インターネット インフォメーション サービス 7.5 以降で実行されているアプリケーション。


このツールでは現在、次のものはサポートされていません。
  • Windows 認証を必要とするアプリケーション。 (現在、AKS では gMSA がサポートされていません。)
  • インターネット インフォメーション サービスの外部でホストされている他の Windows サービスに依存するアプリケーション。

Azure ユーザー アカウントを準備する

Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。

サブスクリプションが設定されたら、以下を備えた Azure ユーザー アカウントが必要になります。

  • Azure サブスクリプションの所有者アクセス許可。
  • Microsoft Entra アプリを登録するためのアクセス許可。

無料の Azure アカウントを作成したばかりであれば、自分のサブスクリプションの所有者になっています。 サブスクリプションの所有者でない場合は、所有者と協力して、次のようにアクセス許可を割り当てます。

  1. Azure portal で、"サブスクリプション" を検索します。[ サービス] で、[サブスクリプション] を選択 します

    Azure サブスクリプションを検索するための検索ボックスを示すスクリーンショット。

  2. [ サブスクリプション ] ページで、Azure Migrate プロジェクトを作成するサブスクリプションを選択します。

  3. サブスクリプションの左側のウィンドウで、[ アクセス制御 (IAM)] を選択します。

  4. [ アクセスの確認 ] タブで、関連するユーザー アカウントを検索します。

  5. [ ロールの割り当ての追加] で、[ 追加] を選択します。

    アクセスを確認してロールを割り当てるユーザー アカウントの検索を示すスクリーンショット。

  6. [ ロールの割り当ての追加] ページで、 所有者 ロールを選択し、アカウント (この例では azmigrateuser ) を選択します。 次に、[ 保存] を選択します。

    [ロールの割り当ての追加] ページを示すスクリーンショット。

    Azure アカウントには、Microsoft Entra アプリを登録するためのアクセス許可も必要です。

  7. Azure portal で、 Microsoft Entra ID>Users>User Settings に移動します。

  8. [ユーザー設定] で、Microsoft Entra ユーザーがアプリケーションを登録できることを確認します。 (このオプションは既定で [はい ] に設定されています)。

    [ユーザー設定] ページを示すスクリーンショット。

    重要

    Microsoft は、アクセス許可が最も少ないロールを使用することを推奨しています。 これにより、組織のセキュリティが向上します。 グローバル管理者は高い特権を持つロールであり、既存のロールを使用できない場合の緊急シナリオに限定する必要があります。

  9. [アプリの登録] オプションが [いいえ] に設定されている場合は、テナント/グローバル管理者に必要なアクセス許可を割り当てるように依頼します。 また、テナント/グローバル管理者は、アプリケーション開発者ロールをアカウントに割り当てて、Microsoft Entra アプリの登録を許可することもできます。 詳細については、「 ユーザーへのロールの割り当て」を参照してください。

Azure Migrate App Containerization ツールをダウンロードしてインストールする

  1. Windows マシンに Azure Migrate App Containerization インストーラーをダウンロード します。

  2. 管理者モードで PowerShell を開き、PowerShell ディレクトリをインストーラーが格納されているフォルダーに変更します。

  3. このコマンドを使用して、インストール スクリプトを実行します。

    .\AppContainerizationInstaller.ps1
    

注意

Windows Server 2022 の場合は、135 行目を編集し、機能一覧から PowerShell-ISE を削除します。これはサポートされなくなったためです。

App Containerization ツールを開く

  1. App Containerization ツールが実行されている Windows マシンに接続できるマシンでブラウザーを開きます。 ツールの URL: https://<マシン名または IP アドレス>: 44369 に移動します。

    または、アプリのショートカットを使用して、デスクトップからアプリを開くこともできます。

  2. 接続がプライベートではないことを示す警告が表示された場合は、[ 詳細設定 ] を選択して Web サイトに進みます。 この警告が表示されるのは、Web インターフェイスで自己署名の TLS/SSL 証明書が使用されているためです。

  3. サインイン画面で、マシンのローカル管理者アカウントを使用してサインインします。

  4. コンテナー化 ASP.NET アプリケーションの種類として Web アプリ を選択します。

  5. ターゲット Azure サービス の一覧で、Azure App Service 上のコンテナー を選択します。

    アプリケーションの種類とターゲット リストを示すスクリーンショット。

ツールの前提条件を満たす

  1. ライセンス条項に同意し、サード パーティの情報を確認します。
  2. ツール Web アプリの 前提条件の設定で、次の手順を実行します。
    • 接続あり。 ツールによって、Windows マシンがインターネットにアクセスできるかどうかがチェックされます。 コンピューターがプロキシを使用する場合:

      1. [ プロキシのセットアップ ] を選択して、プロキシ アドレス (形式は IP アドレスまたは FQDN) とリッスン ポートを指定します。

      2. プロキシで認証が必要な場合は、資格情報を指定します。

      3. プロキシの詳細を追加した場合、またはプロキシまたは認証を無効にした場合は、[ 保存] を選択して接続チェックを再度トリガーします。

      サポートされるのは HTTP プロキシのみです。

    • 更新プログラムをインストールします。 ツールによって、最新の更新プログラムが自動的にチェックされ、インストールされます。 最新バージョンのツールを手動でインストールすることもできます。

    • Microsoft Web 配置ツールをインストールします。 ツールによって、Azure Migrate App Containerization ツールが実行されている Windows マシンに Microsoft Web 配置ツールがインストールされているかどうかがチェックされます。

    • PowerShell リモート処理を有効にします。 ツールによって、コンテナ化する ASP.NET アプリケーションが実行されているアプリケーション サーバーで PowerShell リモート処理が有効になっていることを確認するようプロンプトが表示されます。

Azure へのサインイン

  1. [ サインイン ] を選択して Azure アカウントにサインインします。

    Azure で認証するには、デバイス コードが必要です。 [ サインイン ] を選択すると、デバイス コードを含むウィンドウが開きます。 ウィンドウが表示されない場合は、ブラウザーでポップアップ ブロックを無効にしてあることを確認します。

  2. [ コードのコピー] と [サインイン ] を選択してデバイス コードをコピーし、新しいブラウザー タブで Azure サインイン プロンプトを開きます。

    [Azure サインイン] ウィンドウのデバイス コードを示すスクリーンショット。

  3. 新しいタブで、デバイス コードを貼り付け、Azure アカウントの資格情報を使用してサインインを完了します。 サインインしたら、ブラウザー タブを閉じて、App Containerization ツールの Web インターフェイスに戻ることができます。

  4. 使用する Azure テナント を選択します。

  5. 使用する Azure サブスクリプション を指定します。

ASP.NET アプリケーションを検出する

App Containerization ツールは、指定された資格情報を使用してアプリケーション サーバーにリモート接続し、アプリケーション サーバーでホストされている ASP.NET アプリケーションの検出を試みます。

  1. サーバー IP アドレス/FQDN と、アプリケーション検出のためにサーバーにリモート接続するために使用する ASP.NET アプリケーションを実行しているサーバーの資格情報を指定します。

    • 指定する資格情報は、アプリケーション サーバーのローカル管理者 (Windows) のものである必要があります。
    • ドメイン アカウントの場合 (ユーザーはアプリケーション サーバーの管理者である必要があります)、<ドメイン\ユーザー名> の形式で、ユーザー名の前にドメイン名をプレフィックスとして付加します。
    • ローカル アカウントの場合 (ユーザーはアプリケーション サーバーの管理者である必要があります)、<ホスト名\ユーザー名> の形式で、ユーザー名の前にホスト名をプレフィックスとして付加します。
    • アプリケーションの検出は、5 台のサーバーに対して同時に実行できます。
  2. [ 検証 ] を選択して、ツールを実行しているコンピューターからアプリケーション サーバーに到達可能であること、および資格情報が有効であることを確認します。 検証が成功すると、[ 状態] 列に状態が [マップ済み] として表示されます。

    サーバーの状態がマップ済みであることを示すスクリーンショット。

  3. [ 続行] を選択して、選択したアプリケーション サーバーでアプリケーションの検出を開始します。

  4. アプリケーションの検出が完了したら、コンテナ化するアプリケーションを選択します。

    検出された ASP.NET アプリケーションを示すスクリーンショット。

  5. 選択した各アプリケーションのターゲット コンテナーの名前を指定します。 コンテナー名は <名前:タグ として指定します。ここで、"タグ" はコンテナー イメージに使用されます。> たとえば、ターゲット コンテナー名を appname:v1 として指定できます。

アプリケーションの構成をパラメーター化する

構成をパラメーター化すると、デプロイ時のパラメーターとして使用できます。 パラメーター化により、設定をコンテナー イメージ内の特定の値にハードコーディングするのではなく、アプリケーションのデプロイ時に構成できます。 たとえば、このオプションは、データベース接続文字列などのパラメーターに便利です。

  1. アプリ構成を選択して、検出された構成を確認します。

  2. パラメーター化するパラメーターを選択し、[ 適用] を選択します。

    検出された構成の一覧を示すスクリーンショット。

ファイル システムの依存関係を外部化する

アプリケーションで使用する他のフォルダーを追加できます。 それらをコンテナー イメージの一部にするか、Azure ファイル共有を使用して永続ストレージに外部化するかを指定します。 外部永続ストレージの使用は、コンテナーの外部に状態を保存する、またはファイル システムに他の静的コンテンツを保存するステートフル アプリケーションに適しています。

  1. [アプリケーション フォルダー] で [編集] を選択して、検出されたアプリケーション フォルダーを確認します。 これらのフォルダーは、アプリケーションに必要な必須の成果物として識別されています。 これらはコンテナー イメージにコピーされます。

  2. [ フォルダーの追加] を選択し、追加するフォルダー パスを指定します。

  3. 複数のフォルダーを同じボリュームに追加するには、値をコンマで区切ります。

  4. 永続ストレージ上のコンテナーの外部にフォルダーを格納する場合は、ストレージ オプションとして Azure ファイル共有 を選択します。

  5. アプリケーション フォルダーを確認した後、[ 保存] を 選択します。

    [アプリケーション フォルダーの編集] ウィンドウを示すスクリーンショット。

  6. [ 続行] を選択して、コンテナー イメージのビルド フェーズに進みます。

コンテナー イメージの構築

  1. ドロップダウン リストで、アプリのコンテナー イメージをビルドして格納するために使用する Azure コンテナー レジストリ を選択します。 既存の Azure コンテナー レジストリを使用するか、[新しいレジストリの作成] を選択して 新しいレジストリを作成できます。

    [イメージのビルド] ウィンドウを示すスクリーンショット。

    注意

    管理者ユーザー アカウントが有効になっている Azure コンテナー レジストリのみが表示されます。 Azure コンテナー レジストリから Azure App Service にイメージをデプロイするには、管理者ユーザー アカウントが現在必要です。 詳細については、「 Azure コンテナー レジストリを使用した認証」を参照してください。

  2. 選択した各アプリケーションのコンテナー イメージをビルドするために必要な Dockerfile がビルド ステップの開始時に生成されます。 [ 確認 ] を選択して Dockerfile を確認します。 ビルド プロセスを開始する前に、確認ステップで、Dockerfile に必要なカスタマイズを追加して変更を保存することもできます。

  3. イメージをビルドするアプリケーションを選択し、[ ビルド] を選択します。 [ビルド] を選択すると、アプリケーションごとにコンテナー イメージのビルドが開始されます。 このツールはビルドの状態を監視します。ビルドが終了したら、次の手順に進むことができます。

  4. ビルドの進行状況を監視する場合は、状態列 の下にある [ビルド中 ] を選択します。 このリンクは、ビルド プロセスをトリガーした数分後にアクティブになります。

  5. ビルドが完了したら、[ 続行 ] を選択してデプロイ設定を指定します。

    [確認] リンク、コンテナー イメージの状態、および [ビルドと続行] ボタンを示すスクリーンショット。

コンテナー化されたアプリを Azure App Service にデプロイする

コンテナー イメージがビルドされたら、次の手順では、 アプリケーションをコンテナーとして Azure App Service にデプロイします。

  1. アプリケーションで使用する Azure App Service プランを選択します。

    App Service プランがない場合、または使用する新しい App Service プランを作成する場合は、[ 新しい App Service プランの作成] を選択して作成できます。

  2. App Service プランを選択した後、[ 続行] を選択します。

  3. アプリケーション構成をパラメーター化した場合は、アプリケーションに使用するシークレット ストアを指定します。 アプリケーション シークレットを管理するには、Azure Key Vault または App Service アプリケーション設定を選択できます。 詳細については、「接続文字列の 構成」を参照してください。

    • シークレットを管理するために App Service アプリケーション設定を選択した場合は、[ 続行] を選択します。
    • Azure Key Vault を使用してアプリケーション シークレットを管理する場合は、使用するキー コンテナーを指定します。
      • Azure Key Vault がない場合、または新しいキー コンテナーを作成する場合は、[ 新しい Azure Key Vault の作成] を選択して作成できます。
      • ツールにより、キー コンテナーを使用してシークレットを管理するために必要なアクセス許可が自動的に割り当てられます。
  4. フォルダーをさらに追加し、永続ストレージとして Azure ファイル共有オプションを選択した場合は、デプロイ中に App Containerization ツールで使用される Azure ファイル共有を指定します。 Azure Files 用に構成したアプリケーション フォルダーがツールによってコピーされ、デプロイ中にアプリケーション コンテナーにマウントされます。 

    Azure ファイル共有がない場合、または新しい Azure ファイル共有を作成する場合は、[ 新しいストレージ アカウントとファイル共有の作成] を選択して作成できます。

  5. ここで、アプリケーションのデプロイ構成を指定する必要があります。 [ 構成] を 選択して、アプリケーションのデプロイをカスタマイズします。 構成ステップでは、こちらのカスタマイズを行うことができます。

    • 名前。 アプリケーションの一意のアプリ名を指定します。 この名前は、アプリケーションの URL を生成するために使用されます。 また、デプロイの一部として作成された他のリソースのプレフィックスとしても使用されます。
    • アプリケーション構成。 パラメーター化されたアプリケーションの構成について、現在のデプロイに使用する値を指定します。
    • ストレージの構成。 永続ストレージ用に構成されたアプリケーション フォルダーの情報を確認します。

    デプロイ構成を示すスクリーンショット。

  6. アプリケーションのデプロイ構成を保存すると、ツールによって、アプリケーションの Kubernetes デプロイ YAML が生成されます。

    • [ 確認 ] を選択して、アプリケーションのデプロイ構成を確認します。

    • デプロイするアプリケーションを選択します。

    • [ デプロイ] を選択して、選択したアプリケーションのデプロイを開始します。

      [デプロイ] ボタンを示すスクリーンショット。

    • アプリケーションがデプロイされたら、[ デプロイの状態 ] 列を選択して、アプリケーション用にデプロイされたリソースを追跡できます。

問題のトラブルシューティング

App Containerization ツールに関する問題をトラブルシューティングするには、ツールが実行されている Windows マシン上のログ ファイルを調べます。 ツールのログ ファイルは 、C:\ProgramData\Microsoft Azure Migrate App Containerization\Logs にあります。

次のステップ