第 17 章 使用 Maven 存储库实施 HA CEP 服务器以更新 KJAR 服务
您可以实施 HA CEP 服务器,该服务器从您提供的 Maven 存储库检索 KJAR 服务和所有依赖项。在这种情况下,您可以通过在 Maven 存储库中更新它,然后从客户端代码发出调用,随时更新 KJAR 服务。
准备源,构建它,然后将其部署到 Red Hat OpenShift Container Platform 上。在部署服务器前,在 deployment.yaml
文件中设置特定的环境变量。要使用 Maven 存储库,您必须将 UPDATABLEKJAR
变量设置为 true
。
先决条件
-
您可以使用
oc
命令行工具以管理员特权登录到项目。 - 您已配置了可从 Red Hat OpenShift Container Platform 环境访问的 Maven 存储库。
流程
-
从红帽客户门户的 软件下载 页面下载
rhpam-7.11.0-reference-ement-zip
产品。 -
提取文件的内容,然后解压缩
rhpam-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
将生成的 KJAR 和任何所需的依赖项上传到 Maven 存储库。
- 为 Red Hat AMQ Streams 启用 OpenShift operator,然后在项目中创建 AMQ Streams (kafka)集群。有关安装 Red Hat AMQ Streams 的详情,请参考在 OpenShift 中使用 AMQ Streams。
要创建服务器操作所需的 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 服务的 Maven 存储库的组、工件和版本(GAV),并将MAVEN_MIRROR_URL
变量的值替换为包含您的 KJAR 服务的 Maven 存储库的 URL。(可选)设置其他变量。有关支持的环境变量列表,请参阅 第 17.1 节 “HA CEP 服务器支持的可选环境变量”。
- 保存该文件。
输入以下命令来部署镜像:
oc apply -f kubernetes/deployment.yaml
有关从客户端代码触发 KJAR 更新的步骤,请参考 第 18 章 创建 HA CEP 客户端。
17.1. HA CEP 服务器支持的可选环境变量
下表列出了您可以为配置为使用 Maven 存储库的 HA CEP 服务器设置的可选环境变量。将这些变量添加到 deployment.yaml
文件中,以在部署过程中设置它们。
要使用 Maven 存储库,请确保为服务器设置 UPDATABLEKJAR
KJARGAV
环境变量,如 第 17 章 使用 Maven 存储库实施 HA CEP 服务器以更新 KJAR 服务 所述。
名称 | 描述 | 示例 |
---|---|---|
| 用作本地 Maven 存储库的目录。 |
|
| 可用于检索工件的 Maven 镜像的基本 URL。 |
|
|
如果设置,则会启用多镜像支持。该值包含一个镜像前缀列表,用逗号分开。如果设置了此变量,则其他 |
|
|
如果设置,则会启用多仓库支持。该值包含一个仓库前缀列表,用逗号分开。如果设置了此变量,则其他 |
|
|
要使用的自定义 Maven |
|
| 用于指定镜像的标识符。如果省略,会生成一个唯一 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 |
|