次の方法で共有


クイック スタート: Azure Red Hat OpenShift に JBoss EAP をデプロイする

この記事では、Azure portal を使用して Azure Red Hat OpenShift に JBoss Enterprise Application Platform (EAP) をすばやく設定する方法を説明します。

この記事では、JBoss EAP 向けの Azure Marketplace オファーを使用して、Azure Red Hat OpenShift への移行を加速します。 このオファーを使用すると、OpenShift Container Registry (OCR) を組み込んだ Azure Red Hat OpenShift クラスター、JBoss EAP オペレーターや、必要に応じて Source-to-Image (S2I) を使用した JBoss EAP とアプリケーションを含むコンテナーイメージなど、リソースが自動的にプロビジョニングされます。 オファーを表示するには、Azure portal にアクセスします。 このオファーで有効になる自動化を使用しない Azure Red Hat OpenShift 上での JBoss EAP の実行のための手動のステップ バイ ステップ ガイダンスを利用したい方は、「Azure Red Hat OpenShift 4 クラスターで Red Hat JBoss Enterprise Application Platform (JBoss EAP) を使用して Java アプリケーションをデプロイする」を参照してください。

JBoss EAP on Azure ソリューションを開発しているエンジニアリング チームと密接に連携しながら移行シナリオに取り組むことに関心がある場合は、こちらの簡単な JBoss EAP 移行に関するアンケートに内容を記入し、連絡先情報を含めてください。 プログラム マネージャー、アーキテクト、エンジニアのチームからすぐに連絡を取り、密接なコラボレーションが開始されます。

前提条件

Note

OpenShift クラスターを作成して実行するには、Azure Red Hat OpenShift に少なくとも 40 コアが必要です。 新しい Azure サブスクリプションの既定の Azure リソース クォータは、この要件を満たしていません。 リソースの制限の引き上げを依頼するには、「 VM ファミリの vCPU クォータの増加」を参照してください。 無料試用版サブスクリプションは、クォータの引き上げの対象ではないことに注意してください。 クォータの引き上げを要求する前に、従量課金制サブスクリプションにアップグレードします。 詳細については、「Azure 無料アカウントまたは Microsoft Azure for Students Starter アカウントをアップグレードする」を参照してください。

Red Hat プル シークレットを取得する

この記事で使う Azure Marketplace オファーには、Red Hat のプル シークレットが必要です。 このセクションでは、Azure Red Hat OpenShift の Red Hat プル シークレットを取得する方法について説明します。 Red Hat プル シークレットの概要と必要な理由については、「チュートリアル: Azure Red Hat OpenShift 4 クラスターを作成する」の「Red Hat プル シークレットの取得」セクションを参照してください。

プル シークレットを取得するには、次の手順に従います。

  1. Red Hat OpenShift Hybrid Cloud Console を開き、Red Hat アカウントを使用して OpenShift クラスター マネージャー ポータルにサインインします。 次のスクリーンショットに示すように、より多くの条件に同意し、アカウントを更新する必要がある場合があります。 アカウントを作成したときと同じパスワードを使用します。

    Red Hat のアカウントの更新ページのスクリーンショット。

  2. サインインしたら、[OpenShift][Downloads] の順に選択します。

  3. [All categories] 候補リストを選択して、[Tokens] を選択します。

  4. [Pull secret] で、次のスクリーンショットに示すように、[Copy] または [Download] を選択して値を取得します。

    プル シークレットを示す Red Hat コンソール ポータルのスクリーンショット。

    次のコンテンツは、Red Hat コンソール ポータルからコピーされた例であり、認証コードは xxxx...xxx に置き換えられています。

    {"auths":{"cloud.openshift.com":{"auth":"xxxx...xxx","email":"contoso-user@contoso.com"},"quay.io":{"auth":"xxx...xxx","email":"contoso-user@test.com"},"registry.connect.redhat.com":{"auth":"xxxx...xxx","email":"contoso-user@contoso.com"},"registry.redhat.io":{"auth":"xxxx...xxx","email":"contoso-user@contoso.com"}}}
    
  5. 後で使用できるように、シークレットをファイルに保存します。

Red Hat Container Registry サービス アカウントを作成する

