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


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

S2I 二进制工作流
带有来自 二进制源 的构建输入的 S2I。此工作流的特征是,构建部分在开发人员自己的计算机上执行。本地构建二进制软件包后,此工作流将二进制软件包传递给 OpenShift。如需了解更多详细信息,请参阅 构建 OpenShift Container Platform 指南中的 Binary Source
S2I 源工作流
带有来自 Git 源 的构建输入的 S2I。此工作流的特征是,构建完全在 OpenShift 服务器上执行。如需了解更多详细信息,请参阅 构建 OpenShift Container Platform 指南中的 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-780040-redhat-00002/archetypes-catalog-2.2.0.fuse-sb2-780040-redhat-00002-archetype-catalog.xml \
      -DarchetypeGroupId=org.jboss.fuse.fis.archetypes \
      -DarchetypeArtifactId=spring-boot-camel-xml-archetype \
      -DarchetypeVersion=2.2.0.fuse-sb2-780040-redhat-00002

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

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

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

  2. 如果上一命令以 BUILD SUCCESS 状态退出,则现在应在 fuse78-spring-boot 子目录下具有 OpenShift 项目的 Fuse。您可以检查 fuse78-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 服务器上自动创建的标准帐户。如果您要访问远程服务器,请使用 OpenShift 管理员提供的 URL 和凭证。

  4. 按照如下所示,切换到 openshift 项目(如果还没有在 openshift 项目中)。

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

    oc get template -n openshift

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

  6. 您现在已准备好构建和部署 fuse78-spring-boot 项目。假设您仍然登录 OpenShift,请更改到 fuse78-spring-boot 项目的目录,然后进行构建和部署项目,如下所示:

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

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

    ...
    [INFO] OpenShift platform detected
    [INFO] Using project: openshift
    [INFO] Creating a Service from openshift.yml namespace openshift name fuse78-spring-boot
    [INFO] Created Service: target/fabric8/applyJson/openshift/service-fuse78-spring-boot.json
    [INFO] Using project: openshift
    [INFO] Creating a DeploymentConfig from openshift.yml namespace openshift name fuse78-spring-boot
    [INFO] Created DeploymentConfig: target/fabric8/applyJson/openshift/deploymentconfig-fuse78-spring-boot.json
    [INFO] Creating Route openshift:fuse78-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. 单击 fuse78-spring-boot,以查看 fuse78-spring-boot 应用程序的 Overview 信息页面。

    Overview

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

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 服务器上自动创建的标准帐户。如果您要访问远程服务器,请使用 OpenShift 管理员提供的 URL 和凭证。

  2. 按照如下所示,切换到 openshift 项目(如果还没有在 openshift 项目中)。

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

    oc get template -n openshift

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

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

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

    Spring Boot Camel XML pod details

  11. 关闭正在运行的 pod,

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

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.