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。
流程
使用 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
。接受剩余的字段的默认值。-
如果上一命令以
BUILD SUCCESS
状态退出,则现在应在fuse78-spring-boot
子目录下具有 OpenShift 项目的 Fuse。您可以检查fuse78-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 章 管理员入门。
您现在已准备好构建和部署
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 必须下载大量依赖项,这需要几分钟时间。后续构建将更快。
-
在浏览器中打开 OpenShift 控制台,并使用您的凭据登录控制台(例如,使用用户名
developer
和密码developer
)。 -
在左侧面板中,展开 Home,然后单击 Status 以查看
openshift
项目的 Project Status 页面。 单击 fuse78-spring-boot,以查看 fuse78-spring-boot 应用程序的 Overview 信息页面。
- 在左侧面板中,展开 Workloads。
- 单击 Pods。此时会显示 openshift 项目中运行的所有 Pod。
点 pod Name (本例中为
fuse78-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 页面中,单击 fuse78-spring-boot 应用。 - 点 Overview 选项卡查看应用程序的概览信息页面。
- 点 Desired Count 旁边的 图标。此时会显示 Edit Count 窗口。
- 使用向下箭头向下扩展到零,以停止 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 服务器中下载、构建和部署此快速启动项目。
流程
按如下所示登录 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.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.
- 在浏览器中打开 OpenShift Web 控制台(https://OPENSHIFT_IP_ADDR,将 OPENSHIFT_IP_ADDR 替换为集群的 IP 地址),并使用您的凭证登录控制台(例如,使用用户名 developer 和密码 developer)。
- 在左侧面板中,展开 Home。点 Status 查看 Project Status 页面。此时会显示所选命名空间中的所有现有应用程序(如 openshift)。
单击
s2i-fuse78-spring-boot-camel-xml
以查看快速启动的 Overview 信息页面。单击 Resources 选项卡,然后单击 View logs 以查看应用的构建日志。
- 在左侧面板中,展开 Workloads。
单击 Pods,然后单击
s2i-fuse78-spring-boot-camel-xml-xxxx
。此时会显示应用程序的 Pod 详情。关闭正在运行的 pod,
-
在
openshift
项目的 Project Status 页面中,单击 s2i-fuse78-spring-boot-camel-xml-xxxx 应用。 - 点 Overview 选项卡查看应用程序的概览信息页面。
- 点 Desired Count 旁边的 图标。此时会显示 Edit Count 窗口。
- 使用向下箭头向下扩展到零,以停止 pod。
-
在