Cloud foundry CloudFoundry应用程序开放两个端口

Cloud foundry CloudFoundry应用程序开放两个端口,cloud-foundry,Cloud Foundry,我有一个打开两个端口的CF应用程序。AFAIK CF只能为其中一个创建路由-到位于VCAP\u APP\u端口或端口中的路由。如何创建到第二个端口的路由?我不介意使用单独的名称指向其他端口。Cloud Foundry将把来自80/443的TCP/WebSocket流量路由到指定的端口。您的应用程序无法侦听任何其他端口 您可以创建多个url映射,或者让两个应用程序使用消息传递或数据库服务相互通信。目前,Cloud Foundry上的应用程序无法将两个端口映射到其容器环境中。作为新的Diego运行

我有一个打开两个端口的CF应用程序。AFAIK CF只能为其中一个创建路由-到位于
VCAP\u APP\u端口
端口
中的路由。如何创建到第二个端口的路由?我不介意使用单独的名称指向其他端口。

Cloud Foundry将把来自80/443的TCP/WebSocket流量路由到指定的端口。您的应用程序无法侦听任何其他端口


您可以创建多个url映射,或者让两个应用程序使用消息传递或数据库服务相互通信。

目前,Cloud Foundry上的应用程序无法将两个端口映射到其容器环境中。作为新的Diego运行时的一部分,多端口映射已经公开,但目前无法通过API使用


根据需要,您可以查看使用Diego运行时的。一些文档可以是。

重新提出一个旧问题,但CloudFoundry现在支持这一点。2019年4月左右增加了支持。请检查您的版本以查看它是否支持此功能

一般程序是:

  • 使用cf cli更新应用程序,以列出它侦听的所有端口
  • 使用路由应使用的特定端口将每个路由更新到应用程序。如果有两个端口,则需要两条或多条路由,每条路由一个端口
  • 重新启动应用程序

现在您必须使用
cf curl
手动更新这些记录。可以在此处找到说明:。希望将来的cf cli版本能使这更容易。

如其他一些评论所述,现在在cf中可以为应用程序使用多个端口。CF文档中有一个描述如何执行此操作的示例。 我按照说明进行操作,但仍然难以完全理解,这就是为什么我在这里提供了一个带有一些解释的分步指南(用实际值替换[]中的所有变量):

  • 将应用程序配置为在多个端口上侦听。在我的例子中,我配置了一个spring boot应用程序,在端口8080上侦听HTTPS请求,在端口8081上侦听HTTP请求(用于调用执行器端点,如所述,如health/prometheus)。这意味着我已经在CF中配置了一个TCP路由和一个HTTP路由,并将这些路由映射到CF应用程序
  • 获取CF应用程序的[APP_GUID],该应用程序应可在多个端口上访问:
    cf应用程序[应用程序名称]--guid
  • 将端口(例如808081)添加到CF应用程序:
    CF curl/v2/apps/[app_GUID]-X PUT-d'{“端口”:[80808081]}'
  • 现在还必须调整指向CF应用程序的路由(例如,在本例中为HTTP路由),使其指向正确的CF应用程序端口。首先,您需要获取路线信息,您可以使用
    cf curl/v2/routes?q=host:[host\u NAME]
    或使用
    cf curl/v2/apps/[APP\u GUID]/routes
    并保存指向应用程序的路由的GUID([route\u GUID])
  • 对于此特定路线,必须调整路线映射。每个CF路由可以有多个路由映射。您可以使用以下命令显示路由的当前路由映射:
    cf curl/v2/routes/[route\u GUID]/route\u mappings
    。使用
    cf curl/v2/route_mappings-X POST-d'{“app_guid”:“[app_guid]”、“route_guid”:“[route_guid]”、“app_port”:8081}”
    可以添加到路由的映射(例如,此处到8081)
  • 路由现在有两个映射,一个指向8080,另一个指向8081。如果您希望路由仅指向其中一个端口(例如8081),则必须删除不希望具有的端口的映射。运行
    cf curl/v2/routes/[ROUTE\u GUID]/ROUTE\u mappings
    以显示所有路由映射。然后提取应该删除的路由映射的guid(例如,到端口8080的路由映射)。最后,运行
    cf curl/v2/route\u mappings/[GUID\u route\u MAPPING]-X DELETE
    删除不需要的路由映射

  • 现在,当使用新配置的路由时,您的CF应用程序应该可以在8080以外的其他端口访问。

    我知道80/443/4443上有此路由。这是我想通过的。你能更详细地描述一下多个url是如何解决这个问题的吗?我想这里的重点是,你目前无法做到这一点(使用CF&DEAs)。正如@crhino所提到的,Diego正在支持这一点。这个答案已经过时,请参阅。