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


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

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

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

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

流程

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

    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_11_1-00018-redhat-00002/archetypes-catalog-2.2.0.fuse-sb2-7_11_1-00018-redhat-00002-archetype-catalog.xml \
      -DarchetypeGroupId=org.jboss.fuse.fis.archetypes \
      -DarchetypeArtifactId=spring-boot-camel-xml-archetype \
      -DarchetypeVersion=2.2.0.fuse-sb2-7_11_1-00018-redhat-00002

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

    Define value for property 'groupId': : org.example.fis
    Define value for property 'artifactId': : fuse77-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: fuse77-spring-boot
    version: 1.0-SNAPSHOT
    package: org.example.fis
     Y: : Y

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

  2. 如果上一命令以 BUILD SUCCESS 状态退出,则现在您应该在 fuse77-spring-boot 子目录下在 OpenShift 项目中有一个新的 Fuse。您可以检查 fuse77-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. 现在,您可以构建和部署 fuse77-spring-boot 项目。假设您仍已登录到 OpenShift,请更改到 fuse77-spring-boot 项目的 目录,然后构建和部署项目,如下所示:

    cd fuse77-spring-boot
    mvn fabric8:deploy -Popenshift

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

    ...
    [INFO] OpenShift platform detected
    [INFO] Using project: openshift
    [INFO] Creating a Service from openshift.yml namespace openshift name fuse77-spring-boot
    [INFO] Created Service: target/fabric8/applyJson/openshift/service-fuse77-spring-boot.json
    [INFO] Using project: openshift
    [INFO] Creating a DeploymentConfig from openshift.yml namespace openshift name fuse77-spring-boot
    [INFO] Created DeploymentConfig: target/fabric8/applyJson/openshift/deploymentconfig-fuse77-spring-boot.json
    [INFO] Creating Route openshift:fuse77-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: 2019-10-24T12:15:06+05:30
    [INFO] Final Memory: 63M/688M
    [INFO] ------------------------------------------------------------------------
    注意

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

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

    Overview

  10. 在左侧面板中,展开 Workloads
  11. 单击 Pods。此时会显示 openshift 项目中所有正在运行的 pod。
  12. 单击 pod 名称 (本例中为 fuse77-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 页面中,单击 fuse77-spring-boot 应用程序。
    2. Overview 选项卡查看应用程序的概述信息页面。
    3. 点 Desired Count 旁边的 edit pod count 图标。此时会显示 Edit Count 窗口。
    4. 使用向下箭头缩减至零以停止容器集。

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

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

流程

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

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

    mvn fabric8:undeploy
    mvn fabric8: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.7 Camel XML DSL 所需的资源。这将为 Quickstart 创建部署配置和构建配置。有关 Quickstart 和创建的资源的默认参数的信息显示在终端上。

    oc new-app s2i-fuse77-spring-boot-camel-xml
    
    --> Deploying template "openshift/s2i-fuse77-spring-boot-camel-xml" to project openshift
    ...
    --> Creating resources ...
        imagestream.image.openshift.io "s2i-fuse77-spring-boot-camel-xml" created
        buildconfig.build.openshift.io "s2i-fuse77-spring-boot-camel-xml" created
        deploymentconfig.apps.openshift.io "s2i-fuse77-spring-boot-camel-xml" created
    --> Success
        Build scheduled, use 'oc logs -f bc/s2i-fuse77-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-fuse77-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-fuse77-spring-boot-camel-xml-xxxx。此时会显示应用程序的 Pod 详情。

    Spring Boot Camel XML pod details

  11. 关闭正在运行的 pod,

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

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.