欢迎回到 Spring 社区,
在我们关于 Spring Tool Suite 中新 Spring Boot Dashboard 的博客系列第二部分中,我们将超越工作空间中的本地应用,看看部署到云运行时的远程应用。如果你错过了第一部分,请先阅读它以便熟悉 STS 中的 boot dashboard。
云运行时支持
我们在 Boot Dashboard 中支持的初始远程目标是 Cloud Foundry。Boot Dashboard 的设计和实现都没有将其限制为唯一支持的远程目标,它只是我们第一个着手支持的目标。
我们的目标是提供与本地应用类似的体验,让你能够轻松地与 Cloud Foundry 上的 Spring Boot 应用进行交互、启动、停止、更新以及查找日志输出。因此,你可以使用工具栏中的大加号图标将 Cloud Foundry 部分添加到 boot dashboard。
输入凭据并选择组织/空间后,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 服务发现服务。你可以使用一个名为“(re)start and expose app via ngrok”的特殊操作来启动你的本地 Spring Boot 应用。执行此操作将(重新)启动你的本地应用。同时,该操作将使用 ngrok 服务为此应用创建一个公共可见的隧道。结果是,你会获得一个公共可见的 URL,该 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 上进行远程调试。