【问题标题】:Create a Cloud Foundry Service from a hosted Cloud Foundry application从托管的 Cloud Foundry 应用程序创建 Cloud Foundry 服务
【发布时间】: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,但似乎没有发生任何事情

标签: cloud-foundry swisscomdev


【解决方案1】:

是否可以在推送时在应用程序上安装 CF CLI?

一种选择是简单地将 cf cli 与您的应用程序捆绑在一起。它是一个静态二进制文件,因此很容易与您的应用程序捆绑在一起。以下应该可以工作。

  1. here 下载适用于 Linux 的 cf cli 并解压缩。
  2. 将其放入应用程序根目录下的文件夹中。例如:mkdir bin/ 然后将您的二进制文件从步骤 #1 移动到 bin/ 文件夹。
  3. .profile 文件添加到应用程序的根目录。在该文件中,放入export PATH=$PATH:$HOME/bin,这会将步骤#2 中的bin/ 目录放入PATH(将bin 更改为您命名该文件夹的任何名称)。

现在cf push 你的应用程序。这将包括二进制文件。当它启动时,.profile 脚本将执行并将您的cf 二进制文件的路径放在 PATH 上。因此,您可以在容器中运行cf ... 命令。

希望有帮助!

【讨论】:

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