この記事では後で、Source-to-Image (S2I) を使用してアプリケーションを OpenShift に手動でデプロイする方法について説明します。 アプリケーションを実行する JBoss EAP のコンテナー イメージをプルするには、Red Hat Container Registry サービス アカウントが必要です。 使用できる Red Hat Container Registry サービス アカウントがある場合は、このセクションをスキップし、オファーをデプロイする次のセクションに進みます。

Red Hat Container Registry サービス アカウントを作成し、そのユーザー名とパスワードを取得するには、次の手順に従います。 詳細については、Red Hat のドキュメントの「レジストリ サービス アカウントの作成」を参照してください。

  1. Red Hat アカウントを使用して、Registry Service Account Management Application にサインインします。
  2. [Registry Service Accounts] ページで、[New Service Account] を選択します。
  3. サービス アカウントの名前を入力します。 名前の先頭には固定のランダム文字列が付加されます。
    • 説明を入力します。
    • [作成] を選択します。
  4. Service Accounts に戻ります。
  5. 作成したサービス アカウントを選択します。
    • 前に付加された文字列を含めて、ユーザー名を書き留めます (つまり、XXXXXXX|username)。 registry.redhat.io にサインインするときに、このユーザー名を使用します。
    • パスワードを書き留めます。 registry.redhat.io にサインインするときに、このパスワードを使用します。

Red Hat Container Registry サービス アカウントを作成しました。

Azure portal から Microsoft Entra サービス プリンシパルを作成する

この記事で使用される Azure Marketplace オファーでは、Azure Red Hat OpenShift クラスターをデプロイするために Microsoft Entra サービス プリンシパルが必要です。 このオファーでは、デプロイ時にサービス プリンシパルに適切な特権を割り当て、ロールの割り当ては必要ありません。 使用できるサービス プリンシパルがある場合は、このセクションをスキップし、Red Hat Container Registry サービス アカウントを作成する次のセクションに進みます。

サービス プリンシパルをデプロイし、Azure portal からアプリケーション (クライアント) ID とシークレットを取得するには、次の手順に従います。 詳細については、「サービス プリンシパルを作成および使用して Azure Red Hat OpenShift クラスターをデプロイする」を参照してください。

Note

アプリケーションを Microsoft Entra テナントに登録するための十分なアクセス許可を持っている必要があります。 問題が発生した場合は、「必要なアクセス許可」をチェックして、使用しているアカウントで ID を作成できることを確認してください。 詳細については、「Microsoft Entra アプリを登録し、サービス プリンシパルを作成する」を参照してください。

  1. Azure Portal で Azure アカウントにサインインします。

  2. [Microsoft Entra ID] を選びます。

  3. [アプリの登録] を選択します。

  4. [新規登録] を選択します。

  5. アプリケーションに名前を付けます (jboss-eap-on-aro-app など)。 サポートされているアカウントを選択します。これにより、アプリケーションを使用できるユーザーを決定します。 値を設定した後、次のスクリーンショットに示すように、[Register] を選択します。 アプリケーションのプロビジョニングには数秒かかります。 デプロイが完了するのを待ってから続行します。

    [アプリケーションを登録する] ページを示す Azure portal のスクリーンショット。

  6. 次のスクリーンショットに示すように、概要ページからアプリケーション (クライアント) ID を保存します。 スクリーンショットで編集されている値の上にポインターを置き、表示されるコピー アイコンを選択します。 ツールヒントには、[クリップボードにコピー] と表示されます。 そのセクションの他の値にもコピー アイコンがあるため、正しい値をコピーするように注意してください。 後で使用できるように、アプリケーション ID をファイルに保存します。

    [アプリケーション (クライアント) ID] が強調表示されている [概要] ページを示す Azure portal のスクリーンショット。

  7. 次の手順に従って、新しいクライアント シークレットを作成します。

    1. [証明書とシークレット] を選択します。
    2. [クライアント シークレット][新しいクライアント シークレット] の順に選択します。
    3. シークレットの説明と期間を指定します。 操作が終わったら、[Add] を選択します。
    4. クライアント シークレットを追加すると、クライアント シークレットの値が表示されます。 後からの取得はできないので、この値をコピーします。 [シークレット ID] ではなく [値] をコピーしてください。

Microsoft Entra アプリケーション、サービス プリンシパル、クライアント シークレットを作成しました。

サービス プリンシパルを検証する

