4.2. 使用 Java 21 将红帽构建的 Quarkus 应用程序部署到 OpenShift Container Platform。
您可以使用 S2I 方法部署运行 Java 21 到 OpenShift Container Platform 的红帽构建的 Quarkus 应用程序。
4.2.1. 先决条件
-
可选: 您有一个 Quarkus Maven 项目,其中包含
quarkus-openshift
扩展。 - 您在正确的 OpenShift Container Platform 项目命名空间中工作。
- 您的项目托管在 Git 存储库中。
4.2.2. 流程
打开
pom.xml
文件,并将 Java 版本设置为 21:Copy to Clipboard Copied! Toggle word wrap Toggle overflow <maven.compiler.source>21</maven.compiler.source> <maven.compiler.target>21</maven.compiler.target>
<maven.compiler.source>21</maven.compiler.source> <maven.compiler.target>21</maven.compiler.target>
输入以下命令打包您的 Java 21 应用程序:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ./mvnw clean package
./mvnw clean package
-
在与
pom.xml
文件相同的级别上创建名为.s2i
的目录。 在
.s2i
目录中创建一个名为environment
的文件并添加以下内容:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
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 Container Platform 镜像:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc import-image ubi9/openjdk-21 --from=registry.access.redhat.com/ubi9/openjdk-21 --confirm
oc import-image ubi9/openjdk-21 --from=registry.access.redhat.com/ubi9/openjdk-21 --confirm
注意- 如果使用 OpenShift 镜像 registry 并从同一项目中的镜像流拉取,则您的 Pod 服务帐户必须已具有正确的权限。
- 如果您要在其他 OpenShift Container Platform 项目或安全 registry 中拉取镜像,则可能需要额外的配置步骤。如需更多信息,请参阅 Red Hat Openshift Container Platform 文档。
-
如果要在 IBM Z 基础架构上部署,请输入
oc import-image ubi9/openjdk-21 --from=registry.redhat.io/ubi9/openjdk-21 --confirm
。有关此镜像的详情,请查看 Red Hat build of OpenJDK 21。
构建项目、创建应用程序并部署 OpenShift Container Platform 服务:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc new-app registry.access.redhat.com/ubi8/openjdk-21~<git_path> --name=<project_name>
oc new-app registry.access.redhat.com/ubi8/openjdk-21~<git_path> --name=<project_name>
使用托管 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~ --name=<project_name>
;。
要部署项目的更新版本,请将更改推送到 Git 存储库,然后运行:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc start-build <project_name>
oc start-build <project_name>
要为应用程序公开路由,请运行以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc expose svc <project_name>
oc expose svc <project_name>
4.2.3. 验证
列出与当前 OpenShift Container Platform 项目关联的 pod:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get pods
oc get pods
要获取应用程序的 pod 的日志输出,请运行以下命令,将 <
pod_name&
gt; 替换为应用程序名称前缀的最新 pod 的名称:Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc logs -f <pod_name>
oc logs -f <pod_name>