3.5. 为 KIE 服务器和智能路由器创建自定义镜像


您可以创建自定义镜像,将文件添加到 KIE 服务器和智能路由器部署中。您必须将镜像推送到您自己的容器 registry。在部署 Red Hat Process Automation Manager 时,您可以将 Operator 配置为使用自定义镜像。

如果使用自定义镜像,则必须禁用自动版本更新。安装新版本时,请使用与 before 和新版本标签相同的名称构建镜像,并将镜像推送到 registry。然后,您可以更改版本,Operator 会自动拉取新镜像。有关更改 Operator 中产品版本的步骤,请参阅 第 3.3 节 “修改使用 Operator 部署的环境”

特别是,您可以创建以下类型的自定义镜像:

  • 包含额外 RPM 软件包的 KIE 服务器的自定义镜像
  • 包含额外 JAR 类库的 KIE 服务器的自定义镜像
  • 智能路由器的自定义镜像,其中包含额外的 JAR 类库来实现自定义路由

3.5.1. 使用额外的 RPM 软件包创建自定义 KIE 服务器镜像

您可以创建安装额外 RPM 软件包的自定义 KIE 服务器镜像。您可以将此镜像推送到自定义 registry 中,然后使用它部署 KIE 服务器。

您可以从 Red Hat Enterprise Linux 8 软件仓库安装任何软件包。本例安装 procps-ng 软件包,该软件包提供 ps 实用程序,但您可以修改该软件包来安装其他软件包。

流程

  1. 使用 podman login 命令向 registry.redhat.io registry 进行身份验证。有关向 registry 进行身份验证的说明,请参阅 Red Hat Container Registry 身份验证
  2. 要下载支持的 KIE Server 基础镜像,请输入以下命令:

    podman pull registry.redhat.io/rhpam-7/rhpam-kieserver-rhel8:7.11.0
  3. 创建基于基础镜像定义自定义镜像的 Dockerfile。该文件必须将当前用户更改为 root,使用 yum 命令安装 RPM 软件包,然后恢复到 USER 185 (Red Hat JBoss EAP 用户)。以下示例显示了 Dockerfile 文件的内容:

    FROM registry.redhat.io/rhpam-7/rhpam-kieserver-rhel8:7.11.0
    USER root
    RUN yum -y install procps-ng
    USER 185

    根据需要替换 RPM 文件的名称。yum 命令从 Red Hat Enterprise Linux 8 软件仓库自动安装所有依赖项。在这种情况下,您可能需要安装几个 RPM 文件,请使用几个 RUN 命令。

  4. 使用 Dockerfile 构建自定义镜像。为镜像提供完全限定名称,包括 registry 名称。您必须使用与基础镜像版本相同的 version 标签。要构建镜像,请输入以下命令:

    podman build . --tag registry_address/image_name:7.11.0

    例如:

    podman build . --tag registry.example.com/custom/rhpam-kieserver-rhel8:7.11.0
  5. 构建完成后,运行镜像,登录该镜像,并验证自定义是否成功。使用以下命令:

    podman run -it --rm registry_address/image_name:7.11.0 /bin/bash

    例如:

    podman run -it --rm registry.example.com/custom/rhpam-kieserver-rhel8:7.11.0 /bin/bash

    在镜像的 shell 提示符中,输入 命令来测试 RPM 是否已安装,然后输入 exit。例如,对于 procps-ng,请运行 ps 命令:

    [jboss@c2fab36b778e ~]$ ps
    PID TTY          TIME CMD
      1 pts/0    00:00:00 bash
     13 pts/0    00:00:00 ps
    [jboss@c2fab36b778e ~]$ exit
  6. 要将自定义镜像推送到 registry 中,请输入以下命令:

    podman push registry_address/image_name:7.11.0 docker://registry_address/image_name:7.11.0

    例如:

    podman push registry.example.com/custom/rhpam-kieserver-rhel8:7.11.0 docker://registry.example.com/custom/rhpam-kieserver-rhel8:7.11.0

后续步骤

在部署 KIE 服务器时,设置镜像名称和命名空间,以指定 registry 中的自定义镜像。点 Set KIE Server image,将 Kind 值改为 DockerImage,然后提供包括 registry 名称的镜像名称,但没有 version 标签,例如:

registry.example.com/custom/rhpam-kieserver-rhel8

有关使用 Operator 部署 KIE 服务器的步骤,请参考 第 3.2.5 节 “设置环境的自定义 KIE 服务器配置”

3.5.2. 使用额外的 JAR 文件创建自定义 KIE 服务器镜像

您可以创建一个自定义 KIE 服务器镜像,其中安装了额外的 JAR 文件(或几个 JAR 文件)来扩展服务器的功能。您可以将此镜像推送到自定义 registry 中,然后使用它部署 KIE 服务器。

