5.2. 在 OpenShift 的 Fuse 中创建并部署应用程序
您可以在 OpenShift 上开始使用 Fuse,方法是创建一个应用程序并将其部署到 OpenShift,并使用以下 OpenShift Source-to-Image(S2I)应用程序开发工作流之一:
- S2I 二进制工作流
- 带有 二进制源的 构建输入的 S2I。此工作流的特征是,构建部分在开发人员自己的计算机上执行。在在本地构建二进制软件包后,此工作流会将二进制软件包传递给 OpenShift。如需了解更多详细信息,请参阅 构建 OpenShift Container Platform 指南中的 二进制源。
- S2I 源工作流
- 带有来自 Git 源 的构建输入的 S2I。此工作流的特征是:构建完全在 OpenShift 服务器上执行。如需了解更多详细信息,请参阅 构建 OpenShift Container Platform 指南中的 Git 源。
5.2.1. 使用 S2I 二进制工作流创建和部署应用程序 复制链接链接已复制到粘贴板!
在本节中,您将使用 OpenShift S2I 二进制工作流在 OpenShift 项目中创建、构建和部署 Fuse。
- 使用 JDK11 运行快速入门
- 如果要在运行时使用基于 JDK11 的镜像,在编译期间使用正确的 JDK11 配置集。当使用 JDK11 构建和部署快速入门时,请确保已在构建机器上安装了 JDK11,然后使用正确的 JDK11 配置集构建您的快速入门。
流程
使用 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_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 \ -DarchetypeVersion=2.2.0.fuse-sb2-7_11_1-00018-redhat-00002访问
spring-boot-2-camel-xmlquickstart: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-00002archetype 插件切换到交互模式,提示您输入其余字段。
Define value for property 'groupId': : org.example.fis Define value for property 'artifactId': : fuse711-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: fuse711-spring-boot version: 1.0-SNAPSHOT package: org.example.fis Y: : Y出现提示时,输入
groupId值的org.example.fis,为artifactId值输入fuse711-spring-boot。接受其余字段的默认值。
-
如果上一命令以
BUILD SUCCESS状态退出,则现在您应当在fuse711-spring-boot子目录下在 OpenShift 项目中有一个新的 Fuse。您可以检查fuse711-spring-boot/src/main/resources/spring/camel-context.xml文件中的 XML DSL 代码。演示代码定义了一个简单的 Camel 路由,可持续向日志发送包含随机数字的消息。 为准备在 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 和凭据。切换到
openshift项目(如果还没有在openshift项目中),如下所示:oc project openshift运行以下命令,以确保 OpenShift 镜像和模板的 Fuse 已经安装,并可以访问它们。
oc get template -n openshift如果没有预安装镜像和模板,或者所提供的版本过期,请在 OpenShift 镜像和模板上安装(或更新) Fuse。有关如何在 OpenShift 镜像上安装 Fuse 的更多信息,请参阅 第 2 章 管理员入门。
您现在已准备好构建和部署
fuse711-spring-boot项目。假设您仍然登录到 OpenShift,请更改到fuse711-spring-boot项目的目录,然后构建并部署该项目,如下所示:cd fuse711-spring-boot mvn oc:deploy -Popenshift在成功构建结束时,您应看到类似以下内容的一些输出:
... [INFO] OpenShift platform detected [INFO] Using project: openshift [INFO] Creating a Service from openshift.yml namespace openshift name fuse711-spring-boot [INFO] Created Service: target/jkube/applyJson/openshift/service-fuse711-spring-boot.json [INFO] Using project: openshift [INFO] Creating a DeploymentConfig from openshift.yml namespace openshift name fuse711-spring-boot [INFO] Created DeploymentConfig: target/jkube/applyJson/openshift/deploymentconfig-fuse711-spring-boot.json [INFO] Creating Route openshift:fuse711-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 必须下载大量依赖项,这需要几分钟时间。后续的构建速度更快。
-
导航到浏览器中的 OpenShift 控制台,再使用您的凭证登录控制台(例如,使用用户名
developer和密码developer)。 -
在左侧面板中,展开 Home,然后单击 Status 以查看
openshift项目的 Project Status 页面。 单击 fuse711-spring-boot,以查看 fuse711-spring-boot 应用程序的 Overview 信息页面。
- 在左侧侧面板中展开 Workloads。
- 点 Pods。此时会显示 openshift 项目中所有正在运行的 pod。
单击 pod 名称 (本例中为
fuse711-spring-boot-xxxxx)以查看正在运行的 Pod 的详细信息。
单击 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关闭正在运行的 Pod,
-
在
openshift项目的 Project Status 页面上,单击 fuse711-spring-boot 应用程序。 - 点 Overview 选项卡查看应用程序的概述信息页面。
-
点击 Desired Count 旁边的
图标。此时会显示 Edit Count 窗口。
- 使用向下箭头缩减为零以停止 pod。
-
在
5.2.2. 取消部署并重新部署项目 复制链接链接已复制到粘贴板!
您可以取消部署或重新部署项目,如下所示:
流程
要取消部署项目,请输入以下命令:
mvn oc:undeploy要重新部署项目,请输入命令:
mvn oc:undeploy mvn oc:deploy -Popenshift
5.2.3. 使用 S2I 源工作流创建和部署应用程序 复制链接链接已复制到粘贴板!
在本节中,您将使用 OpenShift S2I 源工作流来基于模板在 OpenShift 应用构建和部署 Fuse。此演示的起点是存储在远程 Git 存储库中的 quickstart 项目。使用 OpenShift 控制台,您将在 OpenShift 服务器中下载、构建和部署此 quickstart 项目。
流程
按照如下所示,登录 OpenShift 服务器:
oc login -u developer -p developer https://OPENSHIFT_IP_ADDR:8443其中
OPENSHIFT_IP_ADDR是 OpenShift 服务器的 IP 地址的占位符,因为此 IP 地址并不总是相同。注意developer用户(使用开发人员密码)是一个标准帐户,由 CDK 在虚拟 OpenShift 服务器上自动创建。如果您正在访问远程服务器,请使用 OpenShift 管理员提供的 URL 和凭据。切换到
openshift项目(如果还没有在openshift项目中),如下所示:oc project openshift运行以下命令,以确保 OpenShift 模板上的 Fuse 已安装,并可以访问它们。
oc get template -n openshift如果没有预安装镜像和模板,或者所提供的版本过期,请在 OpenShift 镜像和模板上安装(或更新) Fuse。有关如何在 OpenShift 镜像上安装 Fuse 的更多信息,请参阅 第 2 章 管理员入门。
输入以下命令来创建 使用 Spring Boot Quickstart 模板运行 Red Hat Fuse 7.11 Camel XML DSL 所需的资源。这将为 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.- 导航到浏览器中的 OpenShift Web 控制台(https://OPENSHIFT_IP_ADDR,将 OPENSHIFT_IP_ADDR 替换为集群的 IP 地址),并使用您的凭证(例如,使用用户名 developer 和密码 developer)登录控制台。
- 在左侧侧面板中展开 Home。点 Status 查看 Project Status 页面。此时会显示所选命名空间中的所有现有应用程序(如 openshift)。
单击
s2i-fuse7-spring-boot-camel-xml,以查看 Quickstart 的 Overview 信息页面。
单击 Resources 选项卡,然后单击 View logs 以查看应用的构建日志。
- 在左侧侧面板中展开 Workloads。
单击 Pods,然后单击
s2i-fuse7-spring-boot-camel-xml-xxxx。此时会显示应用程序的 Pod 详情。
关闭正在运行的 Pod,
-
在
openshift项目的 Project Status 页面中,单击 s2i-fuse7-spring-boot-camel-xml-xxxx 应用程序。 - 点 Overview 选项卡查看应用程序的概述信息页面。
-
点击 Desired Count 旁边的
图标。此时会显示 Edit Count 窗口。
- 使用向下箭头缩减为零以停止 pod。
-
在