STS 中的 Spring Boot Dashboard - 第 2 部分:使用 Cloud Foundry

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

欢迎回到 Spring 社区,

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

云运行时支持

我们在 Boot Dashboard 中支持的初始远程目标是 Cloud Foundry。Boot Dashboard 的设计和实现都没有将此限制为唯一支持的远程目标,它只是我们首先着手工作的目标。

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

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

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

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

部署到 Cloud Foundry

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

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

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

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

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

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

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

混合部署的本地服务隧道

作为早期实验,我们在 Boot Dashboard 中内置了一个特定功能,允许您使用 CF 上的所有服务和应用程序,并让它们调用在本地机器上运行的单个服务。这样您就可以专注于您的环境中的单个项目,并继续使用 Cloud Foundry 处理其余部分。您可以在本地快速迭代和处理代码——并在处理 Cloud Foundry 上的其他部分时进行测试。这不是很棒吗?

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

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

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

对 Cloud Foundry 的支持只是一个起点。Spring Boot Dashboard 绝不限于或专注于 Cloud Foundry。将来可以并且将添加其他远程云运行时。我们接下来将着手工作的运行时之一是 Lattice,但也非常欢迎其他运行时。如果您有兴趣在这方面进行协作,请告诉我们。Spring Boot Dashboard 在 EPL 下是开源的,我们非常乐意与您合作开发附加功能并为其添加更多云运行时的支持。

展望

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

订阅 Spring 新闻通讯

通过 Spring 新闻通讯保持联系

订阅

领先一步

VMware 提供培训和认证,助力您的职业发展。

了解更多

获得支持

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

了解更多

即将举行的活动

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

查看全部