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 にあります。

  1. kubeadmin の資格情報を使用して、ブラウザーから OpenShift Web コンソールにサインインします。

  2. [オペレーター]>[オペレーター ハブ] と移動して、Open Liberty を検索します。

  3. 検索結果から [Open Liberty] を選択します。

  4. [インストール] を選択します。

  5. Install Operator ページで、次の手順に従います。

    1. [更新チャネル] で、最新のチャネル v1.3 を選択します。
    2. [インストール モード] では、「クラスター上のすべての名前空間 (既定)」を参照してください。
    3. [更新の承認] で、[自動] を選択します。

    [Install Operator] ページを表示する OpenShift Web コンソールのスクリーンショット。

  6. インストール を選択し、インストールが完了するまで 1 ~ 2 分待ちます。

  7. Open Liberty オペレーターが正常にインストールされ、使用できる状態になっていることを確認します。 使用できる状態になっていない場合は、問題を診断して解決してから続行してください。

    インストールされたオペレーターのダイアログ ボックスを表示する OpenShift Web コンソールのスクリーンショット。

Note

このガイドでは、Open Liberty オペレーターをインストールして、Azure Red Hat OpenShift クラスター上の Liberty アプリケーションを管理します。 WebSphere Liberty オペレーターを使用する場合は、 WebSphere Liberty オペレーターのインストール の手順に従って、クラスターに WebSphere Liberty Operator をインストールします。

Java アプリ用の OpenShift 名前空間を作成する

次の手順を使用して、アプリで使用する OpenShift 名前空間を作成します。

  1. kubeadmin の資格情報を使用して、ブラウザーから OpenShift Web コンソールにサインインしたことを確認します。

  2. [管理]>[名前空間]>[名前空間の作成] と移動します。

  3. 次に示すように、[名前]open-liberty-demo を入力し、[作成] を選択します。

    [名前空間の作成] ダイアログ ボックスを表示する OpenShift Web コンソールのスクリーンショット。

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

javaresources、および webapp ディレクトリには、サンプル アプリケーションのソース コードが含まれています。 このコードでは、jdbc/JavaEECafeDB という名前のデータ ソースを宣言して使用します。

aro ディレクトリには、2 つのデプロイ ファイルを配置しました。 db-secret.xml は、データベース接続資格情報を使用してシークレットを作成するために使用されます。 openlibertyapplication.yaml ファイルは、アプリケーション イメージをデプロイするために使用されます。

ルート ディレクトリに、2 つの Dockerfile を配置しました。 DockerfileDockerfile-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 フレキシブル サーバー インスタンスに接続できるようにファイアウォール ルールを追加する必要があります。 ファイアウォール ルールを追加するには、次の手順に従います。

  1. Azure ポータルにサインインし、先ほど作成した Azure Database for MySQL フレキシブル サーバー インスタンスに移動します。
  2. 左側のメニュー ウィンドウの [設定]> で、[ネットワーク] を選択します。
  3. [現在のクライアント IP アドレスを追加する] を選びます。
  4. [保存] を選択して、ファイアウォール規則が追加されるまで待ちます。

次の手順を使用して liberty:devc コマンドを実行し、Azure の複雑さに対処する前に、プロジェクトとコンテナ イメージをローカルで実行およびテストします。 liberty:devc の詳細については、Liberty プラグインのドキュメントを参照してください。

  1. 必要に応じて、ローカル Docker 環境を起動します。 この手順は、ホスト オペレーティング システムによって異なります。

  2. 次のコマンドを使用して、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
    
  3. アプリケーションが想定どおりに動作することを確認します。 成功すると、コマンドの出力に [INFO] [AUDIT] CWWKZ0003I: The application javaee-cafe updated in 1.930 seconds. のようなメッセージが表示されます。 ブラウザーで https://localhost:9443/ にアクセスし、アプリケーションがアクセス可能で、すべての機能が動作していることを確認します。

  4. liberty:devc モードを終了するには、Control+C を押して、 モードを停止します。

アプリケーション イメージを準備する

Azure Red Hat OpenShift クラスターに Liberty アプリケーションをデプロイして実行するには、Open Liberty コンテナ イメージ または WebSphere Liberty コンテナ イメージを使用して、アプリケーションを Docker イメージとしてコンテナ化します。

アプリケーションをビルドし、イメージストリームにプッシュする

