第2章 HA CEP サーバーの実装

高可用性 (HA) CEP サーバーは、Red Hat OpenShift Container Platform 環境で実行します。このサーバーには、必要なすべての Drools ルールと、イベント処理に必要なその他のコードが含まれています。

ソースを準備して、ビルドし、Red Hat OpenShift Container Platform にデプロイする必要がある。

手順

  1. Red Hat カスタマーポータルの Software Downloads ページから製品配信可能ファイル rhpam-7.5.1-reference-implementation.zip をダウンロードします。
  2. ファイルの内容を展開して、さらに rhpam-7.5.1-openshift-drools-hacep-distribution.zip ファイルを展開します。
  3. openshift-drools-hacep-distribution/sources ディレクトリーに移動します。
  4. sample-hacep-project/sample-hacep-project-kjar ディレクトリー内のサンプルプロジェクトをもとに、サーバーのコードを確認して変更します。複合イベント処理のロジックは、src/main/resources/org.drools.cep サブディレクトリーの DRL ルールで定義します。
  5. 標準の Maven コマンドを使用してプロジェクトをビルドします。

    mvn clean install -DskipTests
  6. OpenShift operator インフラストラクチャーを使用して、Red Hat AMQ Streams をインストールします。Red Hat AMQ Streams のインストールに関する情報は、『 Using AMQ Streams on OpenShift Container Platform 』を参照してください。
  7. Red Hat OpenShift Container Platform の KafkaTopic リソースを使用して、kafka-topics サブディレクトリーの全 YAML ファイルからトピックを作成します。

    KafkaTopic リソースを使用したトピックの作成に関する詳細は、Red Hat AMQ ドキュメントの「 Using the topic operator 」を参照してください。

  8. アプリケーションが、リーダーの選択に使用する ConfigMap にアクセスできるように、ロールベースのアクセス制御を設定する必要があります。springboot ディレクトリーに移動して、以下のコマンドを入力します。

    oc create -f kubernetes/service-account.yaml
    oc create -f kubernetes/role.yaml
    oc create -f kubernetes/role-binding.yaml

    Red Hat OpenShift Container Platform のロールベースのアクセス制御に関する詳細は、Red Hat OpenShift Container Platform ドキュメントの「 RBAC を使用したパーミッションの定義および適用 」を参照してください。

  9. springboot ディレクトリーで、Dockerfile ファイルを編集します。microdnf コマンドを含む行を以下の行に置き換えます。

    RUN microdnf install java-1.8.0-openjdk-headless && microdnf clean all
    注記

    microdnf で最近問題が発見 されたため、回避策が必要です。

  10. springboot ディレクトリーで、以下のコマンドを入力して Docker イメージをビルドして、お使いのシステムで設定されている Docker レジストリーにプッシュします (このコマンドを実行する前に非公開のレジストリーを設定することをご検討ください)。このビルドは、Maven の依存関係として構築された t sample-hacep-project-kjar コードをインポートし、openshift-kie-springboot.jar ファイルの BOOT-INF/lib ディレクトリーに追加します。このビルドは、ビルドした sample-hacep-project-kjar コードを Maven 依存関係としてインポートし、openshift-kie-springboot.jar ファイルの BOOT-INF/lib ディレクトリーに追加します。その後、Docker ビルドは JAR ファイルを使用してイメージを作成します。

    docker login --username=<user username>
    docker build -t <user_username>/openshift-kie-springboot:<tag> .
    docker push <user_username>/openshift-kie-springboot:<tag>

    または、ビルドの目的で Podman を使用するには、コマンドで dockerpodman に置き換えます。

  11. OpenShift ユーザーインターフェイスで YAML ソースを作成します。kubernetes/deployment.yaml の内容を貼り付けて、必要に応じて Docker のイメージ名を変更します。Deploy をクリックしてサーバーをデプロイします。