跨api端点的路由名称

时间:2019-02-10 14:20:46

标签: cloudfoundry pivotal-cloud-foundry cloud-foundry-bosh

我们有两个端点,分别具有各自的组织和空间

1)开发环境: a.b.c.org.cloud

2)概念证明环境(POC):a.b.c.poc.io


在POC环境中有一个应用程序(my-cool-app),其路由名称为my-cool-app.a.b.c.poc.io

由于此应用中出现代码异味,路由名称由应用源代码(硬编码)决定,但不是通过manifest.yml中的cf push确定的。在开发环境中,这为my-cool-app.a.b.c.poc.io导致了相同的路由名称my-cool-app


1)应用程序在开发环境(my-cool-app.a.b.c.poc.io)中能否具有相同的路由名称a.b.c.org.cloud?因为我们在org.cloudfoundry.client.v2.ClientV2Exception: CF-InvalidRelation(1002): The app cannot be mapped to this route because the route is not in this space. Apps must be mapped to routes in the same space.

之后看到此错误cf push

2) Dev和POC环境是否具有相同的云控制器数据库(CCDB)?因为CCDB维护应用程序名称与路由名称的绑定

1 个答案:

答案 0 :(得分:1)

  

1)在开发环境(a.b.c.org.cloud)中,应用程序能否具有相同的路由名称my-cool-app.a.b.c.poc.io?

这取决于您对“ dev”和“ poc”环境的含义。如果它们是完全独立的基础,那么可以。它应该工作。您只需使用DNS即可控制实际流量的路由位置。

如果他们共享同一个云控制器,例如您拥有一个“ dev”和“ poc”组织,则它可以工作但有限制。您可以将同一条路线映射到两个不同的应用程序,但它们必须位于同一空间中。这就是这个错误的意思。

  

无法将应用程序映射到此路由,因为该路由不在此空间中。应用程序必须映射到同一空间中的路由。

如果您将同一条路线映射到两个不同的应用程序,那么您实际上正在做的是将流量按50/50的比例分配给两个应用程序。如果Cloud Controller允许跨组织和空间进行此操作,那么您可能会在不同的组织和空间中拥有可以将流量从您的应用程序转移到另一个应用程序(可能是恶意应用程序)的人,这将是一个很大的安全问题。鉴于此,Cloud Controller禁止这样做。

  

2)Dev和POC环境是否具有相同的云控制器数据库(CCDB)?因为CCDB维护应用程序名称与路由名称的绑定

听起来像您的环境一样,但这不是严格的要求。您可以有两个完全独立的基础,一个用于Dev,一个用于POC,它们不共享任何内容。