编辑此页面

使用 S2I 将 Quarkus 应用程序部署到 OpenShift

您可以使用 Source-to-Image (S2I) 方法将 Quarkus 应用程序部署到 OpenShift。使用 S2I 时,您必须通过 Git 存储库或在构建时上传源代码来向构建容器提供源代码。

部署过程根据您的 Quarkus 应用程序使用的 Java 版本而有所不同。

使用 Java 17 将 Quarkus 应用程序部署到 OpenShift

您可以使用 S2I 方法将运行 Java 17 的 Quarkus 应用程序部署到 OpenShift。

先决条件

  • 您有一个使用 Java {jdk-ver-other} 构建的 Quarkus 应用程序。

  • 可选:您有一个包含 quarkus-openshift 扩展的 Quarkus 项目。

  • 您正在正确的 OpenShift 项目命名空间中工作。

  • 您的项目托管在 Git 存储库中。

步骤

  1. 打开 pom.xml 文件,并将 Java 版本设置为 17

    <maven.compiler.source>17</maven.compiler.source>
    <maven.compiler.target>17</maven.compiler.target>
  2. 通过输入以下命令打包您的 Java 17 应用程序

    ./mvnw clean package
  3. 在与 pom.xml 文件相同的级别创建一个名为 .s2i 的目录。

  4. .s2i 目录中创建一个名为 environment 的文件,并添加以下内容

    MAVEN_S2I_ARTIFACT_DIRS=target/quarkus-app
    S2I_SOURCE_DEPLOYMENTS_FILTER=app lib quarkus quarkus-run.jar
    JAVA_OPTIONS=-Dquarkus.http.host=0.0.0.0
    AB_JOLOKIA_OFF=true
    JAVA_APP_JAR=/deployments/quarkus-run.jar
  5. 提交并推送您的更改到远程 Git 存储库。

  6. 通过输入以下命令导入支持的 OpenShift 镜像

    oc import-image ubi9/openjdk-17 --from=registry.access.redhat.com/ubi9/openjdk-17 --confirm
    • 如果您使用的是 OpenShift 镜像注册表,并且从同一项目中的镜像流拉取,则您的 Pod 服务帐户必须已具有正确的权限。

    • 如果您跨其他 OpenShift 项目或从受保护的注册表拉取镜像,可能需要额外的配置步骤。

    有关更多信息,请参阅 Red Hat OpenShift Container Platform 文档。

  7. 构建项目,创建应用程序,并部署 OpenShift 服务

    oc new-app registry.access.redhat.com/ubi9/openjdk-17~<git_path> --name=<project_name>
    • <git_path> 替换为托管您的 Quarkus 项目的 Git 存储库路径。例如,oc new-app registry.access.redhat.com/ubi9/openjdk-17~https://github.com/johndoe/code-with-quarkus.git --name=code-with-quarkus

      如果您未为 Git 存储库配置 SSH 密钥,则在指定 Git 路径时,请使用 HTTPS URL 而不是 SSH URL。

    • <project_name> 替换为您的应用程序名称。

  8. 要部署项目的更新版本,请将更改推送到 Git 存储库,然后运行

    oc start-build <project_name>
  9. 要将路由公开给应用程序,请运行以下命令

    oc expose svc <project_name>

验证

  1. 列出与您当前 OpenShift 项目关联的 Pod

    oc get pods
  2. 要获取应用程序 Pod 的日志输出,请运行以下命令,将 <pod_name> 替换为以您的应用程序名称为前缀的最新 Pod 的名称

    oc logs -f <pod_name>

使用 Java 21 将 Quarkus 应用程序部署到 OpenShift

您可以使用 S2I 方法将运行 Java 21 的 Quarkus 应用程序部署到 OpenShift。

先决条件

  • 可选:您有一个包含 quarkus-openshift 扩展的 Quarkus Maven 项目。

  • 您正在正确的 OpenShift 项目命名空间中工作。

  • 您的项目托管在 Git 存储库中。

过程

  1. 打开 pom.xml 文件,并将 Java 版本设置为 21

    <maven.compiler.source>21</maven.compiler.source>
    <maven.compiler.target>21</maven.compiler.target>
  2. 通过输入以下命令打包您的 Java {jdk-ver-latest} 应用程序

    ./mvnw clean package
  3. 在与 pom.xml 文件相同的级别创建一个名为 .s2i 的目录。

  4. .s2i 目录中创建一个名为 environment 的文件,并添加以下内容

    MAVEN_S2I_ARTIFACT_DIRS=target/quarkus-app
    S2I_SOURCE_DEPLOYMENTS_FILTER=app lib quarkus quarkus-run.jar
    JAVA_OPTIONS=-Dquarkus.http.host=0.0.0.0
    AB_JOLOKIA_OFF=true
    JAVA_APP_JAR=/deployments/quarkus-run.jar
  5. 提交并推送您的更改到远程 Git 存储库。

  6. 通过输入以下命令导入支持的 OpenShift 镜像

    oc import-image ubi9/openjdk-21 --from=registry.access.redhat.com/ubi9/openjdk-21 --confirm
    • 如果您使用的是 OpenShift 镜像注册表,并且从同一项目中的镜像流拉取,则您的 Pod 服务帐户必须已具有正确的权限。

    • 如果您跨其他 OpenShift 项目或从受保护的注册表拉取镜像,可能需要额外的配置步骤。有关更多信息,请参阅 Red Hat OpenShift Container Platform 文档。

    • 如果您在 IBM Z 基础架构上部署,请改用 oc import-image ubi9/openjdk-21 --from=registry.redhat.io/ubi9/openjdk-21 --confirm。有关此镜像的信息,请参阅 {runtimes-openjdk-long} 21

  7. 构建项目,创建应用程序,并部署 OpenShift 服务

    oc new-app registry.access.redhat.com/ubi8/openjdk-21~<git_path> --name=<project_name>
    • <git_path> 替换为托管您的 Quarkus 项目的 Git 存储库路径。例如,oc new-app registry.access.redhat.com/ubi9/openjdk-21~https://github.com/johndoe/code-with-quarkus.git --name=code-with-quarkus

      如果您未为 Git 存储库配置 SSH 密钥,则在指定 Git 路径时,请使用 HTTPS URL 而不是 SSH URL。

    • <project_name> 替换为您的应用程序名称。

      如果您在 IBM Z 基础架构上部署,请改用 oc new-app ubi9/openjdk-21~<git_path> --name=<project_name>

  8. 要部署项目的更新版本,请将更改推送到 Git 存储库,然后运行

    oc start-build <project_name>
  9. 要将路由公开给应用程序,请运行以下命令

    oc expose svc <project_name>

验证

  1. 列出与您当前 OpenShift 项目关联的 Pod

    oc get pods
  2. 要获取应用程序 Pod 的日志输出,请运行以下命令,将 <pod_name> 替换为以您的应用程序名称为前缀的最新 Pod 的名称

    oc logs -f <pod_name>

相关内容