第17章 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 ページから製品配信可能ファイル
rhpam-7.12.0-reference-implementation.zip
をダウンロードします。 -
ファイルの内容を展開してから、
rhpam-7.12.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
作成した 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
アプリケーションが、リーダーの選択に使用する 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 製品ドキュメントの Using RBAC to define and apply permissions を参照してください。
springboot
ディレクトリーでpom.xml
ファイルを編集して、以下の依存関係を削除します。<dependency> <groupId>org.kie</groupId> <artifactId>sample-hacep-project-kjar</artifactId> </dependency>
springboot
ディレクトリーで、以下のコマンドを実行してデプロイメント用のイメージを作成し、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
ファイルを開きます。 - 既存のイメージ URL を直前のコマンドの結果に置き換えます。
文頭に
@
の記号がある行の最後にある文字をすべて削除し、その行に:latest
を追加します。以下に例を示します。image: image-registry.openshift-image-registry.svc:5000/hacep/openshift-kie-springboot:latest
containers:
行とenv:
行の下で、以下の例のように環境変数を設定します。containers: - env: - name: UPDATABLEKJAR value: "true" - name: KJARGAV value: <GroupID>:<ArtifactID>:<Version> - name: MAVEN_LOCAL_REPO value: /app/.m2/repository - name: MAVEN_MIRROR_URL value: http://<nexus_url>/repository/maven-releases/ - name: MAVEN_SETTINGS_XML value: /app/.m2/settings.xml
この例では
KJARGAV
変数は、KJAR サービスのグループ、アーティファクト、バージョン (GAV) に置き換え、MAVEN_MIRROR_URL
変数の値は、KJAR サービスを含む Maven リポジトリーの URL に置き換えます。必要に応じて他の変数を設定します。サポート対象の環境変数の一覧は、「HA CEP サーバーがサポートする環境変数 (オプション)」 を参照してください。
- ファイルを保存します。
以下のコマンドを実行してイメージをデプロイします。
oc apply -f kubernetes/deployment.yaml
クライアントコードから KJAR の更新をトリガーする方法は、18章HA CEP クライアントの作成 を参照してください。
17.1. HA CEP サーバーがサポートする環境変数 (オプション)
以下の表には、Maven リポジトリーを使用するように設定された HA CEP サーバーに設定できる任意の環境変数をまとめています。これらの変数を deployment.yaml
ファイルに追加し、それらをデプロイメント時に設定します。
Maven リポジトリーを使用するには、17章Mave リポジトリーを使用した HA CEP サーバーを実装して KJAR サービスを更新する手順 の説明に従って、サーバーの UPDATABLEKJAR
環境変数および KJARGAV
環境変数を設定してください。
表17.1 HA CEP サーバーがサポートする環境変数 (オプション)
名前 | 説明 | 例 |
---|---|---|
| ローカルの 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 |
|