使用 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 存储库中。
步骤
-
打开
pom.xml
文件,并将 Java 版本设置为 17<maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target>
-
通过输入以下命令打包您的 Java 17 应用程序
./mvnw clean package
-
在与
pom.xml
文件相同的级别创建一个名为.s2i
的目录。 -
在
.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
-
提交并推送您的更改到远程 Git 存储库。
-
通过输入以下命令导入支持的 OpenShift 镜像
oc import-image ubi9/openjdk-17 --from=registry.access.redhat.com/ubi9/openjdk-17 --confirm
-
如果您使用的是 OpenShift 镜像注册表,并且从同一项目中的镜像流拉取,则您的 Pod 服务帐户必须已具有正确的权限。
-
如果您跨其他 OpenShift 项目或从受保护的注册表拉取镜像,可能需要额外的配置步骤。
有关更多信息,请参阅 Red Hat OpenShift Container Platform 文档。
-
-
构建项目,创建应用程序,并部署 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>
替换为您的应用程序名称。
-
-
要部署项目的更新版本,请将更改推送到 Git 存储库,然后运行
oc start-build <project_name>
-
要将路由公开给应用程序,请运行以下命令
oc expose svc <project_name>
使用 Java 21 将 Quarkus 应用程序部署到 OpenShift
您可以使用 S2I 方法将运行 Java 21 的 Quarkus 应用程序部署到 OpenShift。
先决条件
-
可选:您有一个包含
quarkus-openshift
扩展的 Quarkus Maven 项目。 -
您正在正确的 OpenShift 项目命名空间中工作。
-
您的项目托管在 Git 存储库中。
过程
-
打开
pom.xml
文件,并将 Java 版本设置为 21<maven.compiler.source>21</maven.compiler.source> <maven.compiler.target>21</maven.compiler.target>
-
通过输入以下命令打包您的 Java {jdk-ver-latest} 应用程序
./mvnw clean package
-
在与
pom.xml
文件相同的级别创建一个名为.s2i
的目录。 -
在
.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
-
提交并推送您的更改到远程 Git 存储库。
-
通过输入以下命令导入支持的 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。
-
-
构建项目,创建应用程序,并部署 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>
。
-
-
要部署项目的更新版本,请将更改推送到 Git 存储库,然后运行
oc start-build <project_name>
-
要将路由公开给应用程序,请运行以下命令
oc expose svc <project_name>