第3章 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.8.0-reference-implementation.zip
をダウンロードします。 -
ファイルの内容を展開して、さらに
rhdm-7.8.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 ドキュメントの RBAC を使用したパーミッションの定義および適用 を参照してください。
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 の更新をトリガーする方法は、4章HA CEP クライアントの作成 を参照してください。
3.1. HA CEP サーバーがサポートする環境変数 (オプション)
オプションで、HA CEP サーバーの以下の環境変数を設定して、Maven リポジトリーを使用するように設定します。deployment.yaml
ファイルを使用して、デプロイメント時の変数を設定します。
表3.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 |
|