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


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

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

4.2.1. 使用 S2I Binary 工作流创建和部署项目

在本小节中,您将使用 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-740017-redhat-00003/archetypes-catalog-2.2.0.fuse-740017-redhat-00003-archetype-catalog.xml \
      -DarchetypeGroupId=org.jboss.fuse.fis.archetypes \
      -DarchetypeArtifactId=spring-boot-camel-xml-archetype \
      -DarchetypeVersion=2.2.0.fuse-740017-redhat-00003

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

    Define value for property 'groupId': : org.example.fis
    Define value for property 'artifactId': : fuse74-spring-boot
    Define value for property 'version':  1.0-SNAPSHOT: :
    Define value for property 'package':  org.example.fis: :
    [INFO] Using property: spring-boot-version = 1.5.17.RELEASE
    Confirm properties configuration:
    groupId: org.example.fis
    artifactId: fuse74-spring-boot
    version: 1.0-SNAPSHOT
    package: org.example.fis
    spring-boot-version: 1.5.17.RELEASE
     Y: :

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

  2. 如果上一命令以 BUILD SUCCESS 状态退出,则现在应在 fuse74-spring-boot 子目录下具有 OpenShift 项目的 Fuse。您可以检查 fuse74-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 镜像和模板上的 Fuse 已安装,您可以访问它们。

    oc get template -n openshift

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

  5. 创建名为 test 的新项目命名空间(假设它尚不存在),如下所示:

    oc new-project test

    如果 test 项目命名空间已存在,您可以使用以下命令切换到该命名空间。

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

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

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

    ...
    [INFO] OpenShift platform detected
    [INFO] Using project: test
    [INFO] Creating a Service from openshift.yml namespace test name fuse74-spring-boot
    [INFO] Created Service: target/fabric8/applyJson/test/service-fuse74-spring-boot.json
    [INFO] Using project: test
    [INFO] Creating a DeploymentConfig from openshift.yml namespace test name fuse74-spring-boot
    [INFO] Created DeploymentConfig: target/fabric8/applyJson/test/deploymentconfig-fuse74-spring-boot.json
    [INFO] Creating Route test:fuse74-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-02-22T12:08:11+01:00
    [INFO] Final Memory: 63M/272M
    [INFO] ------------------------------------------------------------------------
    注意

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

  7. 在浏览器中打开 OpenShift 控制台,并使用您的凭据登录控制台(例如,使用用户名 developer 和密码 developer)。
  8. 在 OpenShift 控制台中,向下滚动以查找 test 项目命名空间。单击 test 项目,以打开 test 项目命名空间。此时会打开 test 项目的 Overview 选项卡,显示 fuse74-spring-boot 应用程序。
  9. 单击 fuse74-spring-boot 部署左侧的箭头,以展开并查看此部署的详细信息,如下所示。

    OpenShift console test namespace overview showing fuse74-spring-boot application and associated pods

  10. 单击容器集图标(blue circle)的数据中心,以查看 fuse74-spring-boot 的 pod 列表。

    List of pods associated with the fuse74-spring-boot service

  11. 单击 pod Name (本例中为 fuse74-spring-boot-1-kxdjm)以查看正在运行的 Pod 的详情。

    Detail view of the running pod for fuse74-spring-boot

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

    ...
    07:30:32.406 [Camel (camel) thread #0 - timer://foo] INFO  simple-route - >>> 985
    07:30:34.405 [Camel (camel) thread #0 - timer://foo] INFO  simple-route - >>> 741
    07:30:36.409 [Camel (camel) thread #0 - timer://foo] INFO  simple-route - >>> 796
    07:30:38.409 [Camel (camel) thread #0 - timer://foo] INFO  simple-route - >>> 211
    07:30:40.411 [Camel (camel) thread #0 - timer://foo] INFO  simple-route - >>> 511
    07:30:42.411 [Camel (camel) thread #0 - timer://foo] INFO simple-route - >>> 942
  13. 单击左侧导航栏上的 Overview,以返回到 测试 命名空间中的应用程序概述。要关闭正在运行的 pod,点 pod 图标旁的向下箭头 get started s2i binary 05 。当对话框提示您输入问题 Scale down deployment fuse74-spring-boot-1? 时,单击 Scale Down
  14. (可选) 如果您使用 CDK,您可以通过返回到 shell 提示符并输入以下命令来完全关闭虚拟 OpenShift 服务器:

    minishift stop

4.2.2. 取消部署和重新部署项目

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

流程

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

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

    mvn fabric8:undeploy
    mvn fabric8:deploy -Popenshift

4.2.3. 在 OpenShift 中设置 Fuse 控制台

在 OpenShift 中,您可以通过两种方式访问 Fuse 控制台:

  • 从特定的 pod 中,以便您可以监控单个正在运行的 Fuse 容器。
  • 通过将 集中式 Fuse Console 目录项添加到项目中,以便您可以监控项目中的所有运行 Fuse 容器。

您可以从 OpenShift 控制台或命令行部署 Fuse 控制台。

注意
  • 在 OpenShift 4 上,如果要使用 Fuse 控制台管理 Fuse 7.4 服务,您必须安装社区版本(Hawtio),如 Fuse 7.4 发行注记 中所述。
  • Fuse 控制台的安全性和用户管理由 OpenShift 处理。
  • Fuse 控制台模板默认配置端到端加密,以便 Fuse 控制台请求是安全的端到端,从浏览器到集群内服务。
  • 基于角色的访问控制(用于部署 Fuse 控制台的用户)尚不可用于 OpenShift 上的 Fuse。

先决条件

  • 在 OpenShift 镜像流上安装 Fuse,以及 Fuse 控制台的模板,如 OpenShift 上的 Fuse 指南 中所述。
  • 如果要在 OpenShift Container Platform 环境中以集群模式部署 Fuse 控制台,则需要集群管理员角色和集群模式模板。运行以下命令:
oc adm policy add-cluster-role-to-user cluster-admin system:serviceaccount:openshift-infra:template-instance-controller
注意

默认情况下,集群模式模板仅在最新版本的 OpenShift Container Platform 上可用。它不是由 OpenShift Online 默认目录提供的。

4.2.3.1. 从 Fuse 控制台监控单个 Fuse pod

您可以为在 OpenShift 上运行的 Fuse pod 打开 Fuse 控制台:

  1. 在 OpenShift 项目中的 Applications Pods 视图中,点 pod 名称查看正在运行的 Fuse pod 的详情。在这个页面的右侧,您会看到容器模板的概述信息:

    Container Template View

  2. 从此视图中,单击 Open Java Console 链接以打开 Fuse 控制台。

    Fuse Console view

    注意

    要将 OpenShift 配置为在 pod 视图中显示到 Fuse Console 的链接,在 OpenShift 镜像上运行 Fuse 的 pod 必须声明设置为 jolokia 的 name 属性中的 TCP 端口:

    {
      "kind": "Pod",
      [...]
      "spec": {
        "containers": [
          {
            [...]
            "ports": [
              {
                "name": "jolokia",
                "containerPort": 8778,
                "protocol": "TCP"
              }

4.2.3.2. 从 OpenShift 控制台部署 Fuse 控制台

要从 OpenShift 控制台在 OpenShift 集群上部署 Fuse 控制台,请按照以下步骤操作:

流程

  1. 在 OpenShift 控制台中,打开现有项目或创建新项目。
  2. 将 Fuse 控制台添加到 OpenShift 项目中:

    1. 选择 Add to Project Browse Catalog

      此时会打开 Select an item to to the current project 页。

    2. Search 字段中,键入 Fuse Console

      Red Hat Fuse 7.x ConsoleRed Hat Fuse 7.x Console (集群) 项应该显示为搜索结果。

注意

如果 Red Hat Fuse Console 项没有作为搜索结果显示,或者显示的项目不是最新版本,您可以手动安装 Fuse Console 模板,如 OpenShift Guide 中的 Fuse "Prepare the OpenShift server" 部分所述。

  1. Red Hat Fuse Console 项之一:

    • Red Hat Fuse 7.x Console - 此版本的 Fuse 控制台发现并连接到当前 OpenShift 项目中部署的 Fuse 应用程序。
    • Red Hat Fuse 7.x Console (集群) - 此版本的 Fuse 控制台可以发现并连接到 OpenShift 集群上多个项目中部署的 Fuse 应用程序。
  2. Red Hat Fuse Console 向导中,单击 Next。此时会打开向导的 Configuration 页面。

    另外,您可以更改配置参数的默认值。

    1. Create

      向导的 Results 页面表示已创建了 Red Hat Fuse 控制台。

    2. 单击 Continue to the project overview 链接,以验证 Fuse Console 应用是否已添加到项目中。
    3. 要打开 Fuse Console,请单击提供的 URL 链接,然后登录。

      在列出所需权限的浏览器中打开 Authorize Access 页面。

    4. 点击 Allow selected permissions

      Fuse Console 在浏览器中打开,并显示项目中运行的 Fuse pod。

    5. 点您要查看的应用程序的 Connect

      这时将打开一个新的浏览器窗口,显示 Fuse 控制台中的应用程序。

4.2.3.3. 从命令行部署 Fuse 控制台

表 4.1 “Fuse 控制台模板” 描述可用于从命令行访问 Fuse 控制台的两个 OpenShift 模板,具体取决于 Fuse 应用部署的类型。

表 4.1. Fuse 控制台模板
类型描述

cluster

使用需要创建 cluster-admin 角色的 OAuth 客户端。Fuse 控制台可以发现并连接到在多个命名空间或项目中部署的 Fuse 应用程序。

namespace

使用服务帐户作为 OAuth 客户端,它只需要在项目中创建 admin 角色。这会限制 Fuse 控制台访问此单一项目,例如充当单个租户部署。

另外,您可以运行以下命令来查看模板参数列表:

oc process --parameters -f https://raw.githubusercontent.com/jboss-fuse/application-templates/application-templates-2.1.fuse-740025-redhat-00003/fis-console-namespace-template.json

流程

从命令行部署 Fuse 控制台:

  1. 运行以下命令之一(其中 myproject 是项目的名称),基于 Fuse 控制台模板创建新应用:

    • 对于 Fuse Console 集群模板,其中 myhost 是访问 Fuse 控制台的主机名:

      oc new-app -n myproject -f https://raw.githubusercontent.com/jboss-fuse/application-templates/application-templates-2.1.fuse-740025-redhat-00003/fis-console-cluster-template.json -p ROUTE_HOSTNAME=myhost
    • 对于 Fuse Console 命名空间 模板:

      oc new-app -n myproject -f https://raw.githubusercontent.com/jboss-fuse/application-templates/application-templates-2.1.fuse-740025-redhat-00003/fis-console-namespace-template.json
      注意

      您可以省略 命名空间 模板的 route_hostname 参数,因为 OpenShift 会自动生成一个。

  2. 运行以下命令,获取 Fuse Console 部署的状态和 URL:

    oc status
  3. 要从浏览器访问 Fuse 控制台,请使用提供的 URL (例如 https://fuse-console.192.168.64.12.nip.io)。

4.2.3.4. 确保数据在 Fuse 控制台中正确显示

如果在 Fuse 控制台中显示队列和连接缺少队列、缺少连接或显示不一致图标,请调整 Jolokia 集合大小参数,以指定 Jolokia marshals 中的最大元素数。

流程

  1. 在 Fuse 控制台右上角,单击用户图标,然后单击 Preferences

    mf preferences

  2. 增加 Maximum collection size 选项的值(默认为 50,000)。
  3. 单击 Close

4.2.4. 使用 S2I 源工作流创建和部署项目

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

流程

  1. 在浏览器中打开 OpenShift 控制台(https://OPENSHIFT_IP_ADDR:8443,将 OPENSHIFT_IP_ADDR 替换为 CDK 中显示的 IP 地址),并使用您的凭据(例如,使用用户名 developer和密码 developer )登录控制台。
  2. 在 Catalog 搜索字段中,输入 Red Hat Fuse 7.4 Camel XML 作为搜索字符串,并使用 Spring Boot 模板选择 Red Hat Fuse 7.4 Camel XML DSL

    get started s2i source 01

  3. 模板向导的 Information 步骤将打开。点击 Next
  4. 模板向导的 Configuration 步骤将打开,如下所示。从 Add to Project 下拉菜单,选择 My Project

    注意

    或者,如果您想为本例创建一个新项目,请从 Add to Project 下拉菜单中选择 Create Project。然后会显示一个 Project Name 字段来填写新项目的名称。

  5. 您可以接受 Configuration 步骤中其余设置的默认值。点 Create

    get started s2i source 02

    注意

    如果要修改应用程序代码(而不是像运行 Quickstart 一样),则需要分叉原始 Quickstart Git 存储库,并填写 Git Repository URLGit Reference 字段中的适当值。

  6. 模板向导的 Results 步骤将打开。单击 Close
  7. 在右侧 My Projects 窗格中,单击 My ProjectMy Project 项目的 Overview 选项卡将打开,显示 s2i-fuse74-spring-boot-camel-xml 应用。
  8. 单击 s2i-fuse74-spring-boot-camel-xml 部署左侧的箭头,以展开并查看此部署的详细信息,如下所示。

    get started s2i source 03

  9. 在此视图中,您可以看到构建日志。如果构建因任何原因而失败,构建日志可帮助您诊断问题。

    注意

    构建可能需要几分钟才能完成,因为必须从远程 Maven 存储库下载大量依赖项。为加快构建时间,我们建议您在本地网络上部署 Nexus 服务器。

  10. 如果构建成功完成,pod 图标会显示为运行 1 Pod 的蓝色圆圈。单击 pod 图标(blue circle)的中心,以查看 s2i-fuse74-spring-boot-camel-xml 的 pod 列表。

    注意

    如果多个 pod 正在运行,您会看到在这个时间点上运行的 pod 列表。否则(如果只有一个 pod),您直接浏览正在运行的 Pod 的详情视图。

  11. pod 详情视图将打开。单击 Logs 选项卡,以查看应用程序日志,再向下滚动以查找由 Camel 应用程序生成的日志消息。

    Details view of the running pod

  12. 单击左侧导航栏上的 Overview,以返回到 My Project 命名空间中的应用程序概述。要关闭正在运行的 pod,点 pod 图标旁的向下箭头 get started s2i binary 05 。当对话框提示您输入问题 Scale down deployment s2i-fuse74-spring-boot-camel-xml-1? 时,单击 Scale Down
  13. (可选) 如果您使用 CDK,您可以通过返回到 shell 提示符并输入以下命令来完全关闭虚拟 OpenShift 服务器:

    minishift stop
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.