例如,您可以创建一个自定义类 JAR 在 KIE 服务器中提供自定义 Prometheus 指标。有关创建自定义类的说明,请参阅 管理和监控 KIE Server 中的使用自定义指标在 KIE 服务器中扩展 Prometheus 指标监控

流程

  1. 开发与 KIE 服务器一起使用的自定义库。您可以使用以下文档和示例来开发库:

  2. 使用 Maven 构建库,以便 JAR 文件放置到 目标目录中。本例使用 custom-kieserver-ext-1.0.0.Final.jar 文件名。
  3. 使用 podman login 命令向 registry.redhat.io registry 进行身份验证。有关向 registry 进行身份验证的说明,请参阅 Red Hat Container Registry 身份验证
  4. 要下载支持的 KIE Server 基础镜像,请输入以下命令:

    podman pull registry.redhat.io/rhpam-7/rhpam-kieserver-rhel8:7.11.0
  5. 创建基于基础镜像定义自定义镜像的 Dockerfile。该文件必须将 JAR 文件复制到 /opt/eap/standalone/deployments/ROOT.war/WEB-INF/lib/ 目录中。以下示例显示了 Dockerfile 文件的内容:

    FROM registry.redhat.io/rhpam-7/rhpam-kieserver-rhel8:7.11.0
    COPY target/custom-kieserver-ext-1.0.0.Final.jar /opt/eap/standalone/deployments/ROOT.war/WEB-INF/lib/
  6. 使用 Dockerfile 构建自定义镜像。为镜像提供完全限定名称,包括 registry 名称。您必须使用与基础镜像版本相同的 version 标签。要构建镜像,请输入以下命令:

    podman build . --tag registry_address/image_name:7.11.0

    例如:

    podman build . --tag registry.example.com/custom/rhpam-kieserver-rhel8:7.11.0
  7. 要将自定义镜像推送到 registry 中,请输入以下命令:

    podman push registry_address/image_name:7.11.0 docker://registry_address/image_name:7.11.0

    例如:

    podman push registry.example.com/custom/rhpam-kieserver-rhel8:7.11.0 docker://registry.example.com/custom/rhpam-kieserver-rhel8:7.11.0

后续步骤

在部署 KIE 服务器时,设置镜像名称和命名空间,以指定 registry 中的自定义镜像。点 Set KIE Server image,将 Kind 值改为 DockerImage,然后提供包括 registry 名称的镜像名称,但没有 version 标签,例如:

registry.example.com/custom/rhpam-kieserver-rhel8

有关使用 Operator 部署 KIE 服务器的步骤,请参考 第 3.2.5 节 “设置环境的自定义 KIE 服务器配置”

3.5.3. 使用额外的 JAR 文件创建自定义智能路由器镜像,以实施自定义路由

默认情况下,智能路由器根据容器别名路由请求。如果多个 KIE 服务器为服务提供相同的容器别名,则智能路由器会在它们之间平衡负载。

在某些情况下,需要自定义路由功能。您可以创建自定义类来实现自定义路由,然后使用类创建自定义智能路由器镜像。您可以将此镜像推送到自定义 registry 中,然后使用它部署智能路由器。

先决条件

  • 已安装 JDK 和 Apache Maven。
  • 用于部署 Red Hat Process Automation Manager 的项目在 Red Hat OpenShift Container Platform 环境中创建
  • 您知道 Red Hat OpenShift Container Platform 镜像 registry 的路由,并有权将镜像推送到 registry 中。有关配置 registry 的说明,请参阅 Red Hat OpenShift Container Platform 产品文档中的 Registry

