Bluemix 服务端点是否可公开访问?

Are Bluemix service endpoints publicly accessible?

我正在使用 IBM Bluemix 开发 CF 应用程序。提供服务并将其绑定到应用程序后,是否要求它提供的凭据引用可公开访问的 URL 或 IP 地址?

我问是因为我一直在试验 Cloudfocker,它提供了 Cloud Foundry 运行时环境的本地近似值,以实现更快的应用程序开发工作流程。但是要进行任何严肃的工作,您需要在真正的 Bluemix 中访问绑定到您的应用程序的服务。 (您还需要 Bluemix 的一组构建包,但我暂时忽略它)。

例如,假设我正在开发一个使用数据库的应用程序。我想从本地计算机上的 Cloudfocker 环境 运行 直接连接到数据库服务实例。我可以这样做吗?

我 运行 进行了一些实验,结果各不相同:一个 Cloudant 服务发出了一个合法的 URL,我可以从任何地方访问它,但是一个 Mongodb 服务给了我一个IP 似乎拒绝来自非 Bluemix 客户端的连接(见下文)。

# My endpoint is: mongodb://23.246.199.67:10027/db

# Within a Bluemix app, works
vcap@18jf19lbdo5:~$ nc -v 23.246.199.67 10027
Connection to 23.246.199.67 10027 port [tcp/*] succeeded!
^C
vcap@18jf19lbdo5:~$ 


# Outside Bluemix, fails
mamacdon@markm-vm:~$ nc -v 23.246.199.67 10027
nc: connect to 23.246.199.67 port 10027 (tcp) failed: Connection timed out
mamacdon@markm-vm:~$

这种方法可行吗,还是我必须求助于某种隧道解决方案?

部分服务可公开访问。这取决于服务。当我在本地开发时,我让我的应用程序检测环境(检查 VCAP_SERVICES 环境变量)并在本地 运行 时连接到 local/test 数据库。

在 Bluemix 中提供的数据库服务中,可从 Bluemix 应用程序外部访问的服务包括:Cloudant、dashDB 和 SQL 数据库。 您可以从 VCAP_SERVICES 环境变量中找到凭据信息(URL、用户名、密码、数据库名称和端口号)。

对于 dashDB 和 SQL 数据库,您还需要下载用于连接的驱动程序(如果您没有预装 DB2 客户端或 Data Studio)。例如,在 dashDB 中:

  1. 单击您的 dashDB 服务实例
  2. 您可以启动 dashDB 使用 "Launch" 按钮右上角的服务。
  3. 加载 dashDB 仪表板后,在左侧单击:设置 -> 连接应用程序
  4. 下载dashDB驱动,记下页面
  5. 连接所需的凭据信息(URL、用户名、密码、数据库名、端口号)

其他答案使我确信,没有通用的解决方案可以与 CFv2 中的所有 Bluemix 服务一起使用。 (旧版本的 CF 提供了 cf tunnel 命令,但不再受支持。)

好消息是 Cloud Foundry 即将发布的 "Diego" 版本将支持 SSH 直接进入应用程序实例,这将启用端口隧道。因此,您将能够获得对应用程序内部可用服务的外部访问……最终。

详情见this mailing list thread