8.8. 在 JBoss EAP OpenShift 平台上使用可引导 JAR

将应用打包为可引导 JAR 后,您可以在 JBoss EAP OpenShift 平台上运行该应用。

重要

在 OpenShift 中,您不能将 EAP Operator 自动事务恢复功能用于可引导 JAR。计划在以后的 JBoss EAP XP 3.0.0 补丁版本中修复此技术限制。

先决条件

注意

流程中显示的示例指定以下属性:

  • 用于 Maven 插件版本的 ${bootable.jar.maven.plugin.version}
  • Gall eon 功能包版本的 ${JBoss.xp.galleon.feature.pack.version}

您必须在项目中设置这些属性。例如:

<properties>
    <bootable.jar.maven.plugin.version>4.0.3.Final-redhat-00001</bootable.jar.maven.plugin.version>
    <jboss.xp.galleon.feature.pack.version>3.0.0.GA-redhat-00001</jboss.xp.galleon.feature.pack.version>
</properties>

流程

  1. 将以下内容添加到 pom.xml 文件的 <build> 元素 中。您必须指定任何 Maven 插件的最新版本,以及 org.jboss.eap:wildfly-galleon-pack Galleon 功能包的最新版本。例如:

    <plugins>
        <plugin>
            <groupId>org.wildfly.plugins</groupId>
            <artifactId>wildfly-jar-maven-plugin</artifactId>
            <version>${bootable.jar.maven.plugin.version}</version>
            <configuration>
                <feature-pack-location>org.jboss.eap:wildfly-galleon-pack:${jboss.xp.galleon.feature.pack.version}</feature-pack-location>
                <layers>
                    <layer>jaxrs-server</layer>
                    <layer>microprofile-platform</layer>
                </layers>
                <cloud/>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>package</goal>
                        </goals>
                    </execution>
                </executions>
        </plugin>
    </plugins>
    注意

    您必须将 <cloud/> 元素包含在插件配置的 <configuration> 元素 中,以便 JBoss EAP Maven JAR 插件可以识别您选择 OpenShift 平台。

  2. 打包应用程序:

    $ mvn package
  3. 使用 oc login 命令登录 您的 OpenShift 实例。
  4. 在 OpenShift 中创建新项目:例如:

    $ oc new-project bootable-jar-project
  5. 输入以下 oc 命令来创建应用程序镜像:

    $ mkdir target/openshift && cp target/microprofile-config-bootable.jar target/openshift  1
    
    $ oc import-image ubi8/openjdk-11 --from=registry.redhat.io/ubi8/openjdk-11 --confirm 2
    
    $ oc new-build --strategy source --binary --image-stream openjdk-11 --name microprofile-config-app 3
    
    $ oc start-build microprofile-config-app --from-dir target/openshift 4
    1
    在目标目录中创建 openshift 子目录。打包的应用程序复制到创建的子目录中。
    2
    将最新的 OpenJDK 11 镜像流标签和镜像信息导入到 OpenShift 项目中。
    3
    基于 microprofile-config-app 目录和 OpenJDK 11 镜像流创建构建配置。
    4
    使用 target/openshift 子目录作为二进制输入来构建应用程序。
    注意

    OpenShift 应用一组 CLI 脚本命令到可引导 JAR 配置文件,以将其调整到云环境。您可以通过打开 Maven 项目 /target 目录中的 bootable-jar-build-artifacts/generated-cli-script.txt 文件来访问此脚本。

  6. 验证:

    使用以下命令,查看可用的 OpenShift pod 列表并检查 pod 构建状态:

    $ oc get pods

    验证构建的应用程序镜像:

    $ oc get is microprofile-config-app

    输出显示了构建的应用镜像详细信息,如名称和镜像存储库、标签等。对于此流程中的示例,镜像流名称和标签输出会显示 microprofile-config-app:latest

  7. 部署应用程序:

    $ oc new-app microprofile-config-app
    
    $ oc expose svc/microprofile-config-app
    重要

    要为可引导 JAR 提供系统属性,您必须使用 JAVA_OPTS_APPEND 环境变量。以下示例演示了 JAVA_OPTS_APPEND 环境变量的用法:

    $ oc new-app <_IMAGESTREAM_> -e JAVA_OPTS_APPEND="-Xlog:gc*:file=/tmp/gc.log:time -Dwildfly.statistics-enabled=true"

    创建一个新应用并启动。应用配置作为新服务公开。

  8. 验证 :在终端中运行以下命令来测试应用程序的行为:

    $ curl http://$(oc get route microprofile-config-app --template='{{ .spec.host }}')/config/json

    预期输出:

    {"result":"Hello jim"}

其他资源