次のコマンドを使用して、サービス プリンシパルを検証します。

az login \
    --service-principal \
    --username <service-principal-client-id> \
    --password <service-principal-client-secret> \
    --tenant <tenant-id>
az account show

<service-principal-client-id><service-principal-client-secret><tenant-id> は、前の手順で取得した値に置き換えます。 アカウント情報が表示されたら、サービス プリンシパルは有効です。

Azure Red Hat OpenShift に JBoss EAP をデプロイする

このセクションの手順では、Azure Red Hat OpenShift に JBoss EAP をデプロイする方法を示します。

次の手順では、オファーを検索して、[基本] ペインに入力する方法について説明します。

  1. Azure portal の上部にある検索バーに、「JBoss EAP」と入力します。 次のスクリーンショットに示すように、検索結果の [Marketplace] セクションで、[JBoss EAP on Azure Red Hat OpenShift] を選択します。

    検索結果に JBoss EAP on Azure Red Hat OpenShift が示されている Azure portal のスクリーンショット。

    また、Azure portal で JBoss EAP on Azure Red Hat OpenShift オファーに直接アクセスすることもできます。

  2. オファー ページで、[作成] を選択します。

  3. [基本] ペインで、[サブスクリプション] フィールドに表示される値が、前提条件セクションに示されているロールと同じであることを確認します。

  4. このオファーを空のリソース グループにデプロイする必要があります。 [リソース グループ] フィールドで、[新規作成] を選択し、リソース グループの値を入力します。 リソース グループはサブスクリプション内で一意である必要があるため、一意の名前を選択します。 一意の名前を付ける簡単な方法は、自分の名前のイニシャル、今日の日付、何らかの識別子を組み合わせて使用することです。 たとえば、eaparo033123rg などになります。

  5. [インスタンスの詳細] で、デプロイのリージョンを選択します。 OpenShift が動作する Azure リージョンの一覧については、Azure での Red Hat OpenShift 4.x のリージョンに関するページを参照してください。

  6. [次: ARO] を選びます。

次の手順では、次のスクリーンショットに示す [ARO] ウィンドウに入力する方法を示します。

JBoss EAP on Azure Red Hat OpenShift ARO ペインが示されている Azure portal のスクリーンショット。

  1. [新しいクラスターを作成する] で、[はい] を選びます。

  2. [新しいクラスターを作成するための情報を入力する] で、[Red Hat プル シークレット] については、「Red Hat プル シークレットを取得する」セクションで取得した Red Hat プル シークレットを入力します。 [シークレットの確認] にも同じ値を使用します。

  3. [サービス プリンシパルのクライアント ID] に、「Azure portal から Microsoft Entra サービス プリンシパルを作成する」セクションで取得したサービス プリンシパル アプリケーション (クライアント) ID を入力します。

  4. [サービス プリンシパルのクライアント シークレット] に、「Azure portal から Microsoft Entra サービス プリンシパルを作成する」セクションで取得したサービス プリンシパル アプリケーション シークレットを入力します。 [シークレットの確認] にも同じ値を使用します。

  5. [次: EAP アプリケーション] を選択します。

次の手順では、次のスクリーンショットに示す [EAP アプリケーション] ウィンドウに入力し、デプロイを開始する方法を示します。

Azure Red Hat OpenShift EAP アプリケーション ペインに JBoss EAP が示されている Azure portal のスクリーンショット。

  1. [Source-to-Image (S2I) を使用してアプリケーションを OpenShift にデプロイしますか?] については、既定のオプションの [いいえ] のままにします。

    Note

    このクイック スタートでは後で、データベース接続を使用してアプリケーションを手動でデプロイする方法について説明します。

  2. 確認と作成 をクリックします。

  3. [Review + create](レビュー + 作成) を選択します。 緑色の [検証に成功しました] というメッセージが上部に表示されることを確認します。 このメッセージが表示されない場合は、検証の問題を修正してから、[確認および作成] をもう一度選択します。

  4. [作成] を選択します

  5. [デプロイが進行中です] ページで、デプロイの進行状況を追跡します。

選択したリージョンのネットワーク状態やその他のアクティビティによっては、デプロイが完了するまでに最大 35 分かかる場合があります。

待っている間に、データベースを設定できます。

