5.2. 在 OpenShift 的 Fuse 上创建和部署应用程序

您可以通过创建应用程序并将其部署到 OpenShift 中,使用以下 OpenShift Source-to-Image (S2I)应用程序开发工作流之一来开始使用 OpenShift 上的 Fuse:

S2I 二进制工作流
带有 二进制源 的构建输入的 S2I。此工作流的特征是,构建部分在开发人员自己的计算机上执行的事实。在本地构建二进制软件包后,此工作流会将二进制软件包传递给 OpenShift。如需了解更多详细信息,请参阅 构建 OpenShift Container Platform 指南中的 Binary Source
S2I 源工作流
使用 Git 源构建 输入的 S2I。此工作流的特征是构建完全在 OpenShift 服务器上执行的事实。如需了解更多详细信息,请参阅 Build OpenShift Container Platform 指南中的 Git Source

5.2.1. 使用 S2I 二进制工作流创建和部署应用程序

在本小节中,您将使用 OpenShift S2I 二进制工作流在 OpenShift 项目上创建、构建和部署 Fuse。

注意
使用 JDK11 运行快速入门
如果要在运行时使用基于 JDK11 的镜像,请在编译时使用正确的 JDK11 配置集。使用 JDK11 构建和部署快速入门时,请确保已在构建机器上安装 JDK11,然后使用正确的 JDK11 配置集构建快速入门。

