第14章 Mave リポジトリーを使用した HA CEP サーバーを実装して KJAR サービスを更新する手順
HA CEP サーバーを実装して、KJAR サービスと全依存関係を指定の Maven リポジトリーから取得できます。このような場合、Maven リポジトリーでサービスを更新して、クライアントコードから呼び出しを行うことで、いつでも KJAR サービスを更新できます。
ソースを準備して、ビルドし、Red Hat OpenShift Container Platform にデプロイします。サーバーをデプロイする前に、deployment.yaml ファイルに特定の環境変数を設定します。Maven リポジトリーを使用するには、UPDATABLEKJAR 変数を true に設定する必要があります。
前提条件
-
ocコマンドラインツールを使用して、管理者権限があるプロジェクトにログインしている。 - Red Hat OpenShift Container Platform 環境からアクセス可能な Maven リポジトリーを設定している。
手順
-
Red Hat カスタマーポータルの
Software Downloadsページから製品配信可能ファイル rhdm-7.11.0-reference-implementation.zip をダウンロードします。 -
ファイルの内容を展開してから、
rhdm-7.11.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
mvn clean install -DskipTestsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 作成した KJAR と必要な依存関係を Maven リポジトリーにアップロードします。
- 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
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.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow アプリケーションが、リーダーの選択に使用する ConfigMap にアクセスできるように、ロールベースのアクセス制御を設定します。
springbootディレクトリーに移動して、以下のコマンドを入力します。oc create -f kubernetes/service-account.yaml oc create -f kubernetes/role.yaml oc create -f kubernetes/role-binding.yaml
oc create -f kubernetes/service-account.yaml oc create -f kubernetes/role.yaml oc create -f kubernetes/role-binding.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Red Hat OpenShift Container Platform のロールベースのアクセス制御に関する詳細は、Red Hat OpenShift Container Platform 製品ドキュメントの RBAC の使用によるパーミッションの定義および適用 を参照してください。
springbootディレクトリーでpom.xmlファイルを編集して、以下の依存関係を削除します。<dependency> <groupId>org.kie</groupId> <artifactId>sample-hacep-project-kjar</artifactId> </dependency><dependency> <groupId>org.kie</groupId> <artifactId>sample-hacep-project-kjar</artifactId> </dependency>Copy to Clipboard Copied! Toggle word wrap Toggle overflow springbootディレクトリーで、以下のコマンドを実行してデプロイメント用のイメージを作成し、OpenShift 環境用に設定したリポジトリーにプッシュします。oc new-build --binary --strategy=docker --name openshift-kie-springboot oc start-build openshift-kie-springboot --from-dir=. --follow
oc new-build --binary --strategy=docker --name openshift-kie-springboot oc start-build openshift-kie-springboot --from-dir=. --followCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して、ビルドしたイメージの名前を検出します。
oc get is/openshift-kie-springboot -o template --template='{{range .status.tags}}{{range .items}}{{.dockerImageReference}}{{end}}{{end}}'oc get is/openshift-kie-springboot -o template --template='{{range .status.tags}}{{range .items}}{{.dockerImageReference}}{{end}}{{end}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
テキストエディターで
kubernetes/deployment.yamlファイルを開きます。 - 既存のイメージ URL を直前のコマンドの結果に置き換えます。
文頭に
@の記号がある行の最後にある文字をすべて削除し、その行に:latestを追加します。以下に例を示します。image: image-registry.openshift-image-registry.svc:5000/hacep/openshift-kie-springboot:latest
image: image-registry.openshift-image-registry.svc:5000/hacep/openshift-kie-springboot:latestCopy to Clipboard Copied! Toggle word wrap Toggle overflow containers:行とenv:行の下で、以下の例のように環境変数を設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow この例では
KJARGAV変数は、KJAR サービスのグループ、アーティファクト、バージョン (GAV) に置き換え、MAVEN_MIRROR_URL変数の値は、KJAR サービスを含む Maven リポジトリーの URL に置き換えます。必要に応じて他の変数を設定します。サポート対象の環境変数の一覧は、「HA CEP サーバーがサポートする環境変数 (オプション)」 を参照してください。
- ファイルを保存します。
以下のコマンドを実行してイメージをデプロイします。
oc apply -f kubernetes/deployment.yaml
oc apply -f kubernetes/deployment.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
クライアントコードから KJAR の更新をトリガーする方法は、15章HA CEP クライアントの作成 を参照してください。
14.1. HA CEP サーバーがサポートする環境変数 (オプション) リンクのコピーリンクがクリップボードにコピーされました!
以下の表には、Maven リポジトリーを使用するように設定された HA CEP サーバーに設定できる任意の環境変数をまとめています。これらの変数を deployment.yaml ファイルに追加し、それらをデプロイメント時に設定します。
Maven リポジトリーを使用するには、14章Mave リポジトリーを使用した HA CEP サーバーを実装して KJAR サービスを更新する手順 の説明に従って、サーバーの UPDATABLEKJAR 環境変数および KJARGAV 環境変数を設定してください。
| 名前 | 説明 | 例 |
|---|---|---|
|
| ローカルの Maven リポジトリーとして使用するディレクトリー。 |
|
|
| アーティファクトの取得に使用可能な Maven ミラーのベース URL。 |
|
|
|
設定すると、マルチミラーサポートが有効になります。この値には、コンマで区切れたミラーのプリフィックス一覧が含まれます。この変数を設定した場合には、他の |
|
|
|
設定すると、マルチリポジトリーサポートが有効になります。この値には、コンマで区切れたリポジトリーのプリフィックス一覧が含まれます。この変数を設定した場合には、他の |
|
|
|
使用するカスタムの Maven ファイル |
|
|
| 指定のミラーに使用する ID。省略する場合には、一意の ID が生成されます。 |
|
|
|
このミラーでミラリングされるリポジトリー ID。デフォルト値は |
|
|
| ミラーの URL。 |
|
|
| Maven リポジトリーのホスト名。 |
|
|
| Maven リポジトリー ID。 |
|
|
| Maven リポジトリーのレイアウト。 |
|
|
| Maven リポジトリーのユーザー名。 |
|
|
| Maven リポジトリーのパスフレーズ。 |
|
|
| Maven リポジトリーのパスワード。 |
|
|
| Maven リポジトリーのパス。 |
|
|
| Maven リポジトリーのポート。 |
|
|
| Maven リポジトリーに接続するのに使用する秘密鍵へのローカルパス。 |
|
|
| Maven リポジトリーのプロトコル。 |
|
|
| Maven リポジトリーのリリースが有効。 |
|
|
| Maven リポジトリーリリース更新ポリシー。 |
|
|
| Maven リポジトリーの OpenShift サービス。この値は、URL または host/port/protocol が指定されていない場合に使用します。 |
|
|
| Maven リポジトリーのスナップショットが有効。 |
|
|
| Maven リポジトリースナップショット更新ポリシー。 |
|
|
| Maven リポジトリーの完全修飾 URL |
|