¿Cómo registro un agente de servicios de Pivotal Cloud Foundry para que sea accesible desde varios espacios dentro de la misma organización, si tengo permisos de nivel de organización?

Intentamos registrar un agente del servicio PCF ({ {X0}}) en un espacio, luego utilícelo como una 'instancia de servicio' (cf create-service ...) en otro espacio.

Para ilustrar el problema, considere el siguiente flujo de trabajo, de una guía de HashiCorp Vault:

$ 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

Lo anterior funciona bien. El problema surge cuando tenemos una aplicación en un espacio diferente que queremos consumir la API de HashiCorp Vault:

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

Esta última parte falla.

Además, ahora que estoy en el espacio myappspace, cf marketplace no ** CC muestra el nuevo agente de servicios.

Ahora, tenemos a alguien en nuestro equipo con permisos de administrador de organización.

Supuse que podríamos registrar el nuevo agente de servicios a nivel de organización, utilizando enable-service-access subcomando:

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

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

Esto también falló porque, aunque tenía permisos de administrador para toda la organización, recibió un error de permiso denegado.

Si luego pasamos a registrar el agente de servicio en el segundo espacio, myappspace, obtenemos un

Los tres métodos fallaron, pero tiene que haber alguna forma de hacer que un servicio de un espacio esté disponible para los demás, dentro de una Organización, si tengo permisos administrativos para esa Organización PCF.

¿Cómo?

Un tipo similar (aunque más específico) de este problema se documenta en los siguientes dos problemas de github para el repositorio cloud_controller_ng de PCF:

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

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

He realizado la siguiente investigación:

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/

(Ejecutamos variaciones de cada comando en esta página).

Las más similares de las preguntas existentes en Stack Overflow fueron estas:

WebSphere Message Broker: cómo enviar un mensaje PCF

Necesita ayuda para registrar la aplicación en PCF con Spring Cloud Data Flow, que también está en PCF

No parecen tener mucho que ver con los problemas de espaciado de nombres en el PCF marketplace o con la administración de permisos de PCF.

Nota: Al principio quería publicar esto en serverfault.com, porque esto tiene más que ver con la infraestructura de una aplicación, más que solo con la programación. Pero, mientras serverfault.com no tiene una etiqueta para Pivotal Cloud Foundry, Stack Overflow ya tiene una etiqueta pivotal-cloud-foundry con 588 usos.

-10
Nathan Basanese 16 oct. 2018 a las 01:33

2 respuestas

La mejor respuesta

¿Cómo registro un agente de servicios de Pivotal Cloud Foundry para que sea accesible desde varios espacios dentro de la misma organización, si tengo permisos de nivel de organización?

No creo que puedas hacer esto. Necesitaría ser administrador / operador de plataforma. Luego, deberá registrar al corredor de servicios con la plataforma y marcarlo como accesible para seleccionar organizaciones y espacios. A continuación, puede crear instancias de servicios y, si el corredor lo permite, compartirlas en todos los espacios.

Si solo tiene permisos de organización / espacio, solo puede registrar al corredor de servicios con un espacio específico. Entonces es solo visible en ese espacio.

Sin los permisos de administrador / operador de la plataforma, creo que lo mejor que podría hacer sería esto:

  1. registrar al corredor en un espacio específico
  2. crear una instancia de servicio en ese espacio
  3. vincula eso a tus aplicaciones en este espacio
  4. cree una clave de servicio para su aplicación en el segundo espacio
  5. cambiar al segundo espacio
  6. cree un servicio proporcionado por el usuario en ese espacio e ingrese la información de la clave del servicio
  7. Repita los pasos 4 a 6 para cada aplicación en el segundo servicio (esto asegura que obtenga credenciales únicas por aplicación, podría usar una clave de servicio para todas las aplicaciones si no le importa esto).

Feliz de ser corregido, pero creo que ese es el estado de las cosas mientras escribo esto.

1
Daniel Mikusa 19 oct. 2018 a las 14:18

Suponiendo que está utilizando PCF 2.1 o superior.

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.

Esto es de Habilitación del uso compartido de instancias de servicio

Parece que ya siguió el resto de pasos de Compartir Intances de servicio

1
K.AJ 15 oct. 2018 a las 23:36