流程

  1. 使用 Maven archetype 在 OpenShift 项目中创建一个新的 Fuse。在本例中,我们使用一个 archetype,它会创建一个 Spring Boot Camel 项目示例。打开新的 shell 提示符,并输入以下 Maven 命令之一:

    • 访问所有 S2I 快速入门:

      mvn org.apache.maven.plugins:maven-archetype-plugin:2.4:generate \
        -DarchetypeCatalog=https://maven.repository.redhat.com/ga/io/fabric8/archetypes/archetypes-catalog/2.2.0.fuse-sb2-7_10_0-00015-redhat-00001/archetypes-catalog-2.2.0.fuse-sb2-7_10_0-00015-redhat-00001-archetype-catalog.xml \
        -DarchetypeGroupId=org.jboss.fuse.fis.archetypes \
        -DarchetypeVersion=2.2.0.fuse-sb2-7_10_0-00015-redhat-00001
    • 仅访问 spring-boot-2-camel-xml 快速启动:

      mvn org.apache.maven.plugins:maven-archetype-plugin:2.4:generate \
        -DarchetypeCatalog=https://maven.repository.redhat.com/ga/io/fabric8/archetypes/archetypes-catalog/2.2.0.fuse-sb2-7_10_0-00015-redhat-00001/archetypes-catalog-2.2.0.fuse-sb2-7_10_0-00015-redhat-00001-archetype-catalog.xml \
        -DarchetypeGroupId=org.jboss.fuse.fis.archetypes \
        -DarchetypeArtifactId=spring-boot-camel-xml-archetype \
        -DarchetypeVersion=2.2.0.fuse-sb2-7_10_0-00015-redhat-00001

      archetype 插件切换到交互模式,以提示您输入剩余的字段。

      Define value for property 'groupId': : org.example.fis
      Define value for property 'artifactId': : fuse710-spring-boot
      Define value for property 'version':  1.0-SNAPSHOT: :
      Define value for property 'package':  org.example.fis: :
      Confirm properties configuration:
      groupId: org.example.fis
      artifactId: fuse710-spring-boot
      version: 1.0-SNAPSHOT
      package: org.example.fis
       Y: : Y

      出现提示时,为 groupId 值输入 org.example.fis,为 artifactId 值输入 fuse710-spring-boot。接受剩余字段的默认值。

  2. 如果上一命令以 BUILD SUCCESS 状态退出,则现在您应该在 fuse710-spring-boot 子目录下在 OpenShift 项目中有一个新的 Fuse。您可以检查 fuse710-spring-boot/src/main/resources/spring/camel-context.xml 文件中的 XML DSL 代码。演示代码定义了一个简单的 Camel 路由,它会持续向日志发送包含随机数字的消息。
  3. 在准备在 OpenShift 项目中构建和部署 Fuse,请登录 OpenShift 服务器,如下所示:

    oc login -u developer -p developer https://OPENSHIFT_IP_ADDR:8443

    其中,OPENSHIFT_IP_ADDR 是 OpenShift 服务器的 IP 地址的占位符,因为此 IP 地址并非始终相同。

    注意

    developer 用户(使用 开发人员 密码)是 CDK 在虚拟 OpenShift Server 上自动创建的标准帐户。如果您要访问远程服务器,请使用 OpenShift 管理员提供的 URL 和凭据。

  4. 切换到 openshift 项目(如果尚未在 openshift 项目中),如下所示:

    oc project openshift
  5. 运行以下命令,以确保 OpenShift 镜像和模板上的 Fuse 已安装,并可以访问它们。

    oc get template -n openshift

    如果没有预安装镜像和模板,或者提供的版本已过时,请在 OpenShift 镜像和模板上手动安装(或更新)F。有关如何在 OpenShift 镜像上安装 Fuse 的更多信息,请参阅 第 2 章 管理员入门

  6. 现在,您可以构建和部署 fuse710-spring-boot 项目。假设您仍然登录到 OpenShift,请更改到 fuse710-spring-boot 项目的 目录,然后构建和部署项目,如下所示:

    cd fuse710-spring-boot
    mvn oc:deploy -Popenshift

    在构建成功后,您应看到如下一些输出:

    ...
    [INFO] OpenShift platform detected
    [INFO] Using project: openshift
    [INFO] Creating a Service from openshift.yml namespace openshift name fuse710-spring-boot
    [INFO] Created Service: target/jkube/applyJson/openshift/service-fuse710-spring-boot.json
    [INFO] Using project: openshift
    [INFO] Creating a DeploymentConfig from openshift.yml namespace openshift name fuse710-spring-boot
    [INFO] Created DeploymentConfig: target/jkube/applyJson/openshift/deploymentconfig-fuse710-spring-boot.json
    [INFO] Creating Route openshift:fuse710-spring-boot host: null
    [INFO] F8: HINT: Use the command `oc get pods -w` to watch your pods start up
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 05:38 min
    [INFO] Finished at: 2020-12-04T12:15:06+05:30
    [INFO] Final Memory: 63M/688M
    [INFO] ------------------------------------------------------------------------
    注意

    第一次运行此命令时,Maven 必须下载许多依赖项,这需要几分钟。后续构建将更快。

  7. 在浏览器中导航到 OpenShift 控制台,并使用您的凭据登录控制台(例如,使用用户名 developer 和密码 developer)。
  8. 在左侧面板中,展开 Home,然后单击 Status 以查看 openshift 项目的 Project Status 页面。
  9. 单击 fuse710-spring-boot,以查看 fuse710-spring-boot 应用的 Overview 信息页面。

    Overview

  10. 在左侧面板中,展开 Workloads
  11. 单击 Pods。此时会显示 openshift 项目中所有正在运行的 pod。
  12. 单击 pod 名称 (本例中为 fuse710-spring-boot-xxxxx)以查看正在运行的 pod 的详细信息。

    Pod Details

  13. Logs 选项卡查看应用程序日志,再向下滚动日志以查找 Camel 应用程序生成的随机数字日志消息。

    ...
    06:45:54.311 [Camel (MyCamel) thread #1 - timer://foo] INFO simple-route - >>> 130
    06:45:56.265 [Camel (MyCamel) thread #1 - timer://foo] INFO simple-route - >>> 898
    06:45:58.265 [Camel (MyCamel) thread #1 - timer://foo] INFO simple-route - >>> 414
    06:46:00.265 [Camel (MyCamel) thread #1 - timer://foo] INFO simple-route - >>> 486
    06:46:02.265 [Camel (MyCamel) thread #1 - timer://foo] INFO simple-route - >>> 093
    06:46:04.265 [Camel (MyCamel) thread #1 - timer://foo] INFO simple-route - >>> 080
  14. 关闭正在运行的 pod,

    1. openshift 项目的 Project Status 页面中,单击 fuse710-spring-boot 应用程序。
    2. Overview 选项卡查看应用程序的概述信息页面。
    3. 点 Desired Count 旁边的 edit pod count 图标。此时会显示 Edit Count 窗口。
    4. 使用向下箭头缩减至零以停止容器集。

5.2.2. 取消部署并重新部署项目

您可以取消部署或重新部署项目,如下所示:

流程

  • 要取消部署项目,请输入以下命令:

    mvn oc:undeploy
  • 要重新部署项目,请输入命令:

    mvn oc:undeploy
    mvn oc:deploy -Popenshift

5.2.3. 使用 S2I 源工作流创建和部署应用程序

在本小节中,您将使用 OpenShift S2I 源工作流根据模板在 OpenShift 应用上构建和部署 Fuse。此演示的起点是存储在远程 Git 存储库中的快速入门项目。使用 OpenShift 控制台,您将在 OpenShift 服务器中下载、构建和部署此快速入门项目。

流程

  1. 按照如下所示,登录 OpenShift 服务器:

    oc login -u developer -p developer https://OPENSHIFT_IP_ADDR:8443

    其中,OPENSHIFT_IP_ADDR 是 OpenShift 服务器的 IP 地址的占位符,因为此 IP 地址并非始终相同。

    注意

    developer 用户(使用 开发人员 密码)是 CDK 在虚拟 OpenShift Server 上自动创建的标准帐户。如果您要访问远程服务器,请使用 OpenShift 管理员提供的 URL 和凭据。

  2. 切换到 openshift 项目(如果尚未在 openshift 项目中),如下所示:

    oc project openshift
  3. 运行以下命令,以确保已安装 OpenShift 模板上的 Fuse,并可以访问它们。

    oc get template -n openshift

    如果没有预安装镜像和模板,或者提供的版本已过时,请在 OpenShift 镜像和模板上手动安装(或更新)F。有关如何在 OpenShift 镜像上安装 Fuse 的更多信息,请参阅 第 2 章 管理员入门

  4. 输入以下命令来创建 使用 Spring Boot quickstart 模板运行 Red Hat Fuse 7.10 Camel XML DSL 所需的资源。这将为 Quickstart 创建部署配置和构建配置。有关 Quickstart 和创建的资源的默认参数的信息显示在终端上。

    oc new-app s2i-fuse7-spring-boot-camel-xml
    
    --> Deploying template "openshift/s2i-fuse7-spring-boot-camel-xml" to project openshift
    ...
    --> Creating resources ...
        imagestream.image.openshift.io "s2i-fuse7-spring-boot-camel-xml" created
        buildconfig.build.openshift.io "s2i-fuse7-spring-boot-camel-xml" created
        deploymentconfig.apps.openshift.io "s2i-fuse7-spring-boot-camel-xml" created
    --> Success
        Build scheduled, use 'oc logs -f bc/s2i-fuse7-spring-boot-camel-xml' to track its progress.
        Run 'oc status' to view your app.
  5. 导航到浏览器中的 OpenShift Web 控制台(https://OPENSHIFT_IP_ADDR,将 OPENSHIFT_IP_ADDR 替换为集群的 IP 地址),并使用您的凭证(例如,使用用户名 developer和密码 developer )登录控制台。
  6. 在左侧面板中,展开 Home。单击 Status 以查看 Project Status 页面。此时会显示所选命名空间中的所有现有应用程序(如 openshift)。
  7. s2i-fuse7-spring-boot-camel-xml 查看快速启动的 Overview 信息页面。

    Spring Boot Camel XML Overview

  8. 单击 Resources 选项卡,然后单击 View logs 以查看应用的构建日志。

    Spring Boot Camel XML build logs

  9. 在左侧面板中,展开 Workloads
  10. 单击 Pods,然后单击 s2i-fuse7-spring-boot-camel-xml-xxxx。此时会显示应用程序的 Pod 详情。

    Spring Boot Camel XML pod details

  11. 关闭正在运行的 pod,

    1. openshift 项目的 Project Status 页面中,单击 s2i-fuse7-spring-boot-camel-xml-xxxx 应用。
    2. Overview 选项卡查看应用程序的概述信息页面。
    3. 点 Desired Count 旁边的 edit pod count 图标。此时会显示 Edit Count 窗口。
    4. 使用向下箭头缩减至零以停止容器集。