Azure Database for MySQL - フレキシブル サーバーを設定する

次のセクションでは、Azure Database for MySQL - フレキシブル サーバーを設定する方法について説明します。

コマンド ライン シェルで環境変数を設定する

このサンプルは、MySQL データベースによってサポートされる Java アプリケーションであり、Source-to-Image (S2I) を使用して OpenShift クラスターにデプロイされます。 S2I の詳細については、S2I のドキュメントを参照してください。

Note

Azure ワークロード ID は Azure OpenShift ではまだサポートされていないため、この記事では、パスワードレス データベース接続を使用する代わりに、データベース認証にユーザー名とパスワードを引き続き使用します。

シェルを開き、次の環境変数を設定します。 必要に応じて置換を置き換えます。

RG_NAME=<resource-group-name>
SERVER_NAME=<database-server-name>
DB_DATABASE_NAME=testdb
ADMIN_USERNAME=myadmin
ADMIN_PASSWORD=Secret123456
DB_USERNAME=testuser
DB_PASSWORD=Secret123456
PROJECT_NAME=eaparo-sample
CON_REG_SECRET_NAME=eaparo-sample-pull-secret
CON_REG_ACC_USER_NAME="<red-hat-container-registry-service-account-username>"
CON_REG_ACC_PWD="<red-hat-container-registry-service-account-password>"
APPLICATION_NAME=javaee-cafe
APP_REPLICAS=3

プレースホルダーは、この記事の残りの部分で使用される次の値に置き換えてください。

  • <resource-group-name>: 前に作成したリソース グループの名前 (たとえば、eaparo033123rg)。
  • <database-server-name>: MySQL サーバーの名前。Azure 全体で一意である必要があります (たとえば、eaparo033123mysql)。
  • ADMIN_PASSWORD: MySQL データベース サーバーの管理者パスワード。 この記事は、示されているパスワードを使ってテストされました。 パスワードの規則については、データベースのドキュメントを参照してください。
  • <red-hat-container-registry-service-account-username><red-hat-container-registry-service-account-password>: 前に作成した Red Hat Container Registry サービス アカウントのユーザー名とパスワード。

コマンドの実行が完了する前にシェルがタイムアウトになった場合に備えて、完全に入力された名前と値のペアをテキスト ファイルに保存することをお勧めします。 そうすることで、シェルの新しいインスタンスに貼り付けて、簡単に続行できます。

これらの名前と値のペアは、基本的に "シークレット" です。 Azure Red Hat OpenShift をセキュリティで保護するための、シークレット管理を含む運用環境に対応した方法については、「Azure Red Hat OpenShift ランディング ゾーン アクセラレータのセキュリティ」を参照してください。

データベースを作成して初期化する

