编辑此页面

一步到位地将 Quarkus 应用程序部署到 OpenShift

作为应用程序开发者,您只需一步即可构建和部署 Quarkus 应用程序到 OpenShift。完成以下命令之一

CLI
quarkus build quarkus deploy openshift
Maven
./mvnw install -Dquarkus.openshift.deploy=true
Gradle
./gradlew build -Dquarkus.openshift.deploy=true

使用这些命令,您可以在本地构建应用程序,触发容器镜像构建,并自动应用生成的 OpenShift 资源。

生成的资源使用 Kubernetes Deployment,但仍然使用 OpenShift 特定的资源,例如 RouteBuildConfig 等。

先决条件

  • 您已安装 OpenJDK 17 或更高版本。

  • 您已将 JAVA_HOME 环境变量设置为 Java SDK 的位置。

  • 您有权访问 OpenShift 集群,并且已安装最新的兼容版本的 oc CLI 工具。

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

要运行此部署,不需要在 Quarkus 项目中包含 quarkus-openshift 扩展。

步骤

  1. 一步触发构建和部署

CLI
quarkus build quarkus deploy openshift
Maven
./mvnw install -Dquarkus.openshift.deploy=true
Gradle
./gradlew build -Dquarkus.openshift.deploy=true

如果您想立即测试您的应用程序,请将 quarkus.openshift.route.expose 配置属性设置为 true 以自动暴露服务。

例如,将 -Dquarkus.openshift.route.expose=true 添加到上述命令。 有关更多信息,请参阅暴露路由

从 OpenShift 4.14 开始,DeploymentConfig 对象已被弃用。 Deployment 现在是 quarkus-openshift 扩展的默认和首选部署类型。

由于此更改,请考虑以下事项

  • 如果您重新部署之前使用 DeploymentConfig 部署的应用程序,默认情况下,这些应用程序将使用 Deployment 但不会删除之前的 DeploymentConfig。 这会导致新旧应用程序同时部署,因此您必须手动删除旧的 DeploymentConfig。 如果您想继续使用 DeploymentConfig,仍然可以通过显式设置 quarkus.openshift.deployment-kindDeploymentConfig 来实现。

  • Deployment 是一个 Kubernetes 资源,而不是 OpenShift 特定的资源,因此它不能像 DeploymentConfig 那样利用 ImageStream 资源。 因此,镜像引用必须包括托管该镜像的容器镜像注册表。

有关弃用、如何设置和使用自动回滚、触发器、生命周期挂钩和自定义策略的更多信息,请参阅 Red Hat 知识库文章DeploymentConfig API 在 Red Hat OpenShift Container Platform 4.14 中已被弃用

验证

  1. 验证是否已创建镜像流和服务资源,并使用 OpenShift Web 控制台部署应用程序。

    quarkus.container-image.group=<project/namespace name>

    或者,运行以下 OpenShift 命令行界面 (CLI) 命令

    oc get is (1)
    oc get pods (2)
    oc get svc (3)
    1 列出创建的镜像流。
    2 列出与您当前的 OpenShift 项目关联的 Pod。
    3 列出 Kubernetes 服务。
  2. 要获取应用程序 Pod 的日志输出,请输入以下命令

    oc logs -f <pod_name>

    默认情况下,该服务不会暴露给外部世界。 因此,如果您在构建应用程序之前没有通过设置 quarkus.openshift.route.expose=true 属性来自动暴露创建的服务,您可以手动暴露该服务。

    oc expose svc/openshift-quickstart (1)
    oc get routes (2)
    curl http://<route>/hello (3)
    1 暴露服务。
    2 获取已暴露路由的列表。
    3 访问您的应用程序。

相关内容