STS 中的 Spring Boot 仪表盘 - 第 2 部分:使用 Cloud Foundry

工程 | Martin Lippert | 2015 年 10 月 15 日 | ...

欢迎回来,Spring 社区!

在本系列关于 Spring Tool Suite 中新的 Spring Boot 仪表盘的博客文章的第二部分中,我们将超越工作区中的本地应用程序,并查看部署到云运行时的远程应用程序。如果您错过了第一部分,请先阅读它,以便先熟悉 STS 中的 Boot 仪表盘。

云运行时支持

Boot 仪表盘最初支持的远程目标是 Cloud Foundry。Boot 仪表盘的设计和实现并不局限于此作为唯一支持的远程目标,它只是我们首先着手开发的一个目标。

我们的目标是提供与本地应用程序类似的体验,让您能够轻松地交互、启动、停止、更新和查找 Cloud Foundry 上 Spring Boot 应用程序的日志输出。因此,您可以使用工具栏中的大加号图标,在 Boot 仪表盘中添加一个 Cloud Foundry 部分。

输入凭据并选择组织/空间后,Boot 仪表盘中将出现一个新部分,其中列出了部署到 Cloud Foundry 上此空间的应用程序。您可以看到应用程序的名称以及配置和正在运行的实例数。

基本操作适用于 CF 上的一个或多个应用程序,其方式与本地应用程序非常相似。您可以跳转到控制台输出,它将显示在 STS/Eclipse 的控制台视图中,您可以启动和停止应用程序,可以双击它们以访问运行应用程序的浏览器窗口,可以为应用程序配置默认路径,并且可以向这些应用程序添加/删除标签。如果您在这些目标部分中选择 Boot 仪表盘中的多个条目,您甚至可以在目标之间执行某些操作(如启动和停止)。

除了适用于本地和 Cloud Foundry 上应用程序的常用操作外,还有一些专门针对 Cloud Foundry 上应用程序的其他操作。例如,Boot 仪表盘允许您完全从 Cloud Foundry 删除应用程序,或轻松跳转到 Web 控制台。

部署到 Cloud Foundry

到目前为止,我们讨论了 Cloud Foundry 上现有的应用程序。但是,您如何将应用程序部署到 Cloud Foundry 呢?有多种方法,可以使用 CLI 或 Cloud Foundry 的 Eclipse 插件。Boot 仪表盘为您提供了另一种选择:您可以将 Spring Boot 应用程序直接拖放到仪表盘中的 Cloud Foundry 目标上,它将把 Spring Boot 应用程序部署到 CF。这就像听起来一样简单。

如果您的应用程序包含 manifest.yml 文件,则将使用它来为 Cloud Foundry 配置应用程序。这通常包含应用程序的名称、域、内存设置、实例数,以及可能还有更多内容。

如果您的项目中没有 manifest.yml 文件,则部署操作将在对话框中提示您输入部署应用程序所需的基本信息。

但是请注意:如果项目包含 manifest.yml 文件,则将使用它来部署和配置应用程序。您可能通过 Web 控制台对 CF 上的配置所做的更改将在您下次使用 Boot 仪表盘重新启动/重新部署/更新应用程序时丢失。要么在 manifest.yml 文件中配置所有内容,要么完全不使用它 - 至少目前如此。我们将努力改进这一点,以允许更灵活的方式处理 manifest.yml 文件和对应用程序配置的外部更改,但这将在 STS 的未来版本中完成。

应用程序部署后,Boot 仪表盘将保持工作区中的项目与 Cloud Foundry 上部署的应用程序之间的关联(并在 Boot 仪表盘中显示此关联)。

保持工作区项目与 Cloud Foundry 上的应用程序之间的这种关联使更改此应用程序变得更加容易。如果您更改工作区中的代码并按下 CF 上应用程序的(重新)启动按钮,Boot 仪表盘将自动重新推送应用程序(更改)到 Cloud Foundry。

将应用程序部署到 Cloud Foundry 后,您通常不需要同时在本地处理所有内容。通常,您会专注于应用程序的某些部分,有时您甚至希望同时使用两者:一些服务在 Cloud Foundry 上运行,而一些服务在 IDE 中的本地计算机上运行。但是,它们如何交互呢?

为混合部署建立本地服务的隧道

作为一项早期实验,我们在 Boot 仪表盘中构建了一个特定功能,允许您使用 CF 上的所有服务和应用程序,并让它们调用在本地计算机上运行的单个服务。这样,您可以专注于环境的各个项目,并继续使用 Cloud Foundry 运行您的其余世界。您可以快速迭代和在本地处理代码 - 并在与 Cloud Foundry 上的其他部分一起工作时对其进行测试。这难道不棒吗?

其工作方式如下:您已为微服务实施了服务发现机制。目前,我们支持 Eureka 服务发现服务来实现此功能。您可以使用名为“(重新)启动并通过 ngrok 公开应用程序”的特殊操作启动您的本地 Spring Boot 应用程序。执行此操作将(重新)启动您计算机上的本地应用程序。同时,此操作将使用 ngrok 服务为此应用程序创建一个公开可见的隧道。结果,您将获得一个公开可见的 URL,该 URL 将其所有流量路由到您的本地计算机和本地计算机上运行的本地 Spring Boot 应用程序。该应用程序会自动配置为使用此公开可见的隧道 URL 在远程 Eureka 上注册。

此服务的客户端现在将从 Eureka 获取此隧道 URL,而不是(或除了)可能已经在 Cloud Foundry 上运行的服务的默认实例 - 并将调用您本地运行的服务,而不是 CF 上的服务。您可以快速迭代本地服务,甚至对其进行调试。

此混合部署方案显然不适用于生产或团队环境,在这些环境中,多人同时使用 CF 上的应用程序。但对于测试和开发环境来说,这非常有用。

对 Cloud Foundry 的支持只是一个起点。Spring Boot 仪表盘绝不限于或专注于 Cloud Foundry。将来可能会添加其他远程云运行时。我们将要处理的下一个运行时之一是 Lattice,但其他运行时也非常受欢迎。如果您有兴趣参与协作,请告知我们。Spring Boot 仪表盘是根据 EPL 开源的,我们很乐意与您合作开发其他功能,并为其添加对更多云运行时的支持。

展望

本系列的第三部分将向您介绍对 Spring Boot Devtools 的内置支持,以及如何从 Boot 仪表盘中使用它们来对应用程序(甚至在 CF 上)进行快速修改,以及如何在 CF 上进行远程调试。

获取 Spring 新闻通讯

通过 Spring 新闻通讯保持联系

订阅

领先一步

VMware 提供培训和认证,以加速您的进步。

了解更多

获得支持

Tanzu Spring 在一个简单的订阅中提供对 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件。

了解更多

即将举行的活动

查看 Spring 社区中所有即将举行的活动。

查看全部