次に、次の手順を使用して、Azure Database for MySQL - フレキシブル サーバーを作成し、特定のデータベースへの読み取り/書き込みを行うアクセス許可を持つユーザーを作成します。

  1. 次のコマンドを使用して、Azure Database for MySQL - フレキシブル サーバーを作成します。

    az mysql flexible-server create \
        --resource-group ${RG_NAME} \
        --name ${SERVER_NAME} \
        --database-name ${DB_DATABASE_NAME} \
        --public-access 0.0.0.0  \
        --admin-user ${ADMIN_USERNAME} \
        --admin-password ${ADMIN_PASSWORD} \
        --yes
    

    このコマンドが完了するまでに 10 分以上かかる場合があります。 コマンドが正常に完了すると、次の例のような出力が表示されます。

    {
      "connectionString": "mysql testdb --host ejb010406adb.mysql.database.azure.com --user myadmin --password=Secret#123345",
      "databaseName": "testdb",
      "firewallName": "AllowAllAzureServicesAndResourcesWithinAzureIps_2023-4-6_21-21-3",
      "host": "ejb010406adb.mysql.database.azure.com",
      "id": "/subscriptions/redacted/resourceGroups/ejb010406a/providers/Microsoft.DBforMySQL/flexibleServers/ejb010406adb",
      "location": "East US",
      "password": "Secret#123345",
      "resourceGroup": "ejb010406a",
      "skuname": "Standard_B1ms",
      "username": "myadmin",
      "version": "5.7"
    }
    
  2. 次のコマンドを使用して、作成された MySQL サーバーのホストを取得します。

    DB_HOST=$(az mysql flexible-server show \
        --resource-group ${RG_NAME} \
        --name ${SERVER_NAME} \
        --query "fullyQualifiedDomainName" \
        --output tsv)
    echo $DB_HOST
    

    名前と値のペアをテキスト ファイルに保存します。

  3. 次のコマンドを使用して、パブリック インターネットから MySQL サーバーへの接続を許可する一時的なファイアウォール規則を作成します。

    az mysql flexible-server firewall-rule create \
        --resource-group ${RG_NAME} \
        --name ${SERVER_NAME} \
        --rule-name "AllowAllIPs" \
        --start-ip-address 0.0.0.0 \
        --end-ip-address 255.255.255.255
    
  4. 次のコマンドを使用して、特定のデータベースの読み取りと書き込みを行うアクセス許可を持つ新しいデータベース ユーザーを作成します。 このコマンドは、SQL をデータベースに直接送信する場合に便利です。

    mysql --host ${DB_HOST} --user ${ADMIN_USERNAME} --password=${ADMIN_PASSWORD} << EOF
    CREATE USER '${DB_USERNAME}'@'%' IDENTIFIED BY '${DB_PASSWORD}';
    GRANT ALL PRIVILEGES ON ${DB_DATABASE_NAME} . * TO '${DB_USERNAME}'@'%';
    FLUSH PRIVILEGES;
    EOF
    
  5. 次のコマンドを使用して、一時的なファイアウォール規則を削除します。

    az mysql flexible-server firewall-rule delete \
        --resource-group ${RG_NAME} \
        --name ${SERVER_NAME}  \
        --rule-name "AllowAllIPs" \
        --yes
    

これで MySQL データベース サーバーが実行され、アプリに接続する準備ができました。

デプロイの機能を確認する

このセクションの手順では、デプロイが正常に完了したことを確認する方法について説明します。

[デプロイが進行中です] ページから移動した場合は、次の手順でそのページに戻る方法について説明します。 [デプロイが完了しました] と示されたページが表示されたままの場合は、手順 5 にスキップできます。

  1. Azure portal ページの隅にあるハンバーガー メニューを選択し、[リソース グループ] を選択します。

  2. [任意のフィールドのフィルター] というテキストが表示されているボックスに、前に作成したリソース グループの最初の数文字を入力します。 推奨される方法に従った場合は、名前のイニシャルを入力してから、適切なリソース グループを選択します。

  3. ナビゲーション ウィンドウの [設定] セクションで、[デプロイ] を選択します。 このリソース グループへのデプロイの順序指定済みリストが表示され、最新のデプロイが最初に表示されます。

  4. このリストの一番古いエントリまでスクロールします。 このエントリは、前のセクションで開始したデプロイに対応します。 次のスクリーンショットに示すように、一番古いデプロイを選択します。

    Azure Red Hat OpenShift デプロイ上の JBoss EAP を示す Azure portal のスクリーンショット。最も古いデプロイが強調表示されています。

  5. ナビゲーション ウィンドウで、[出力] を選択します。 このリストには、そのデプロイの出力値が表示され、これには役立つ情報が含まれています。

  6. シェルを開き、cmdToGetKubeadminCredentials フィールドの値を貼り付けて実行します。 OpenShift クラスター コンソール ポータルにサインインするための管理者アカウントと資格情報が表示されます。 次の例は、管理者アカウントを示しています。

    az aro list-credentials --resource-group eaparo033123rg --name clusterf9e8b9
    

    次の例のような出力が表示されます。

    {
      "kubeadminPassword": "xxxxx-xxxxx-xxxxx-xxxxx",
      "kubeadminUsername": "kubeadmin"
    }
    
  7. consoleUrl フィールドの値をインターネットに接続された Web ブラウザーに貼り付け、Enter キーを押します。 管理者ユーザー名とパスワードを入力し、[ログイン] を選択します。 Azure Red Hat OpenShift の管理コンソールで、[オペレーター]>[インストール済みオペレーター] を選択します。ここで、次のスクリーンショットに示すように、JBoss EAP オペレーターが正常にインストールされていることがわかります。

    [インストール済みオペレーター] ページを示す Red Hat OpenShift クラスター コンソール ポータルのスクリーンショット。

