我们如何将 PCF Service Broker 注册为可从同一 PCF 组织中的两个空间访问(具有组织管理员权限)?

How do we register a PCF Service Broker as reachable from two spaces in the same PCF Org (with org admin permissions)?

如果我拥有组织级权限,如何注册 Pivotal Cloud Foundry Service Broker 以使其可从同一组织内的多个 space 访问?

我们尝试在一个 space 中 register a PCF Service broker (cf create-service-broker ...),然后在另一个 space 中将其用作 'service instance' (cf create-service ...) =].

为了说明问题,请考虑以下工作流程,from a HashiCorp Vault guide

$ cf create-space examplespace
$ cf target -s examplespace
$ cf create-service-broker vault-broker "${AUTH_USERNAME}" "${AUTH_PASSWORD}" "https://${BROKER_URL}" --space-scoped
$ cf marketplace
service           plans             description
hashicorp-vault   shared            HashiCorp Vault Service Broker
# ...
$ cf create-service hashicorp-vault shared my-vault

以上工作正常。当我们在 不同 space 中有一个我们想要使用 HashiCorp Vault API 的应用程序时,问题就出现了:

$ cf target -s myappspace
$ cf bind-service my-app my-vault

这最后一部分失败了。

此外,既然我在 space myappspace 中,cf marketplace **notCC 会显示新的服务代理。

现在,我们团队中有人拥有组织管理员权限。

我认为我们可以使用 enable-service-access 子命令在组织级别注册新的服务代理:

https://docs.cloudfoundry.org/services/access-control.html#enable-access-to-service-plans

$ cf enable-service-access my-vault -o WebOrg

这也失败了,因为即使他拥有整个组织的管理员权限,他也遇到了权限被拒绝的错误。

如果我们在第二个 space、myappspace 中继续注册服务代理,我们会得到一个

所有这三种方法都失败了,但是如果我拥有该 PCF 组织的管理权限,则必须有某种方法可以使一个 space 的服务可供组织内的其他人使用。

怎么样?

PCF cloud_controller_ng 存储库的以下两个 github 问题中记录了类似(尽管更具体)类型的此问题:

https://github.com/cloudfoundry/cloud_controller_ng/issues/935

https://github.com/cloudfoundry/cloud_controller_ng/issues/837

我做了以下研究:

https://docs.cloudfoundry.org/services/managing-service-brokers.html#register-broker

https://docs.cloudfoundry.org/services/access-control.html

https://docs.cloudfoundry.org/services/access-control.html#enable-access-to-service-plans

https://starkandwayne.com/blog/register-your-own-service-broker-with-any-cloud-foundry/

(我们 运行 此页面上每个命令的变体。)

Stack Overflow 上最相似的现有问题是:

WebSphere Message Broker - how to send a PCF message

它们似乎与 PCF marketplace 中的名称间距问题或 PCF 权限管理没有太大关系。

注意:起初我想 post 将此更改为 serverfault.com,因为这更多地与应用程序的基础架构有关,而不仅仅是编程。但是,虽然 serverfault.com 没有 Pivotal Cloud Foundry 的标签,但 Stack Overflow 有一个 pivotal-cloud-foundry 标签,已经有 588 次使用。

假设您使用的是 PCF 2.1 或更高版本。

Service brokers must explicitly enable service instance sharing by setting a flag in their service-level metadata object. This allows service instances, of any service plan, to be shared across orgs and spaces.

这是来自Enabling Service Instance Sharing

看来您已经完成了 Sharing Service Intances

中的其余步骤

How do I register a Pivotal Cloud Foundry Service Broker to make it accessible from multiple spaces within the same Organization, if I have Org-level permissions?

我认为你做不到。您需要成为一个平台 admin/operator。然后,您需要在平台上注册服务代理并将该代理标记为可供 select 组织和 space 访问。然后您可以创建服务实例,如果代理允许在 space 之间共享它们。

如果您只有 org/space 权限,则只能使用特定的 space 注册服务代理。然后只有在那space.

可见

没有平台 admin/operator 权限,我认为你能做的最好的事情是:

  1. 在特定的 space
  2. 中注册经纪人
  3. 在其中创建一个服务实例 space
  4. 在此 space
  5. 中将其绑定到您的应用
  6. 在第二个 space
  7. 中为您的应用创建服务密钥
  8. 切换到第二个space
  9. 在其中创建用户提供的服务space并输入服务密钥信息
  10. 为第二个服务中的每个应用重复步骤 4-6(这确保您获得每个应用的唯一凭据,如果您不关心这个,您可以为所有应用使用一个服务密钥)。

很高兴得到纠正,但我认为这就是我写这篇文章时的状态。