【问题标题】:Are Bluemix service endpoints publicly accessible?Bluemix 服务端点是否可公开访问?
【发布时间】:2015-04-21 21:56:48
【问题描述】:

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

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

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

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

# 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:~$

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

【问题讨论】:

    标签: service docker cloud cloud-foundry ibm-cloud


    【解决方案1】:

    有些服务是公开的。这取决于服务。当我在本地开发时,我让我的应用程序检测环境(检查 VCAP_SERVICES 环境变量)并在本地运行时连接到本地/测试数据库。

    【讨论】:

    • 有一个很棒的 NPM 模块,叫做 cfenv,它可以让获取 VCAP_SERVICES 的东西变得更加容易。
    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

      好消息是 Cloud Foundry 即将发布的“Diego”版本将支持直接通过 SSH 连接到应用实例,这将启用端口隧道。因此,您最终将能够获得对应用内可用服务的外部访问权限。

      详情请见this mailing list thread

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多