Azure Red Hat OpenShift クラスターに、Open Liberty/WebSphere Liberty を使用する Java アプリケーションを手動でデプロイする
この記事は、Azure Red Hat OpenShift クラスターで Open/WebSphere Liberty を実行するためのステップバイステップの手動ガイダンスです。 Liberty アプリケーションの準備、アプリケーションの Docker イメージの構築、コンテナ化されたアプリケーションの Azure Red Hat OpenShift クラスターでの実行について説明します。
具体的には、次のタスクを実行する方法について説明します。
- Liberty アプリケーションを準備する
- アプリケーション イメージをビルドする
- コンテナ化されたアプリケーションを GUI と CLI を使用して Azure Red Hat OpenShift クラスターで実行する
Azure Red Hat OpenShift クラスターへの取り組みを加速させるより自動化されたソリューションについては、Azure Marketplace オファーを使用して「Azure Red Hat OpenShift に IBM WebSphere Liberty と Open Liberty をデプロイする」を参照してください。
Open Liberty の詳細については、Open Liberty プロジェクトのページを参照してください。 WebSphere Liberty の詳細については、「WebSphere Liberty の製品ページ」を参照してください。
この記事は、デプロイをすばやく行うのに役立ちます。 運用環境に移行する前に、Tuning Liberty について調べる必要があります。
WebSphere on Azure ソリューションを開発しているエンジニアリング チームと密接に連携しながら移行シナリオに取り組むことに関心がある場合は、こちらの簡単な WebSphere 移行に関するアンケートに内容を記入し、連絡先情報を含めてください。 プログラム マネージャー、アーキテクト、エンジニアのチームからすぐに連絡があり、緊密なコラボレーションが開始されます。
重要
Azure Red Hat OpenShift は、統合されたサポート エクスペリエンスを提供するために Red Hat と Microsoft によって共同で設計、運用、サポートされていますが、Azure Red Hat OpenShift 上で実行するソフトウェア (この記事で説明されているものを含む) には、独自のサポートおよびライセンス条項が適用されます。 Azure Red Hat OpenShift のサポートの詳細については、「Azure Red Hat OpenShift 4 のサポート ライフサイクル」を参照してください。 この記事で説明されているソフトウェアのサポートの詳細については、記事に記載されているそのソフトウェアのメイン ページを参照してください。
Note
OpenShift クラスターを作成して実行するには、Azure Red Hat OpenShift に少なくとも 40 コアが必要です。 新しい Azure サブスクリプションの既定の Azure リソース クォータは、この要件を満たしていません。 リソースの制限の引き上げを依頼するには、「標準クォータ:VM シリーズでの制限の引き上げ」を参照してください。 試用版サブスクリプションはクォータ引き上げの対象ではないことに注意してください。クォータ引き上げを要求する前に、従量課金制のサブスクリプションにアップグレードしてください。
前提条件
Unix のようなオペレーティング システム (Ubuntu、macOS、Linux 用 Windows サブシステムなど) がインストールされているローカル マシン。
Java Standard Edition (SE) Version 17 以降の実装 (Eclipse Open J9 など)。
Maven バージョン 3.9.8 以降。
使用する OS 用の Docker。
Azure CLI バージョン 2.61.0 以降。
Azure Red Hat OpenShift クラスターを削除します。 クラスターを作成するには、「Azure Red Hat OpenShift 4 クラスターを作成する」の指示に従い、次の手順に従います。
「Red Hat プル シークレットを取得する」手順は省略可能のラベルが付いていますが、この記事には必須です。 プル シークレットを使用すると、Azure Red Hat OpenShift クラスターで、Open Liberty オペレーターを見つけることができます。
「Azure Red Hat OpenShift 4 クラスターを作成する」で定義されている次の環境変数は、この記事の後半で使用します。
RESOURCEGROUP
- AKS クラスターがデプロイされるリソース グループの名前。CLUSTER
- クラスターの名前です。
クラスターでメモリを集中的に使用するアプリケーションを実行する予定の場合は、
--worker-vm-size
パラメーターを使用して、ワーカー ノードにとって適切な仮想マシン サイズを指定します。 詳細については、次の記事をご覧ください。
「Azure Red Hat OpenShift 4 クラスターに接続する」の指示に従って、以下の手順でクラスターに接続します。
- この記事の後半で
oc
コマンドを使用するため、「OpenShift CLI をインストールする」の手順に従ってください。 - クラスター コンソールの URL を保存しておきます。
https://console-openshift-console.apps.<random>.<region>.aroapp.io/
のようになります。 kubeadmin
の資格情報を書き留めます。- 必ず、
kubeadmin
の資格情報を使用して、「OpenShift CLI を使用して接続する」の手順に従ってください。
- この記事の後半で
Open Liberty OpenShift オペレーターをインストールする
クラスターを作成して接続したら、以下の手順を使用して Open Liberty Operator をインストールします。 Open Liberty オペレーターのメイン開始ページは、GitHub にあります。
kubeadmin
の資格情報を使用して、ブラウザーから OpenShift Web コンソールにサインインします。[オペレーター]>[オペレーター ハブ] と移動して、Open Liberty を検索します。
検索結果から [Open Liberty] を選択します。
[インストール] を選択します。
Install Operator ページで、次の手順に従います。
- [更新チャネル] で、最新のチャネル v1.3 を選択します。
- [インストール モード] では、「クラスター上のすべての名前空間 (既定)」を参照してください。
- [更新の承認] で、[自動] を選択します。
インストール を選択し、インストールが完了するまで 1 ~ 2 分待ちます。
Open Liberty オペレーターが正常にインストールされ、使用できる状態になっていることを確認します。 使用できる状態になっていない場合は、問題を診断して解決してから続行してください。
Note
このガイドでは、Open Liberty オペレーターをインストールして、Azure Red Hat OpenShift クラスター上の Liberty アプリケーションを管理します。 WebSphere Liberty オペレーターを使用する場合は、 WebSphere Liberty オペレーターのインストール の手順に従って、クラスターに WebSphere Liberty Operator をインストールします。
Java アプリ用の OpenShift 名前空間を作成する
次の手順を使用して、アプリで使用する OpenShift 名前空間を作成します。
kubeadmin
の資格情報を使用して、ブラウザーから OpenShift Web コンソールにサインインしたことを確認します。[管理]>[名前空間]>[名前空間の作成] と移動します。
次に示すように、[名前] に
open-liberty-demo
を入力し、[作成] を選択します。
Azure Database for MySQL フレキシブル サーバーを作成する
Azure Database for MySQL フレキシブル サーバー デプロイ モデルは、Azure Database for MySQL 単一サーバー デプロイ モードよりも、データベース管理機能と構成設定をより細かく制御し、柔軟にするために設計されたデプロイ モードです。 このセクションでは、Azure CLI を使用して Azure Database for MySQL フレキシブル サーバー インスタンスを作成する方法について説明します。 詳細については、「クイックスタート: Azure CLI を使用して Azure Database for MySQL - フレキシブル サーバーのインスタンスを作成する」を参照してください。
ターミナルで次のコマンドを実行して、Azure Database for MySQL フレキシブル サーバー インスタンスを作成します。 <server-admin-password>
を、Azure Database for MySQL フレキシブル サーバーのパスワードの複雑さの要件を満たすパスワードに置き換えます。
az mysql flexible-server create \
--name ${CLUSTER} \
--resource-group ${RESOURCEGROUP} \
--admin-user admin${RESOURCEGROUP} \
--admin-password '<server-admin-password>' \
--database-name ${RESOURCEGROUP}db \
--public-access 0.0.0.0 \
--yes
Note
「この場所には利用可能な SKU がありません」というエラーメッセージが表示された場合は、--location
パラメーターを使用して別の場所を指定してから、もう一度やり直す必要があります。 次のコマンドを使用して、特定の場所で使用可能な SKU を一覧表示します。
az mysql flexible-server list-skus --location <Location>
使用可能な SKU がある場所を見つけて、上記の az mysql flexible-server create command
を繰り返しますが、適切な --location <Location>
パラメーターを追加します。その他のパラメーターはすべて変更されません。
すべての Azure リソースからの接続を受け入れるサーバー、データベース、管理者ユーザー、およびファイアウォール ルールを作成するには、数分かかります。 コマンドが成功した場合、出力は次の例のようになります。
{
"connectionString": "mysql <database-name> --host <server-name>.mysql.database.azure.com --user <server-admin-username> --password=<server-admin-password>",
"databaseName": "<database-name>",
"firewallName": "AllowAllAzureServicesAndResourcesWithinAzureIps_2024-7-10_16-22-8",
"host": "<server-name>.mysql.database.azure.com",
"id": "/subscriptions/REDACTED/resourceGroups/<resource-group-of-the-OpenShift-cluster>/providers/Microsoft.DBforMySQL/flexibleServers/<server-name>",
"location": "West US",
"password": "<server-admin-password>",
"resourceGroup": "<resource-group-of-the-OpenShift-cluster>",
"skuname": "Standard_B1ms",
"username": "<server-admin-username>",
"version": "5.7"
}
Liberty アプリケーションを準備する
このガイドでは、例として Java EE 8 アプリケーションを使用します。 Open Liberty は Java EE 8 フル プロファイル互換サーバーであるため、このアプリケーションを簡単に実行できます。 Open Liberty は Jakarta EE 8 フル プロファイル互換でもあります。
Open Liberty でアプリケーションを実行する
Open Liberty でアプリケーションを実行するには、Liberty Maven プラグインで、デプロイのためにアプリケーションをパッケージ化できるように、Open Liberty サーバー構成ファイルを作成する必要があります。 アプリケーションを OpenShift にデプロイするためには、Liberty Maven プラグインは必要ありません。 ただし、この例では、それを Open Liberty の開発者 (dev) モードで使用します。 開発者モードでは、アプリケーションをローカルで簡単に実行できます。 liberty-maven-plugin
の詳細については、「Building a web application with Maven」(Maven での Web アプリケーションのビルド) を参照してください。
このセクションの手順に従って、この記事で後で使うサンプル アプリケーションを準備します。 これらの手順では、Maven と liberty-maven-plugin
を使用します。
アプリケーションをチェックアウトする
次のコマンドを使用して、このガイドのサンプル コードのクローンを作成します。 サンプルは GitHub にあります。
git clone https://github.com/Azure-Samples/open-liberty-on-aro.git
cd open-liberty-on-aro
export BASE_DIR=$PWD
git checkout 20240920
cd ${BASE_DIR}/3-integration/connect-db/mysql
HEAD がデタッチされた状態であることを示すメッセージが表示された場合、このメッセージは無視しても問題ありません。 これは、タグをチェックアウトしたという意味です。
リポジトリにはいくつかのサンプルがあります。 open-liberty-on-aro/3-integration/connect-db/mysql を使用します。 アプリケーションのファイル構造を次に示します。
open-liberty-on-aro/3-integration/connect-db/mysql
├─ src/main/
│ ├─ aro/
│ │ ├─ db-secret.yaml
│ │ ├─ openlibertyapplication.yaml
│ ├─ liberty/config/
│ │ ├─ server.xml
│ ├─ java/
│ ├─ resources/
│ ├─ webapp/
├─ Dockerfile
├─ Dockerfile-wlp
├─ pom.xml
java、resources、および webapp ディレクトリには、サンプル アプリケーションのソース コードが含まれています。 このコードでは、jdbc/JavaEECafeDB
という名前のデータ ソースを宣言して使用します。
aro ディレクトリには、2 つのデプロイ ファイルを配置しました。 db-secret.xml は、データベース接続資格情報を使用してシークレットを作成するために使用されます。 openlibertyapplication.yaml ファイルは、アプリケーション イメージをデプロイするために使用されます。
ルート ディレクトリに、2 つの Dockerfile を配置しました。 Dockerfile と Dockerfile-wlp はローカル デバッグと Azure Red Hat OpenShift デプロイのイメージ構築に使用され、Open Liberty and WebSphere Liberty は個別で動作します、
liberty/config ディレクトリでは、server.xml を使用して、Open Liberty および WebSphere Liberty クラスターのデータベース接続を構成します。
プロジェクトをビルドする
前に定義した環境変数を使用して、ターミナルで次のコマンドを実行し、プロジェクトをビルドします。 プロジェクトの POM ファイルにより、環境から多くのプロパティが読み取られます。
cd ${BASE_DIR}/3-integration/connect-db/mysql
# The following variables are used for deployment file generation
export DB_SERVER_NAME=$CLUSTER.mysql.database.azure.com
export DB_PORT_NUMBER=3306
export DB_NAME=${RESOURCEGROUP}db
export DB_USER=admin${RESOURCEGROUP}
export DB_PASSWORD='<server-admin-password>'
export NAMESPACE=open-liberty-demo
mvn clean install
(省略可能) アプリケーションをローカルでテストする
必要に応じて、アプリケーションをローカルで実行して、期待どおりに動作するかどうかを確認できます。 まず、ローカル マシンが Azure Database for MySQL フレキシブル サーバー インスタンスに接続できるようにファイアウォール ルールを追加する必要があります。 ファイアウォール ルールを追加するには、次の手順に従います。
- Azure ポータルにサインインし、先ほど作成した Azure Database for MySQL フレキシブル サーバー インスタンスに移動します。
- 左側のメニュー ウィンドウの [設定]> で、[ネットワーク] を選択します。
- [現在のクライアント IP アドレスを追加する] を選びます。
- [保存] を選択して、ファイアウォール規則が追加されるまで待ちます。
次の手順を使用して liberty:devc
コマンドを実行し、Azure の複雑さに対処する前に、プロジェクトとコンテナ イメージをローカルで実行およびテストします。 liberty:devc
の詳細については、Liberty プラグインのドキュメントを参照してください。
必要に応じて、ローカル Docker 環境を起動します。 この手順は、ホスト オペレーティング システムによって異なります。
次のコマンドを使用して、
liberty:devc
モードでアプリケーションを起動します。cd ${BASE_DIR}/3-integration/connect-db/mysql # If you are running with Open Liberty mvn liberty:devc -DcontainerRunOpts="-e DB_SERVER_NAME=${DB_SERVER_NAME} -e DB_PORT_NUMBER=${DB_PORT_NUMBER} -e DB_NAME=${DB_NAME} -e DB_USER=${DB_USER} -e DB_PASSWORD=${DB_PASSWORD}" -Dcontainerfile=Dockerfile # If you are running with WebSphere Liberty mvn liberty:devc -DcontainerRunOpts="-e DB_SERVER_NAME=${DB_SERVER_NAME} -e DB_PORT_NUMBER=${DB_PORT_NUMBER} -e DB_NAME=${DB_NAME} -e DB_USER=${DB_USER} -e DB_PASSWORD=${DB_PASSWORD}" -Dcontainerfile=Dockerfile-wlp
アプリケーションが想定どおりに動作することを確認します。 成功すると、コマンドの出力に
[INFO] [AUDIT] CWWKZ0003I: The application javaee-cafe updated in 1.930 seconds.
のようなメッセージが表示されます。 ブラウザーでhttps://localhost:9443/
にアクセスし、アプリケーションがアクセス可能で、すべての機能が動作していることを確認します。liberty:devc
モードを終了するには、Control+C を押して、 モードを停止します。
アプリケーション イメージを準備する
Azure Red Hat OpenShift クラスターに Liberty アプリケーションをデプロイして実行するには、Open Liberty コンテナ イメージ または WebSphere Liberty コンテナ イメージを使用して、アプリケーションを Docker イメージとしてコンテナ化します。
アプリケーションをビルドし、イメージストリームにプッシュする
liberty:devc
コマンドを使用して、Liberty Docker コンテナで既にアプリを正常に実行しているので、次の手順を使用してクラスター上でイメージをリモートでビルドします。
kubeadmin
の資格情報を使用して OpenShift CLI にサインインします。次のコマンドを使用して、ソース ディレクトリと Dockerfile を特定します。
cd ${BASE_DIR}/3-integration/connect-db/mysql # If you are building with the Open Liberty base image, the existing Dockerfile is ready for you # If you are building with the WebSphere Liberty base image, uncomment and execute the following two commands to rename Dockerfile-wlp to Dockerfile # mv Dockerfile Dockerfile.backup # mv Dockerfile-wlp Dockerfile
次のコマンドを使用して、プロジェクトを open-liberty-demo に変更します。
oc project open-liberty-demo
次のコマンドを使ってイメージ ストリームを作成します。
oc create imagestream javaee-cafe-mysql
次のコマンドを使って、ビルド出力のイメージ ストリーム タグを指定するビルド構成を作成します。
oc new-build --name javaee-cafe-mysql-config --binary --strategy docker --to javaee-cafe-mysql:v1
次のコマンドを使い、ビルドを開始してローカル コンテンツをアップロードし、コンテナ化を行い、前に指定したイメージ ストリーム タグに出力します。
oc start-build javaee-cafe-mysql-config --from-dir . --follow
Azure Red Hat OpenShift クラスターにアプリケーションをデプロイする
これで、以前の前提条件の作業時に作成した Azure Red Hat OpenShift クラスターに、サンプルの Liberty アプリケーションをデプロイできるようになりました。
Web コンソールからアプリケーションをデプロイする
Open Liberty Operator を使用して Liberty アプリケーションを管理するため、OpenLibertyApplication
のタイプの、カスタム リソース定義のインスタンスを作成する必要があります。 その後は、デプロイに必要な OpenShift リソースの管理全般が、Operator によって処理されます。 このインスタンスを作成するには、次の手順に従います。
kubeadmin
の資格情報を使用して、ブラウザーから OpenShift Web コンソールにサインインします。[ホーム]>[プロジェクト]>[open-liberty-demo] にアクセスしてプロジェクトを選択します。
[Workloads]\(ワークロード\)>[Secrets]\(シークレット\) に移動します。
YAML で [作成]> を選択します。
生成された yaml を、<path-to-repo>/3-integration/connect-db/mysql/target/db-secret.yaml にある yaml に置き換えます。
[作成] を選択します これでシークレットの詳細ページに戻ります。
[オペレーター]>[インストール済みオペレーター] と移動します。
ページの中央に、[Open Liberty] が表示されます。
[指定 API] で、[OpenLibertyApplication] を選択します。 ユーザー インターフェイス内の項目のナビゲーションは、使用中のテクノロジの実際の包含階層を反映しています。
[OpenLibertyApplication の作成] を選択します。
[構成経由元] に対して [YAML ビュー] を選択します。
生成された yaml を、<path-to-repo>/3-integration/connect-db/mysql/target/openlibertyapplication.yaml にある yaml に置き換えます。
[作成] を選択します OpenLibertyApplications の一覧に戻ります。
[オペレーター]>[インストール済みオペレーター]>[Open Liberty]>[OpenLibertyApplication] の順に選択します。
[javaee-cafe-mysql] を選びます。
ページの中央で、[リソース] を選択します。
テーブルで、[Kind]\(種類\) が [Route]\(ルート\) である javaee-cafe-simple のリンクを選びます。
表示されるページで、[場所] の下のリンクを選択します。
アプリケーションのホームページがブラウザーで開きます。
Web コンソールからアプリケーションを削除する
アプリケーションの操作を終えたら、以下の手順に従って、Open Shift からアプリケーションを削除します。
- 左側のナビゲーション ウィンドウで、[オペレーター] のエントリを展開します。
- [インストール済みオペレーター] を選択します。
- [Open Liberty] を選択します。
- ページの中央で、[OpenLibertyApplication] を選択します。
- javaee-cafe-mysql の場合は、縦の省略記号 (3 つの垂直ドット) を選択してから、[OpenLibertyApplication を削除] を選択します。
- [削除] を選択して、アプリケーションを削除します。
Open Shift からシークレットを削除するには、次の手順に従います。
- [Workloads]\(ワークロード\)>[Secrets]\(シークレット\) に移動します。
- db-secret-mysql を選択します。
- [アクション]>[シークレットの削除] の順に選択します。
- [削除] を選択して、シークレットを削除します。
リソースをクリーンアップする
「チュートリアル: Azure Red Hat OpenShift 4 クラスターを削除する」の手順に従って、Azure Red Hat OpenShift クラスターを削除します。 データベースと関連するリソースも削除されていることを確認してください。
次のステップ
このガイドで使用された以下の参考資料から、より多くのことを学習できます。
- Open Liberty
- Azure Red Hat OpenShift
- Open Liberty オペレーター
- Open Liberty サーバーの構成
- Liberty Maven プラグイン
- Open Liberty コンテナー イメージ
- WebSphere Liberty コンテナー イメージ
Azure で WebSphere 製品を実行するオプションについては、「Azure で WebSphere ファミリの製品を実行するためのソリューションとは?」を参照してください。