次に、次の手順を使用して、OpenShift CLI を使用して OpenShift クラスターに接続します。

  1. シェルで次のコマンドを使用して、GNU/Linux 用の最新の OpenShift 4 CLI をダウンロードします。 GNU/Linux 以外の OS で実行している場合は、その OS に適したバイナリをダウンロードします。

    cd ~
    wget https://mirror.openshift.com/pub/openshift-v4/clients/ocp/latest/openshift-client-linux.tar.gz
    
    mkdir openshift
    tar -zxvf openshift-client-linux.tar.gz -C openshift
    echo 'export PATH=$PATH:~/openshift' >> ~/.bashrc && source ~/.bashrc
    
  2. cmdToLoginWithKubeadmin フィールドの値をシェルに貼り付けて実行します。 login successful メッセージと、使用しているプロジェクトが表示されます。 次の内容は、OpenShift CLI を使用して OpenShift クラスターに接続するコマンドの例です。

    oc login \
        $(az aro show \
            --resource-group ${RG_NAME} \
            --name aro-cluster \
            --query apiserverProfile.url \
            --output tsv) \
        -u $(az aro list-credentials \
            --resource-group ${RG_NAME} \
            --name aro-cluster \
            --query kubeadminUsername \
            --output tsv) \
        -p $(az aro list-credentials \
            --resource-group ${RG_NAME} \
            --name aro-cluster \
            --query kubeadminPassword \
            --output tsv)
    

    次の例のような出力が表示されます。

    Login successful.
    
    You have access to 68 projects, the list has been suppressed. You can list all projects with 'oc projects'
    
    Using project "default".
    

JBoss EAP アプリを OpenShift クラスターにデプロイする

このセクションの手順では、クラスターにアプリをデプロイする方法について説明します。

アプリをクラスターにデプロイする

次の手順を使用して、アプリをクラスターにデプロイします。 このアプリは、GitHub リポジトリ rhel-jboss-templates/eap-coffee-app でホストされています。

  1. シェルで次のコマンドを実行します。 このコマンドでは、プロジェクトの作成、S2I を動作できるようにするためのアクセス許可の適用、プル シークレットのイメージ化、イメージのプルを有効にするためのプロジェクト内の関連サービス アカウントへのシークレットのリンクが行われます。 "'デタッチされた HEAD' 状態" に関する Git の警告を無視します。

    git clone https://github.com/Azure/rhel-jboss-templates.git
    cd rhel-jboss-templates
    git checkout 20240904
    cd ..
    oc new-project ${PROJECT_NAME}
    oc adm policy add-scc-to-user privileged -z default --namespace ${PROJECT_NAME}
    w0=-w0
    if [[ $OSTYPE == 'darwin'* ]]; then
      w0=
    fi
    
    CON_REG_ACC_USER_NAME_BASE64=$(echo ${CON_REG_ACC_USER_NAME} | base64 $w0)
    CON_REG_ACC_PWD_BASE64=$(echo ${CON_REG_ACC_PWD} | base64 $w0)
    

    次のセクションでは HEREDOC 形式を使用するため、独自のコードの抜粋に含めて実行することをお勧めします。

    cat <<EOF | oc apply -f -
    apiVersion: v1
    kind: Secret
    metadata:
      name: ${CON_REG_SECRET_NAME}
    type: Opaque
    data:
      username: ${CON_REG_ACC_USER_NAME_BASE64}
      password: ${CON_REG_ACC_PWD_BASE64}
    stringData:
      hostname: registry.redhat.io
    EOF
    

    シークレットが正常に作成されたことを示す secret/eaparo-sample-pull-secret created が表示されます。 この出力が表示されない場合は、先に進む前に問題のトラブルシューティングと解決を行ってください。 最後に、クラスターでコンテナー イメージを実行できるように、コンテナー イメージをダウンロードする既定のサービス アカウントにシークレットをリンクします。

    oc secrets link default ${CON_REG_SECRET_NAME} --for=pull
    oc secrets link builder ${CON_REG_SECRET_NAME} --for=pull
    
  2. 次のコマンドを使用して、イメージ ストリーム jboss-eap74-openjdk11-openshiftをプルします。 次に、ソースからイメージへの処理を開始し、完了するまで待ちます。

    oc apply -f https://raw.githubusercontent.com/jboss-container-images/jboss-eap-openshift-templates/eap74/eap74-openjdk11-image-stream.json
    oc new-build --name=${APPLICATION_NAME} --binary --image-stream=jboss-eap74-openjdk11-openshift:7.4.0 -e CUSTOM_INSTALL_DIRECTORIES=extensions
    oc start-build ${APPLICATION_NAME} --from-dir=rhel-jboss-templates/eap-coffee-app --follow
    

