Java Web アプリのコンテナ化と Azure Kubernetes Service への移行
[アーティクル] 2025/01/01
15 人の共同作成者
フィードバック
この記事の内容
前提条件
Azure ユーザー アカウントを準備する
Azure Migrate: App Containerization ツールをダウンロードしてインストールする
App Containerization ツールを起動する
Azure へのサインイン
Java Web アプリケーションを検出する
コンテナー イメージの構築
コンテナー化されたアプリを AKS にデプロイする
生成されたアーティファクトをダウンロードする
問題のトラブルシューティング
次のステップ
さらに 7 個を表示
この記事では、Azure Migrate: App Containerization ツールを使用して、(Apache Tomcat で実行されている) Java Web アプリケーションをコンテナー化し、それらを Azure Kubernetes Service (AKS) に移行する方法について説明します。 コンテナー化プロセスでは、コードベースへのアクセスは不要で、既存のアプリケーションを簡単な方法でコンテナー化できます。 このツールは、サーバー上のアプリケーションの実行状態を使用して動作し、アプリケーション コンポーネントを判別し、それらをコンテナー イメージにパッケージ化できるように支援します。 コンテナー化されたアプリケーションは、Azure Kubernetes Service (AKS) にデプロイできます。
Azure Migrate: App Containerization ツールは、現時点で以下をサポートしています。
(Linux サーバーの) Apache Tomcat 上の Java Web アプリをコンテナー化し、それらを AKS の Linux コンテナーにデプロイする。
(Linux サーバーの) Apache Tomcat 上の Java Web アプリをコンテナー化し、それらを App Service の Linux コンテナーにデプロイする。
詳細情報
ASP.NET アプリをコンテナー化し、それらを AKS の Windows コンテナーにデプロイする。
詳細情報
ASP.NET アプリをコンテナー化し、それらを App Service の Windows コンテナーにデプロイする。
詳細情報
Azure Migrate: App Containerization ツールを使用すると、以下を行うことができます。
アプリケーションを検出する : このツールは、(Apache Tomcat で実行されている) Java Web アプリケーションを実行しているアプリケーション サーバーにリモート接続し、アプリケーション コンポーネントを検出します。 このツールにより、アプリケーションのコンテナー イメージを作成するために使用できる Dockerfile が作成されます。
コンテナー イメージをビルドする : Dockerfile を検査し、アプリケーションの要件に従ってさらにカスタマイズし、それを使用してアプリケーション コンテナー イメージをビルドできます。 アプリケーション コンテナー イメージは、指定した Azure Container Registry にプッシュされます。
Azure Kubernetes Service へのデプロイ : その後で、このツールはコンテナー化されたアプリケーションを Azure Kubernetes Service クラスターにデプロイするために必要な Kubernetes リソース定義の YAML ファイルを生成します。 YAML ファイルをカスタマイズし、それらを使用して AKS にアプリケーションをデプロイできます。
注意
Azure Migrate: App Containerization ツールを使用すると、アプリケーション サーバー上の特定のアプリケーションの種類 (ASP.NET と Apache Tomcat 上の Java Web アプリ) とそのコンポーネントを検出できます。 オンプレミスのマシンで実行されているサーバーと、アプリ、ロール、機能のインベントリを検出するには、Azure Migrate: 検出および評価機能を使用します。
詳細情報
アプリ コンテナ化ツールでは、"docs"、"examples"、"host-manager"、"manager"、"ROOT" など、一部の既定の Tomcat Web アプリの検出がスキップされます。
どのアプリケーションも大幅な再設計なしでコンテナーに直接シフトしてもメリットを得られませんが、既存のアプリを再記述せずにコンテナーに移動した場合、次のようなメリットがあります。
インフラストラクチャ使用率の向上: コンテナーを使用すると、複数のアプリケーションがリソースを共有でき、それらのアプリケーションを同じインフラストラクチャでホストできます。 これにより、インフラストラクチャを統合し、使用率を向上させることができます。
簡略化された管理: AKS や App Service などの最新のマネージド プラットフォームでアプリケーションをホストすることにより、管理作業を簡略化できます。 所有するインフラストラクチャでこれまで実行していた、インフラストラクチャの保守および管理のプロセスを廃止または削減することで、これを実現できます。
アプリケーションの移植性: コンテナー仕様の形式およびプラットフォームの導入と標準化が改善されたため、アプリケーションの移植性は問題になりません。
DevOps を使用した最新の管理の導入: 管理とセキュリティおよび DevOps への移行のための最新の手法を導入し、それらに基づいて標準化できます。
このチュートリアルで学習する内容は次のとおりです。
Azure アカウントを設定します。
Azure Migrate: App Containerization ツールをインストールします。
Java Web アプリケーションを検出します。
コンテナー イメージをビルドします。
コンテナー化されたアプリケーションを AKS にデプロイします。
注意
チュートリアルでは、概念実証をすばやく設定できるように、シナリオの最も簡単なデプロイ パスを示します。 チュートリアルではできるだけ既定のオプションを使用しており、使用可能な設定とパスをすべて示しているわけではありません。
このチュートリアルを始める前に、次の準備が必要です。
テーブルを展開する
要件
詳細
ツールをインストールするコンピューターを特定する
Azure Migrate: App Containerization ツールをインストールして実行する Windows コンピューター。 Windows コンピューターとして、サーバー (Windows Server 2016 以降) またはクライアント (Windows 10) オペレーティング システムを使用できます。これは、このツールをデスクトップでも実行できることを意味します。 ツールを実行する Windows マシンには、コンテナー化する Java Web アプリケーションをホストするサーバーまたは仮想マシンへのネットワーク接続が必要です。 アプリケーション アーティファクトを保存するために、Azure Migrate: App Containerization ツールを実行する Windows コンピューターで 6 GB の領域が使用可能であることを確認します。 Windows コンピューターは、直接またはプロキシ経由でインターネットにアクセスできる必要があります。
アプリケーション サーバー
- コンテナー化する Java アプリケーションを実行するサーバーのポート 22 で Secure Shell (SSH) 接続を有効にします。
Java Web アプリケーション
このツールは、現在以下をサポートしています。 - Tomcat 8 または Tomcat 9 で実行されるアプリケーション。 Ubuntu Linux 16.04/18.04/20.04、Debian 7/8、Red Hat Enterprise Linux 5/6/7 上のアプリケーション サーバー。 - Java 7 または Java 8 を使うアプリケーション。 これ以外のバージョンを使用している場合は、必要なバージョンをサポートするイメージを見つけて、dockerfile を変更してイメージを置き換えます このツールは現在以下をサポートしていません。 - 複数の Tomcat インスタンスを実行するアプリケーション サーバー
Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。
サブスクリプションがセットアップされたら、以下を備えた Azure ユーザー アカウントが必要になります。
Azure サブスクリプションの所有者アクセス許可
Microsoft Entra アプリを登録できるアクセス許可
無料の Azure アカウントを作成したばかりであれば、自分のサブスクリプションの所有者になっています。 サブスクリプションの所有者でない場合は、所有者と協力して、次のようにアクセス許可を割り当てます。
Azure portal で "サブスクリプション" を検索し、 [サービス] で [サブスクリプション] を選択します。
[サブスクリプション] ページで、Azure Migrate プロジェクトを作成するサブスクリプションを選択します。
[アクセス制御 (IAM)] を選択します。
[追加] >[ロールの割り当ての追加] を選択して、[ロールの割り当ての追加] ページを開きます。
次のロールを割り当てます。 詳細な手順については、「Azure portal を使用して Azure ロールを割り当てる 」を参照してください。
テーブルを展開する
設定
値
Role
所有者
アクセスの割り当て先
User
メンバー
azmigrateuser (この例では)
Azure アカウントには、Microsoft Entra アプリを登録できるアクセス許可 も必要です。
Azure portal で、[Microsoft Entra ID] >[ユーザー] >[ユーザー設定] に移動します。
[ユーザー設定] で、Microsoft Entra ユーザーがアプリケーションを登録できることを確認します (既定で [はい] に設定されています)。
重要
Microsoft は、アクセス許可が最も少ないロールを使用することを推奨しています。 これにより、組織のセキュリティが向上します。 グローバル管理者は高い特権を持つロールであり、既存のロールを使用できない場合の緊急シナリオに限定する必要があります。
[アプリの登録] 設定が [いいえ] に設定されている場合は、テナントまたはグローバル管理者に、必要なアクセス許可を割り当てるよう依頼してください。 テナントおよび全体管理者は、Microsoft Entra アプリの登録を許可する目的でアプリケーション開発者 ロールをアカウントに割り当てることもできます。
詳細情報 を参照してください。
Windows コンピューターで Azure Migrate: App Containerization のインストーラーをダウンロード します。
管理者モードで PowerShell を起動し、PowerShell ディレクトリをインストーラーが格納されているフォルダーに変更します。
コマンドを使用してインストール スクリプトを実行します。
.\AppContainerizationInstaller.ps1
注意
Windows Server 2022 の場合は、135 行目を編集し、機能一覧から PowerShell-ISE
を削除します。これはサポートされなくなったためです。
App Containerization ツールを実行する Windows マシンに接続できる任意のマシンでブラウザーを開き、ツールの URL: https://<コンピューター名または IP アドレス >: 44369 を開きます。
または、アプリのショートカットを選択して、デスクトップからアプリを開くこともできます。
接続がプライベートではないことを示す警告が表示された場合は、[詳細設定] を選択し、Web サイトに進むことを選択します。 この警告は、Web インターフェイスが自己署名の TLS/SSL 証明書を使用している場合に表示されます。
サインイン画面で、コンピューターのローカル管理者アカウントを使用してサインインします。
コンテナー化するアプリケーションの種類として [Java web apps on Tomcat](Tomcat 上の Java Web アプリ) を選択します。
ターゲットの Azure サービスを指定するには、 [Azure Kubernetes Service 上のコンテナー] を選択します。
ライセンス条項 に同意し、サード パーティの情報を確認します。
ツールの [web app]\(Web アプリ\) >[前提条件のセットアップ] で、次の手順を実行します。
接続 : ツールによって、Windows コンピューターがインターネットにアクセスできるかどうかがチェックされます。 コンピューターがプロキシを使用する場合:
[プロキシの設定] を選択し、プロキシ アドレス (IP アドレスまたは FQDN の形式) とリスニング ポートを指定します。
プロキシで認証が必要な場合は、資格情報を指定します。
サポートされるのは HTTP プロキシのみです。
プロキシの詳細を追加したか、プロキシまたは認証、あるいはその両方を無効にした場合は、[保存] を選択して接続チェックをもう一度トリガーします。
更新プログラムをインストールする : ツールによって、最新の更新プログラムが自動的にチェックされ、インストールされます。
こちら から、最新バージョンのツールを手動でインストールすることもできます。
Secure Shell (SSH) を有効にする : ツールによって、コンテナー化する Java Web アプリケーションを実行するアプリケーション サーバーで Secure Shell (SSH) が有効になっていることが確認され通知されます。
[サインイン] を選択して Azure アカウントにログインします。
Azure で認証するには、デバイス コードが必要です。 [サインイン] を選択すると、デバイス コードを含むモーダルが開きます。
[コードのコピーとサインイン] を選択してデバイス コードをコピーし、新しいブラウザー タブで Azure サインイン プロンプトを開きます。表示されない場合は、ブラウザーでポップアップ ブロックを無効にしてあることを確認します。
新しいタブで、デバイス コードを貼り付け、Azure アカウントの資格情報を使用してサインインを完了します。 サインインが完了したら、[ブラウザー] タブを閉じて、App Containerization ツールの Web インターフェイスに戻ることができます。
使用する Azure テナント を選択します。
使用する Azure サブスクリプション を指定します。
App Containerization ヘルパー ツールは、指定された資格情報を使用してアプリケーション サーバーにリモート接続し、アプリケーション サーバーでホストされている (Apache Tomcat で実行されている) Java Web アプリケーションを検出しようとします。
Java Web アプリケーションを実行するサーバーの IP アドレス/FQDN と資格情報 を指定します。アプリケーション検出のために、これらを使用してサーバーにリモート接続する必要があります。
指定する資格情報は、アプリケーション サーバーのルート アカウント (Linux) のものである必要があります。
ドメイン アカウントの場合 (ユーザーはアプリケーション サーバーの管理者である必要があります)、<ドメイン\ユーザー名> の形式で、ユーザー名の前にドメイン名をプレフィックスとして付加します。
アプリケーションの検出は、最大 5 台のサーバーに対して同時に実行できます。
[検証] を選択して、ツールが実行されているマシンからアプリケーション サーバーに到達できること、および資格情報が有効であることを確認します。 検証が正常に完了すると、状態列に [マップ済み] として状態が表示されます。
[続行] を選択して、選択したアプリケーション サーバーに対するアプリケーションの検出を開始します。
アプリケーションの検出が正常に完了した後、コンテナー化するアプリケーションの一覧を選択できます。
チェックボックスを使用して、コンテナー化するアプリケーションを選択します。
コンテナー名を指定する : 選択した各アプリケーションのターゲット コンテナーの名前を指定します。 コンテナー名は <名前:タグ > として指定する必要があります。タグはコンテナー イメージに使用されます。 たとえば、appname:v1 というターゲット コンテナー名を指定できます。
構成をパラメーター化すると、デプロイ時のパラメーターとしてその構成を使用できます。 これにより、アプリケーションをデプロイするときに、この設定を構成できます。これは、コンテナー イメージで設定を特定の値にハードコーディングするのとは対照的です。 たとえば、このオプションは、データベース接続文字列などのパラメーターに便利です。
[app configurations](アプリの構成) を選択して、検出された構成を確認します。
チェックボックスをオンにして、検出されたアプリケーションの構成をパラメーター化します。
パラメーター化する構成を選んだ後、[適用] を選びます。
アプリケーションで使用する他のフォルダーを追加できます。 それらをコンテナー イメージの一部にするか、Azure ファイル共有の永続ボリュームを使用して外部化するかを指定します。 永続ボリュームの使用は、コンテナーの外部に状態を保存する、またはファイル システムに他の静的コンテンツを保存するステートフル アプリケーションに適しています。
詳細情報
[アプリ フォルダー] の下の [編集] を選び、検出されたアプリケーション フォルダーを確認します。 検出されたアプリケーション フォルダーは、アプリケーションに必要な必須のアーティファクトとして識別され、コンテナー イメージにコピーされます。
[フォルダーの追加] を選んで、追加するフォルダーのパスを指定します。
同じボリュームに複数のフォルダーを追加するには、コンマ (,
) 区切りの値を指定します。
フォルダーを永続ボリューム上のコンテナーの外部に保存する場合は、ストレージ オプションとして [永続ボリューム] を選択します。
アプリケーション フォルダーを確認してから、[保存] を選択します。
[続行] を選択して、コンテナー イメージのビルド フェーズに進みます。
Azure Container Registry を選択する : ドロップダウンを使用して、アプリのコンテナー イメージのビルドおよび保存に使用する Azure Container Registry を選択します。 既存の Azure Container Registry を使用すること、または [Create new registry](新しいレジストリの作成) オプションを使用して、新しいレジストリを作成することができます。
Dockerfile を確認する : 選択した各アプリケーションのコンテナー イメージをビルドするために必要な Dockerfile がビルド ステップの開始時に生成されます。
[確認] を選択して、Dockerfile を確認します。 ビルド プロセスを開始する前に、確認ステップで、必要なカスタマイズを Dockerfile に追加して変更を保存することもできます。
Application Insights の構成 : コードをインストルメント化することなく、App Service で実行されている Java アプリの監視を有効にすることができます。 このツールを使用すると、Java スタンドアロン エージェントがコンテナー イメージの一部としてインストールされます。 Java エージェントがデプロイ中に構成されると、Application Insights での監視に使用できる、アプリケーションに関する多くの要求、依存関係、ログ、およびメトリックが自動的に収集されます。 このオプションは、すべての Java アプリケーションで既定で有効になっています。
ビルド プロセスをトリガーする : イメージをビルドするアプリケーションを選択し、[ビルド] を選択します。
[ビルド] を選択すると、各アプリケーションのコンテナー イメージのビルドが開始されます。 このツールはビルドの状態を継続的に監視します。ビルドが正常に完了したら、次の手順に進むことができます。
ビルドの状態を追跡する : 状態列の下にある [進行中のビルド] リンクを選択することによって、ビルド ステップの進行状況を監視することもできます。 ビルド プロセスをトリガーした後、リンクがアクティブになるまで数分かかります。
ビルドが完了したら、[続行] を選んでデプロイの設定を指定します。
コンテナー化されたアプリを AKS にデプロイする
コンテナー イメージがビルドされたら、次の手順は、Azure Kubernetes Service (AKS) にアプリケーションをコンテナーとしてデプロイすることです。
Azure Kubernetes Service クラスターを選択する : アプリケーションのデプロイ先の AKS クラスターを指定します。
選択する AKS クラスターには、Linux ノード プールが必要です。
イメージを保存するために選択した Azure Container Registry からイメージをプルできるように、クラスターを構成する必要があります。
AKS クラスターがないか、またはアプリケーションをデプロイする新しい AKS クラスターを作成する場合は、[新しい AKS クラスターの作成] を選択することによって、ツールから作成することを選択できます。
ツールを使用して作成される AKS クラスターは、Linux ノード プールを使用して作成されます。 クラスターは、前に作成した Azure Container Registry からイメージをプルできるように構成されます ([create new registry](新しいレジストリの作成) オプションが選択されている場合)。
AKS クラスターを選択してから、[続行] を選択します。
シークレット ストアと監視ワークスペースの指定 : アプリケーション構成のパラメーター化を選択した場合は、アプリケーションに使用するシークレット ストアを指定します。 アプリケーション シークレットの管理には、Azure Key Vault または Kubernetes シークレットを選択できます。
シークレットを管理するために Kubernetes シークレットを選択した場合は、[続行] を選択します。
アプリケーション シークレットの管理に Azure Key Vault を使用する場合は、使用する Azure Key Vault を指定します。
Azure Key Vault がない場合、または新しい Key Vault を作成する場合は、[新規作成] を選択して、ツールからの作成を選択できます。
このツールを使用すると、Key Vault を通じてシークレットを管理するために必要なアクセス許可が、自動的に割り当てられます。
監視ワークスペース : Application Insights での監視を有効にすることを選択した場合は、使用する Application Insights リソースを指定します。 このオプションは、監視統合を無効にした場合は表示されません。
Application Insights リソースがない場合、または新しいリソースを作成する場合は、[新規作成] を選択して、ツールからの作成を選択できます。
Azure ファイル共有を指定する : さらにフォルダーを追加し、[永続ボリューム] オプションを選択した場合は、デプロイ プロセス中に Azure Migrate: App Containerization ツールで使用する必要がある Azure ファイル共有を指定します。 永続ボリューム ストレージ用に構成されたアプリケーション フォルダーをコピーするために、ツールにより、この Azure ファイル共有に新しいディレクトリが作成されます。 アプリケーションのデプロイが完了すると、ツールにより、作成されたディレクトリが削除され、Azure ファイル共有がクリーンアップされます。
Azure ファイル共有がないか、または新しい Azure ファイル共有を作成する場合は、[新しいストレージ アカウントとファイル共有の作成] を選択することによって、ツールから作成することを選択できます。
アプリケーションのデプロイ構成 : 上記の手順が完了したら、アプリケーションのデプロイ構成を指定する必要があります。 アプリケーションのデプロイをカスタマイズするには、 [構成] を選択します。 構成ステップでは、次のカスタマイズを行うことができます。
プレフィックス文字列 : AKS クラスター内のコンテナー化されたアプリケーションに対して作成されるすべてのリソースの名前に使用するプレフィックス文字列を指定します。
レプリカ セット : コンテナー内で実行する必要があるアプリケーション インスタンス (ポッド) の数を指定します。
ロード バランサーの種類 : コンテナー化されたアプリケーションにパブリック ネットワークから到達できるようにする場合は、 [外部] を選択します。
アプリケーションの構成 : パラメーター化されたアプリケーションの構成では、現在のデプロイに使用する値を指定します。
ストレージ : 永続ボリューム ストレージ用に構成されているすべてのアプリケーション フォルダーについて、ボリュームをアプリケーション インスタンス間で共有するか、コンテナー内の各インスタンスで個別に初期化するかを指定します。 既定では、永続ボリューム上のすべてのアプリケーション フォルダーは、共有として構成されます。
[適用] を選択してデプロイ構成を保存します。
[続行] を選択してアプリケーションをデプロイします。
アプリケーションをデプロイする : アプリケーションのデプロイ構成が保存されると、ツールによって、アプリケーションの Kubernetes デプロイ YAML が生成されます。
[確認] を選択して、アプリケーションの Kubernetes デプロイ YAML を確認およびカスタマイズします。
デプロイするアプリケーションを選択します。
[デプロイ] を選択して、選択されたアプリケーションのデプロイを開始します。
アプリケーションがデプロイされたら、[デプロイの状態] 列を選択して、アプリケーション用にデプロイされたリソースを追跡できます。
Dockerfile や Kubernetes YAML 仕様ファイルなど、アプリケーションをビルドして AKS にデプロイするために使用されるすべてのアーティファクトは、ツールを実行しているコンピューターに保存されます。 アーティファクトは C:\ProgramData\Microsoft Azure Migrate App Containerization にあります。
アプリケーション サーバーごとに 1 つのフォルダーが作成されます。 このフォルダーに移動すると、コンテナー化プロセスで使用されたすべての中間アーティファクトを確認およびダウンロードできます。 アプリケーション サーバーに対応するフォルダーは、特定のサーバーに対してツールの実行を開始するたびにクリーンアップされます。
ツールに関する問題をトラブルシューティングするには、App Containerization ツールを実行している Windows コンピューターにあるログ ファイルを確認します。 ツールのログ ファイルは C:\ProgramData\Microsoft Azure Migrate App Containerization\Logs フォルダーにあります。
(Linux サーバーの) Apache Tomcat 上の Java Web アプリをコンテナー化し、それらを App Service の Linux コンテナーにデプロイする。
詳細情報
ASP.NET Web アプリをコンテナー化し、それらを AKS の Windows コンテナーにデプロイする。
詳細情報
ASP.NET Web アプリをコンテナー化し、それらを Azure App Service の Windows コンテナーにデプロイする。
詳細情報
Azure Kubernetes Service で Oracle WebLogic Server を実行するためのソリューションとは
詳細情報
AKS 上の Open Liberty と WebSphere Liberty。
詳細情報