第2章 HA CEP サーバーの実装
高可用性 (HA) CEP サーバーは、Red Hat OpenShift Container Platform 環境で実行します。このサーバーには、必要なすべての Drools ルールと、イベント処理に必要なその他のコードが含まれています。
ソースを準備して、ビルドし、Red Hat OpenShift Container Platform にデプロイします。
または、別のプロセスを使用して、いつでも KJAR サービスを更新できる HA CEP サーバーをデプロイします。このプロセスに関する詳細は、3章Mave リポジトリーを使用した HA CEP サーバーを実装して KJAR サービスを更新する手順 を参照してください。
前提条件
-
ocコマンドラインツールを使用して、管理者権限があるプロジェクトにログインしている。
手順
-
Red Hat カスタマーポータルの Software Downloads ページから製品配信可能ファイル
rhdm-7.7.0-reference-implementation.zipをダウンロードします。 -
ファイルの内容を展開して、さらに
rhdm-7.7.0-openshift-drools-hacep-distribution.zipファイルを展開します。 -
openshift-drools-hacep-distribution/sourcesディレクトリーに移動します。 -
sample-hacep-project/sample-hacep-project-kjarディレクトリー内のサンプルプロジェクトをもとに、サーバーのコードを確認して変更します。複合イベント処理のロジックは、src/main/resources/org/drools/cepサブディレクトリーの DRL ルールで定義します。 標準の Maven コマンドを使用してプロジェクトをビルドします。
mvn clean install -DskipTests- Red Hat AMQ Streams 向けの OpenShift operator を有効にして、プロジェクトで AMQ Streams (kafka) クラスターを作成します。Red Hat AMQ Streams のインストールに関する情報は、Using AMQ Streams on OpenShift を参照してください。
サーバーの操作に必要な kafka のトピックを作成するには、
openshift-drools-hacep-distribution/sourcesディレクトリーで、以下のコマンドを実行します。oc apply -f kafka-topics/control.yaml oc apply -f kafka-topics/events.yaml oc apply -f kafka-topics/kiesessioninfos.yaml oc apply -f kafka-topics/snapshot.yamlアプリケーションが、リーダーの選択に使用する ConfigMap にアクセスできるように、ロールベースのアクセス制御を設定します。
springbootディレクトリーに移動して、以下のコマンドを入力します。oc create -f kubernetes/service-account.yaml oc create -f kubernetes/role.yaml oc create -f kubernetes/role-binding.yamlRed Hat OpenShift Container Platform のロールベースのアクセス制御に関する詳細は、Red Hat OpenShift Container Platform ドキュメントの RBAC を使用したパーミッションの定義および適用 を参照してください。
ocコマンドを使用して、ユーザー ID とグループ ID の有効な値 (Docker ファイルに設定する必要あり) を検出します。以下のコマンドを入力します。oc describe project <projectname>上記のコマンドでは、
<projectname>はプロジェクト名に置き換えます。以下の例のように、
supplemental-groupsとuid-rangeが表示されている行を検索します。openshift.io/sa.scc.supplemental-groups=1000160000/10000 openshift.io/sa.scc.uid-range=1000160000/10000springbootディレクトリーで、Dockerfileファイルを編集します。以下の行を見つけます。RUN groupadd -r app -g <id_group> && useradd -u <id_user> -r -g app -m -d /app -s /sbin/nologin -c "App user" app && chmod 755 /app----この行では、
<id_group>は、supplemental-groupsの間隔の値に、<id_user>はuid-rangeの間隔の値に置き換えます。RUN groupadd -r app -g 1000160001 && useradd -u 1000160001 -r -g app -m -d /app -s /sbin/nologin -c "App user" app && chmod 755 /appspringbootディレクトリーで、以下のコマンドを実行してデプロイメント用のイメージを作成し、OpenShift 環境用に設定したリポジトリーにプッシュします。oc new-build --binary --strategy=docker --name openshift-kie-springboot oc start-build openshift-kie-springboot --from-dir=. --follow以下のコマンドを実行して、ビルドしたイメージの名前を検出します。
oc get is/openshift-kie-springboot -o template --template='{{range .status.tags}}{{range .items}}{{.dockerImageReference}}{{end}}{{end}}'-
テキストエディターで
kubernetes/deployment.yamlファイルを開きます。 -
<id_user>は、Docker ファイルに入力したユーザー ID に置き換えます。 - 既存のイメージ URL を直前のコマンドの結果に置き換えます。
文頭に
@の記号がある行の最後にある文字をすべて削除し、その行に:latestを追加します。以下に例を示します。image: image-registry.openshift-image-registry.svc:5000/hacep/openshift-kie-springboot:latest- ファイルを保存します。
以下のコマンドを実行してイメージをデプロイします。
oc apply -f kubernetes/deployment.yaml