Cloud Foundry - 在没有公共路由的情况下发现后端应用程序

时间:2015-01-04 21:39:02

标签: security service private cloudfoundry discovery

我想在CF(run.pivotal.io)上实现微服务架构,并且在创建私有后端服务时遇到问题。

我认为我必须在部署时选择:有无路线。

  1. 通过路由,我的服务变为公共服务,这对我的公共网站和我的公共REST API来说是好的,但我不希望它用于我的后端服务。

  2. 没有路线我就不知道如何进行服务发现。

  3. 我发现了什么:

    1. 使用VCAP_APPLICATION env变量并基于此创建我自己的服务发现(或使用Eureka之类的东西)。这是否总能给我一个有效的IP:PORT?无论我的应用程序运行什么DEA,都可以在此IP上访问:其他应用程序上的其他应用程序是PORT吗?

    2. 将我的后端应用注册为服务并绑定它,而不是使用VCAP_SERVICES。我想这样做,但只找到有关在CF外注册服务的文档。有没有一种简单的方法将我自己的应用程序绑定为服务?

    3. 那么真正好的是能够将应用程序标记为私有,但仍然为其分配主机和域,因此(仅)我的其他应用程序可以通过CF负载平衡器调用它,但它将受到保护公共

1 个答案:

答案 0 :(得分:1)

答案内联......

  

我认为我必须在部署时选择:有无路线。

这取决于Cloud Foundry安装及其配置方式。在PWS上,您无法直接在应用程序实例之间进行对话。这是一个安全限制。你必须通过路由器。

  

使用路由我的服务变为公共,这对我的公共站点和公共REST API是可以的,但我不希望它用于我的后端服务。

您可以在此处做的最好的事情是添加应用程序级别(或容器级别,如果您愿意)安全性以防止未经授权的访问。

如果您不想进行基于密码的身份验证,则可以进行基于IP的过滤。在PWS上,我们刚刚添加了Statica的服务。您可以使用它通过代理发送出站流量,代理将为该流量分配静态IP。然后,您可以将对应用的访问权限仅限于Statica IP。

  

没有路线,我看不出应该如何进行服务发现。

如果删除路线,则无法向该应用发送流量。

  

使用VCAP_APPLICATION env变量并基于此创建我自己的服务发现(或使用Eureka之类的东西)。这是否总能给我一个有效的IP:PORT?无论我的应用程序运行什么DEA,都可以在此IP上访问:其他应用程序上的其他应用程序是否可以使用PORT?

您可能需要使用this enhancement。添加它是为了支持这种类型的部署。但是,这仅适用于Cloud Foundry安装,其中放宽了应用程序实例之间的网络限制。通常情况下,您无法直接在实例之间进行对话。

  

将我的后端应用注册为服务并绑定它,而不是使用VCAP_SERVICES。我想这样做,但只找到有关在CF外注册服务的文档。有没有一种简单的方法将我自己的应用程序绑定为服务?

您可以创建“用户提供”服务。查看cf cups命令。它允许您使用任意一组参数和数据创建服务。这可能包含您的服务的URL。创建服务后,您可以将其绑定到任意数量的应用程序。