流程

  1. GitHub 存储库下载 路由器扩展的示例源。
  2. 根据需要修改路由器扩展的示例源。现有代码根据容器版本实施简单路由。
  3. 使用 Maven 构建源代码:

    mvn clean package

    构建过程生成以下 JAR 文件: target/router-ext-0.0.1-SNAPSHOT.jar

  4. 创建用于创建自定义镜像的工作目录,将生成的 JAR 文件复制到目录中,然后改为该目录,例如:

    mkdir /tmp/smartrouter
    cp target/router-ext-0.0.1-SNAPSHOT.jar /tmp/smartrouter
    cd /tmp/smartrouter
  5. 使用 podman login 命令向 registry.redhat.io registry 进行身份验证。有关向 registry 进行身份验证的说明,请参阅 Red Hat Container Registry 身份验证
  6. 要下载支持的智能路由器基础镜像,请输入以下命令:

    podman pull registry.redhat.io/rhpam-7/rhpam-smartrouter-rhel8:7.11.0
  7. 从官方智能路由器镜像中提取 openshift-launch.sh 文件:

    podman run --rm registry.redhat.io/rhpam-7/rhpam-smartrouter-rhel8:7.11.0 \
       cat /opt/rhpam-smartrouter/openshift-launch.sh > openshift-launch.sh
  8. 编辑 openshift-launch.sh 文件。在文件的最后一行,找到类似如下的 exec 指令:

    exec ${JAVA_HOME}/bin/java ${SHOW_JVM_SETTINGS} ${JAVA_OPTS} ${JAVA_OPTS_APPEND} ${JAVA_PROXY_OPTIONS} "${D_ARR[@]}" -jar /opt/${JBOSS_PRODUCT}/${KIE_ROUTER_DISTRIBUTION_JAR}

    将指令改为以下文本:

    exec ${JAVA_HOME}/bin/java ${SHOW_JVM_SETTINGS} "${D_ARR[@]}" \
        -cp /opt/${JBOSS_PRODUCT}/router-ext-0.0.1-SNAPSHOT.jar:/opt/${JBOSS_PRODUCT}/${KIE_ROUTER_DISTRIBUTION_JAR} \
        org.kie.server.router.KieServerRouter

    此更改将扩展 JAR 文件添加到 Java 类路径中。

  9. 创建基于基础镜像定义自定义镜像的 Dockerfile 文件。以下示例显示了 Dockerfile 文件的内容:

    FROM registry.redhat.io/rhpam-7/rhpam-smartrouter-rhel8:7.11.0
    RUN rm -rfv /opt/rhpam-smartrouter/openshift-launch.sh
    COPY openshift-launch.sh  /opt/rhpam-smartrouter/openshift-launch.sh
    COPY router-ext-0.0.1-SNAPSHOT.jar /opt/rhpam-smartrouter/router-ext-0.0.1-SNAPSHOT.jar
    
    USER root
    RUN chown jboss. /opt/rhpam-smartrouter/router-ext-0.0.1-SNAPSHOT.jar /opt/rhpam-smartrouter/openshift-launch.sh
    RUN chmod +x /opt/rhpam-smartrouter/openshift-launch.sh
    USER 185

    此文件包括以下操作:

    • 添加 JAR 文件和新的 openshift-launch.sh 文件
    • 将当前用户改为 root
    • openshift-launch.sh 文件设置所需的权限
    • 恢复到 USER 185,即 Red Hat JBoss EAP 用户
  10. 使用 oc 命令登录到您的 Red Hat OpenShift Container Platform 集群。
  11. 使用 podman login 命令登录到 Red Hat OpenShift Container Platform 集群 registry。
  12. 使用 Dockerfile 构建自定义镜像。为 Red Hat OpenShift Container Platform 集群 registry 和项目命名空间标记镜像。为镜像使用自定义名称,以及与基础镜像版本相同的 version 标签。要构建镜像,请输入以下命令:

    podman build . --tag registry-route/project-name_/image-name:7.11.0

    例如:

    podman build . --tag route-openshift-image-registry.openshift.example.com/rhpam-project/rhpam-smartrouter-rhel8-custom:7.11.0
  13. 构建完成后,运行镜像并验证自定义是否成功。使用以下命令:

    podman run registry-route/project-name/image-name:7.11.0

    例如:

    podman run route-openshift-image-registry.openshift.example.com/rhpam-project/rhpam-smartrouter-rhel8-custom:7.11.0

    确保输出提到了自定义服务,如下例所示:

    INFO: Using 'LatestVersionContainerResolver' container resolver and restriction policy 'ByPassUserNotAllowedRestrictionPolicy'
  14. 将自定义镜像推送(push)到 registry 中:

    podman push registry-route/project-name/image-name:7.11.0

    例如:

    podman push route-openshift-image-registry.openshift.example.com/rhpam-project/rhpam-smartrouter-rhel8-custom:7.11.0

后续步骤

在部署 Red Hat Process Automation Manager 时,在 Smart Router 选项卡中设置以下值:

  • 镜像上下文 :项目名称,如 rhpam-project
  • Image :自定义镜像名称,如 rhpam-smartrouter-rhel8-custom

有关使用操作器部署智能路由器的说明,请参阅 第 3.2.6 节 “为环境设置智能路由器配置”

注意

您还可以使用自定义标签而不是当前版本标签。但是,如果您使用当前版本标签,稍后您可以使用其 version 标签为新版本创建镜像。然后,当您升级 Red Hat Process Automation Manager 版本时,会自动包含新镜像。有关升级 Red Hat Process Automation Manager 版本的步骤,请参阅 第 3.3 节 “修改使用 Operator 部署的环境”

如果您使用自定义标签,在部署 Red Hat Process Automation Manager 时,在 Smart Router 选项卡中将 Image Tag 值设置为 custom 标签。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.