liberty:devc コマンドを使用して、Liberty Docker コンテナで既にアプリを正常に実行しているので、次の手順を使用してクラスター上でイメージをリモートでビルドします。

  1. kubeadmin の資格情報を使用して OpenShift CLI にサインインします。

  2. 次のコマンドを使用して、ソース ディレクトリと 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
    
  3. 次のコマンドを使用して、プロジェクトを open-liberty-demo に変更します。

    oc project open-liberty-demo
    
  4. 次のコマンドを使ってイメージ ストリームを作成します。

    oc create imagestream javaee-cafe-mysql
    
  5. 次のコマンドを使って、ビルド出力のイメージ ストリーム タグを指定するビルド構成を作成します。

    oc new-build --name javaee-cafe-mysql-config --binary --strategy docker --to javaee-cafe-mysql:v1
    
  6. 次のコマンドを使い、ビルドを開始してローカル コンテンツをアップロードし、コンテナ化を行い、前に指定したイメージ ストリーム タグに出力します。

    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 によって処理されます。 このインスタンスを作成するには、次の手順に従います。

  1. kubeadmin の資格情報を使用して、ブラウザーから OpenShift Web コンソールにサインインします。

  2. [ホーム]>[プロジェクト]>[open-liberty-demo] にアクセスしてプロジェクトを選択します。

  3. [Workloads]\(ワークロード\)>[Secrets]\(シークレット\) に移動します。

  4. YAML で [作成]> を選択します。

  5. 生成された yaml を、<path-to-repo>/3-integration/connect-db/mysql/target/db-secret.yaml にある yaml に置き換えます。

  6. [作成] を選択します これでシークレットの詳細ページに戻ります。

  7. [オペレーター]>[インストール済みオペレーター] と移動します。

  8. ページの中央に、[Open Liberty] が表示されます。

  9. [指定 API] で、[OpenLibertyApplication] を選択します。 ユーザー インターフェイス内の項目のナビゲーションは、使用中のテクノロジの実際の包含階層を反映しています。

    Azure Red Hat OpenShift Java Containment の図。

  10. [OpenLibertyApplication の作成] を選択します。

  11. [構成経由元] に対して [YAML ビュー] を選択します。

  12. 生成された yaml を、<path-to-repo>/3-integration/connect-db/mysql/target/openlibertyapplication.yaml にある yaml に置き換えます。

  13. [作成] を選択します OpenLibertyApplications の一覧に戻ります。

  14. [オペレーター]>[インストール済みオペレーター]>[Open Liberty]>[OpenLibertyApplication] の順に選択します。

  15. [javaee-cafe-mysql] を選びます。

  16. ページの中央で、[リソース] を選択します。

  17. テーブルで、[Kind]\(種類\)[Route]\(ルート\) である javaee-cafe-simple のリンクを選びます。

  18. 表示されるページで、[場所] の下のリンクを選択します。

アプリケーションのホームページがブラウザーで開きます。

Web コンソールからアプリケーションを削除する

アプリケーションの操作を終えたら、以下の手順に従って、Open Shift からアプリケーションを削除します。

  1. 左側のナビゲーション ウィンドウで、[オペレーター] のエントリを展開します。
  2. [インストール済みオペレーター] を選択します。
  3. [Open Liberty] を選択します。
  4. ページの中央で、[OpenLibertyApplication] を選択します。
  5. javaee-cafe-mysql の場合は、縦の省略記号 (3 つの垂直ドット) を選択してから、[OpenLibertyApplication を削除] を選択します。
  6. [削除] を選択して、アプリケーションを削除します。

Open Shift からシークレットを削除するには、次の手順に従います。

  1. [Workloads]\(ワークロード\)>[Secrets]\(シークレット\) に移動します。
  2. db-secret-mysql を選択します。
  3. [アクション]>[シークレットの削除] の順に選択します。
  4. [削除] を選択して、シークレットを削除します。

リソースをクリーンアップする

チュートリアル: Azure Red Hat OpenShift 4 クラスターを削除する」の手順に従って、Azure Red Hat OpenShift クラスターを削除します。 データベースと関連するリソースも削除されていることを確認してください。

次のステップ

このガイドで使用された以下の参考資料から、より多くのことを学習できます。

Azure で WebSphere 製品を実行するオプションについては、「Azure で WebSphere ファミリの製品を実行するためのソリューションとは?」を参照してください。