5.2. 在 OpenShift 的 Fuse 上创建和部署应用程序
您可以通过创建应用程序并将其部署到 OpenShift 中,使用以下 OpenShift Source-to-Image (S2I)应用程序开发工作流之一来开始使用 OpenShift 上的 Fuse:
- S2I 二进制工作流
- 带有 二进制源 的构建输入的 S2I。此工作流的特征是,构建部分在开发人员自己的计算机上执行的事实。在本地构建二进制软件包后,此工作流会将二进制软件包传递给 OpenShift。如需了解更多详细信息,请参阅 构建 OpenShift Container Platform 指南中的 Binary Source。
- S2I 源工作流
- 使用 Git 源构建 输入的 S2I。此工作流的特征是构建完全在 OpenShift 服务器上执行的事实。如需了解更多详细信息,请参阅 Build OpenShift Container Platform 指南中的 Git Source。
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-7_12_0-00018-redhat-00001/archetypes-catalog-2.2.0.fuse-7_12_0-00018-redhat-00001-archetype-catalog.xml \ -DarchetypeGroupId=org.jboss.fuse.fis.archetypes \ -DarchetypeVersion=2.2.0.fuse-7_12_0-00018-redhat-00001
仅访问
spring-boot-2-camel-xml
快速启动: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-7_12_0-00018-redhat-00001/archetypes-catalog-2.2.0.fuse-7_12_0-00018-redhat-00001-archetype-catalog.xml \ -DarchetypeGroupId=org.jboss.fuse.fis.archetypes \ -DarchetypeArtifactId=spring-boot-camel-xml-archetype \ -DarchetypeVersion=2.2.0.fuse-7_12_0-00018-redhat-00001
archetype 插件切换到交互模式,以提示您输入剩余的字段。
Define value for property 'groupId': : org.example.fis Define value for property 'artifactId': : fuse712-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: fuse712-spring-boot version: 1.0-SNAPSHOT package: org.example.fis Y: : Y
出现提示时,为
groupId
值输入org.example.fis
,为artifactId
值输入fuse712-spring-boot
。接受剩余字段的默认值。
-
如果上一命令以
BUILD SUCCESS
状态退出,则现在您应该在fuse712-spring-boot
子目录下在 OpenShift 项目中有一个新的 Fuse。您可以检查fuse712-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 Server 上自动创建的标准帐户。如果您要访问远程服务器,请使用 OpenShift 管理员提供的 URL 和凭据。切换到
openshift
项目(如果尚未在openshift
项目中),如下所示:oc project openshift
运行以下命令,以确保 OpenShift 镜像和模板上的 Fuse 已安装,并可以访问它们。
oc get template -n openshift
如果没有预安装镜像和模板,或者提供的版本已过时,请在 OpenShift 镜像和模板上手动安装(或更新)F。有关如何在 OpenShift 镜像上安装 Fuse 的更多信息,请参阅 第 2 章 管理员入门。
现在,您可以构建和部署
fuse712-spring-boot
项目。假设您仍然登录到 OpenShift,请更改到fuse712-spring-boot
项目的 目录,然后构建和部署项目,如下所示:cd fuse712-spring-boot mvn oc:deploy -Popenshift
在构建成功后,您应看到如下一些输出:
... [INFO] OpenShift platform detected [INFO] Using project: openshift [INFO] Creating a Service from openshift.yml namespace openshift name fuse712-spring-boot [INFO] Created Service: target/jkube/applyJson/openshift/service-fuse712-spring-boot.json [INFO] Using project: openshift [INFO] Creating a DeploymentConfig from openshift.yml namespace openshift name fuse712-spring-boot [INFO] Created DeploymentConfig: target/jkube/applyJson/openshift/deploymentconfig-fuse712-spring-boot.json [INFO] Creating Route openshift:fuse712-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 页面。 单击 fuse712-spring-boot,以查看 fuse712-spring-boot 应用程序的 Overview 信息页面。
- 在左侧面板中,展开 Workloads。
- 单击 Pods。此时会显示 openshift 项目中所有正在运行的 pod。
单击 pod Name (本例中为
fuse712-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 页面中,单击 fuse712-spring-boot 应用程序。 - 点 Overview 选项卡查看应用程序的概述信息页面。
- 点 Desired Count 旁边的 图标。此时会显示 Edit Count 窗口。
- 使用向下箭头缩减至零以停止容器集。
-
在
5.2.2. 取消部署并重新部署项目
您可以取消部署或重新部署项目,如下所示:
步骤
要取消部署项目,请输入以下命令:
mvn oc:undeploy
要重新部署项目,请输入命令:
mvn oc:undeploy mvn oc: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 Server 上自动创建的标准帐户。如果您要访问远程服务器,请使用 OpenShift 管理员提供的 URL 和凭据。切换到
openshift
项目(如果尚未在openshift
项目中),如下所示:oc project openshift
运行以下命令,以确保已安装 OpenShift 模板上的 Fuse,并可以访问它们。
oc get template -n openshift
如果没有预安装镜像和模板,或者提供的版本已过时,请在 OpenShift 镜像和模板上手动安装(或更新)F。有关如何在 OpenShift 镜像上安装 Fuse 的更多信息,请参阅 第 2 章 管理员入门。
输入以下命令来创建 使用 Spring Boot quickstart 模板运行 Red Hat Fuse 7.12 Camel XML DSL 所需的资源。这将为 Quickstart 创建部署配置和构建配置。有关 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
查看快速启动的 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 窗口。
- 使用向下箭头缩减至零以停止容器集。
-
在