我想在CF(run.pivotal.io)上实现微服务架构,并且在创建私有后端服务时遇到问题。
我认为我必须在部署时选择:有无路线。
通过路由,我的服务变为公共服务,这对我的公共网站和我的公共REST API来说是好的,但我不希望它用于我的后端服务。
没有路线我就不知道如何进行服务发现。
我发现了什么:
使用VCAP_APPLICATION env变量并基于此创建我自己的服务发现(或使用Eureka之类的东西)。这是否总能给我一个有效的IP:PORT?无论我的应用程序运行什么DEA,都可以在此IP上访问:其他应用程序上的其他应用程序是PORT吗?
将我的后端应用注册为服务并绑定它,而不是使用VCAP_SERVICES。我想这样做,但只找到有关在CF外注册服务的文档。有没有一种简单的方法将我自己的应用程序绑定为服务?
那么真正好的是能够将应用程序标记为私有,但仍然为其分配主机和域,因此(仅)我的其他应用程序可以通过CF负载平衡器调用它,但它将受到保护公共
答案 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。创建服务后,您可以将其绑定到任意数量的应用程序。