【发布时间】:2019-10-19 21:01:28
【问题描述】:
我有一个使用 Swisscom 托管的 Cloud Foundry 应用程序。我需要的应用程序功能之一是用户可以设置 Cloud Foundry 服务 - 特别是 Swisscom Secrets-Store 服务。然而,这变得有点挑战。
首先,我使用cloudfoundry-cli NPM 模块从我的应用程序中创建服务,就像提供的示例一样:
const cf = require('cloudfoundry-cli')
cf.provisionService({
name: 'mongoNo1',
type: 'compose-for-mongodb',
plan: 'Standard'
}, function(err) {
if (err) return console.log(err)
console.log('Service provisioned')
})
当我在本地运行我的应用程序时效果很好,因为很明显我的计算机上安装了 CF CLI。但是,当我将应用程序推送到 Swisscom 并尝试创建服务时,什么也没发生,因为应用程序上没有安装 CF CLI。
我还检查了cf-nodejs-client,如果您不想安装 CF CLI,建议您通过允许您传递 Cloud Foundry 登录详细信息和 API 端点来进行检查。但是,我检查了文档,似乎这个 NPM 模块不允许您创建服务。 documents 表明您可以 getService、getServicePlans、getServices 或删除 - 没有创建选项。
最坏的情况我认为我可以通过 SSH 连接到正在运行的应用程序并安装 CF CLI,但为此您需要 root 访问权限,这是不可能的。
我的问题是 - 是否可以在应用程序被推送时安装 CF CLI?也许一个可以在推送应用程序时安装 CF CLI 的 buildpack?我检查了社区构建包列表,这似乎不存在,我不知道从哪里开始创建一个。否则,有谁知道如何在不需要 CF CLI 的情况下从 Node 应用程序创建 Cloud Foundry 服务。
【问题讨论】:
-
您可以直接使用 API 而不是依赖 CLI。
-
@lafunamor - 原谅我,但我没有使用 CURL 和 API 的经验,所以我不太了解 CF API。我在这里以apidocs.cloudfoundry.org/9.2.0/service_instances/… 为例并更改了端点和space_guid,但似乎没有发生任何事情