将 cloud foundry 连接到 mongodb atlas 的推荐方法

Recommended way to connect cloud foundry to mongodb atlas

我有一个连接到 mongodb atlas 的 spring 启动应用程序。 一切都在本地工作。

我现在想将此发布到 Pivotal Cloud Foundry。

PCF 和 atlas 之间的安全连接

在mongodb atlas 中我需要打开防火墙并允许特定的ip 号码。 我应该如何配置 mongodb atlas 以最安全的方式连接到 pcf?

自动配置妨碍

cloud foundry 正在覆盖我的连接 url 以指向 localhost:27017 而不是我的 atlas 集群。 连接到 mongodb atlas 的推荐方法是什么?

In mongodb atlas I need to open up the firewall an allow certain ip numbers. How should I configure mongodb atlas to connect to pcf in the most secure way?

CF 上 运行 应用程序的 IP 地址白名单不是特别有效。它无效的原因是您不知道要连接的 IP 地址,因为这取决于 Diego 决定 运行 您的应用程序的位置。换句话说,这取决于您的应用程序被告知 运行 所在的单元格。更复杂的是,当您重新启动/重新启动您的应用程序时,这将会改变。

由于 IP 可能不同,您最终需要做的是将所有 Cell 列入白名单。这个问题及其无效的原因是您最终将平台上的每个应用 运行ning 列入白名单。

您可以使用应用程序安全组来稍微提高安全性。 ASG 可用于限制传出流量。您还可以在 space 级别控制它们。这意味着您可以将默认 运行ning 安全组配置为不允许访问您的 MongoDb 服务器,但您可以通过将 ASG 绑定到仅那些 spaces 需要与您的 MongoDb 服务器通信的应用程序。

这种方法的缺点是它要求您是平台管理员,这意味着它只有在您拥有自己的 CF 安装时才有效(不适用于 public 提供商)。

这里有更多关于 ASG 的信息:https://docs.cloudfoundry.org/adminguide/app-sec-groups.html

对于 public 提供者,您可以使用代理。要使其正常工作,您需要将您的应用程序配置为在尝试访问您的 Mongodb 服务器时通过代理进行通信。您控制具有固定 IP 的代理,因此您可以将代理列入白名单以允许仅访问您的应用程序。如果您不想 运行 您自己的代理服务器,可以使用 public 代理提供商。

cloud foundry is overriding my connection urls to point to localhost:27017 instead of my atlas cluster. What is the recommended way to connect to mongodb atlas?

可以禁用自动配置。此处的文档中描述了一种方法。如果您包含 Spring Cloud Connector 依赖项并手动使用它们,则自动配置将不会 运行。

https://docs.cloudfoundry.org/buildpacks/java/spring-service-bindings.html#manual

另一个选项是告诉 Java 构建包不要安装自动配置。您可以通过 cf set-env 或通过 manifest.yml 文件为您的应用程序设置以下环境变量。

例如:JBP_CONFIG_SPRING_AUTO_RECONFIGURATION='[enabled: false]'

执行此操作时请小心,因为它会禁用自动重新配置提供的所有功能,包括为您的应用设置 "cloud" 配置文件。如果您使用此选项禁用自动重新配置,您可能还需要设置 SPRING_PROFILES_ACTIVE='cloud' 以手动启用云配置文件。

我想您的另一个选择是简单地接受自动配置。一开始有点困惑/神奇,但我发现这篇文章解释得很好。

https://spring.io/blog/2015/04/27/binding-to-data-services-with-spring-boot-in-cloud-foundry

希望对您有所帮助!