正常に終了すると、最後の部分は次のようになります。

Writing manifest to image destination
Storing signatures
Successfully pushed image-registry.openshift-image-registry.svc:5000/eaparo-sample/javaee-cafe@sha256:754587c33c03bf42ba4f3ce5a11526bbfc82aea94961ce1179a415c2bfa73449
Push successful

同様の出力が表示されない場合は、先に進む前に問題のトラブルシューティングと解決を行ってください。

データベース パスワードのシークレットを作成する

次に、次の手順を使用してシークレットを作成します。

  1. 次のコマンドを使用して、データベースのパスワードを保持するためのシークレットを作成します。

    oc create secret generic db-secret --from-literal=password=${DB_PASSWORD}
    
  2. 次のコマンドを使用して、コンテナー化されたアプリの 3 つのレプリカをクラスター内でデプロイして実行します。

    cat <<EOF | oc apply -f -
    apiVersion: wildfly.org/v1alpha1
    kind: WildFlyServer
    metadata:
      name: ${APPLICATION_NAME}
    spec:
      applicationImage: ${APPLICATION_NAME}:latest
      replicas: ${APP_REPLICAS}
      env:
        - name: DB_SERVICE_PREFIX_MAPPING
          value: TEST-MYSQL=DS1
        - name: TEST_MYSQL_SERVICE_HOST
          value: ${DB_HOST}
        - name: TEST_MYSQL_SERVICE_PORT
          value: '3306'
        - name: DS1_JNDI
          value: java:jboss/datasources/JavaEECafeDB
        - name: DS1_URL
          value: jdbc:mysql://${DB_HOST}:3306/${DB_DATABASE_NAME}
        - name: DS1_DRIVER
          value: mysql
        - name: DS1_DATABASE
          value: ${DB_DATABASE_NAME}
        - name: DS1_USERNAME
          value: ${DB_USERNAME}
        - name: DS1_PASSWORD
          valueFrom:
            secretKeyRef:
              name: db-secret
              key: password
      secrets:
        - db-secret
    EOF
    

    コマンドが正常に完了すると、wildflyserver.wildfly.org/javaee-cafe created が表示されます。 この出力が表示されない場合は、先に進む前に問題のトラブルシューティングと解決を行ってください。

  3. oc get pod -w | grep 1/1 を実行して、アプリのすべてのポッドが実行されているかどうかを監視します。 次の例のような出力が表示されたら、Ctrl + C を押して監視を停止します。

    javaee-cafe-2         1/1     Running             0          31s
    javaee-cafe-1         1/1     Running             0          30s
    javaee-cafe-0         1/1     Running             0          30s
    

    適切な状態になるまでに数分かかる場合があります。 Running が表示される前に、ErrImagePullImagePullBackOff などの STATUS 列の値が表示される場合もあります。

  4. 次のコマンドを実行して、アプリケーションの URL を返します。 この URL を使用して、デプロイされたサンプル アプリにアクセスできます。 出力をクリップボードにコピーします。

    echo http://$(oc get route ${APPLICATION_NAME}-route -o=jsonpath='{.spec.host}')/javaee-cafe
    
  5. インターネットに接続された Web ブラウザーに出力を貼り付け、Enter キーを押します。 次のスクリーンショットのように、Java EE Cafe アプリの UI が表示されます。

    Java EE Cafe サンプル アプリ UI のスクリーンショット。

  6. 複数の行を追加または削除して、データベース接続が正しく機能していることを確認します。

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

OpenShift クラスターを引き続き使用する予定がない場合は、作業リソース グループに戻ります。 ページの上部にある [リソース グループ] テキストの下で、リソース グループを選択します。 次に、[リソース グループの削除] を選択します。

次のステップ

JBoss EAP on Azure のデプロイの詳細については、「Red Hat JBoss EAP on Azure」を参照してください。