第 4 章 使用 S2I 将红帽构建的 Quarkus 应用程序部署到 OpenShift Container Platform
您可以使用 Source-to-Image (S2I)方法将红帽构建的 Quarkus 应用程序部署到 Red Hat OpenShift Container Platform。使用 S2I 时,您必须通过 Git 存储库向构建容器提供源代码,或者在构建时上传源代码。
部署过程会根据红帽构建的 Quarkus 应用程序使用的 Java 版本而有所不同。
您可以使用 S2I 方法将运行 Java 17 的 Red Hat build of Quarkus 应用程序部署到 OpenShift Container Platform。
4.1.1. 先决条件 复制链接链接已复制到粘贴板!
- 您有一个使用 Java 17 构建的 Quarkus 应用程序。
-
可选: 您有一个 Quarkus 项目,其中包含
quarkus-openshift扩展。 - 您在正确的 OpenShift 项目命名空间中工作。
- 您的项目托管在 Git 存储库中。
4.1.2. 流程 复制链接链接已复制到粘贴板!
打开
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 Container Platform 镜像:
oc import-image ubi9/openjdk-17 --from=registry.access.redhat.com/ubi9/openjdk-17 --confirm注意- 如果使用 OpenShift 镜像 registry 并从同一项目中的镜像流拉取,则您的 Pod 服务帐户必须已具有正确的权限。
- 如果您要在其他 OpenShift Container Platform 项目或安全 registry 中拉取镜像,则可能需要额外的配置步骤。
如需更多信息,请参阅 Red Hat Openshift Container Platform 文档。
构建项目、创建应用程序并部署 OpenShift Container Platform 服务:
oc new-app registry.access.redhat.com/ubi9/openjdk-17~<git_path> --name=<project_name>使用托管 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>
4.1.3. 验证 复制链接链接已复制到粘贴板!
列出与当前 OpenShift Container Platform 项目关联的 pod:
oc get pods要获取应用程序的 pod 的日志输出,请运行以下命令,将 <
pod_name> 替换为应用程序名称前缀的最新 pod 的名称:oc logs -f <pod_name>