Desarrollo, alojamiento y prueba de intermediarios de servicio
La plataforma « IBM Cloud® » interactúa con los intermediarios de servicios para crear y gestionar instancias de servicio y enlaces de servicio. Puede crear su propio agente utilizando una combinación de nuestras muestras de agentes de servicios IBM Cloud públicos, la aplicación de referencia Open Service Broker y la documentación de la API de Open Service Broker.
Cuando incorpore el servicio en IBM Cloud, debe crear uno o varios intermediarios de servicio para gestionar el ciclo de vida del servicio y su integración de calibración. Para obtener más información, consulte Integración de medición.
¿Qué es un intermediario de servicios?
Los intermediarios de servicio gestionan el ciclo de vida de los servicios. Las plataformas interactúan con los intermediarios de servicio para crear, obtener acceso y gestionar los servicios que ofrecen. La API de Open Service Broker define estas interacciones para permitir a los proveedores de software ofrecer sus servicios a cualquier persona independientemente de la tecnología o la infraestructura que elijan dichos proveedores de software. El intermediario de servicio actúa como un componente de middleware que maneja el suministro automático de instancias de servicio para un producto, y ayuda con el seguimiento de uso de las instancias de servicio.
Un intermediario es útil si está desarrollando y ofreciendo software como servicio, plataforma como servicio o infraestructura como servicio en varios proveedores. Puede aumentar el valor de negocio introduciendo el intermediario de servicio para automatizar el suministro y el enlace para los clientes. Además, la gestión de clientes y el seguimiento del uso pueden ser más fáciles con un componente de middleware que maneja estas preocupaciones transversales. Sin embargo, un intermediario de servicio no es adecuado si tiene software personalizado que se puede desplegar en cualquier máquina virtual o plataforma.
Cuando un usuario selecciona el servicio y su plan de precios en el catálogo IBM Cloud y crea una instancia, los datos del servicio, incluidos el plan de precios y las métricas, se envían al intermediario de servicios. El intermediario está
integrado con el sistema de fondo que gestiona el suministro de instancias de servicio y las métricas para un plan de precios seleccionado. Si un cliente suprime una instancia del producto, se envía una solicitud al intermediario de servicio
y éste gestiona la anulación del suministro de la instancia.
La arquitectura de intermediario proporciona ventajas significativas para los equipos de desarrollo y de operaciones:
- Los desarrolladores pueden conectar sus aplicaciones y contenedores a los servicios de respaldo que necesitan. La operación es la misma, independientemente del servicio de respaldo.
- Los operadores ya no tienen que crear y delegar manualmente el acceso a los servicios. En su lugar, configuran un mercado de servicios y planes de servicios. A partir de ahí, los desarrolladores pueden autoservirse, reduciendo los costos administrativos que muchas empresas enfrentan hoy en día.
Cada intermediario de servicio que se crea en la especificación de la API de Open Service Broker tiene el mismo conjunto intuitivo de mandatos de ciclo de vida. Estos mandatos proporcionan ventajas útiles para el intermediario de servicio:
- Captación del catálogo de servicios de respaldo que ofrece un intermediario de servicios
- El catálogo describe todos los servicios que se pueden crear a través de un intermediario de servicio, y cada servicio está formado por planes. Los planes suelen representar los costes y beneficios de una variante determinada del servicio. Muchos servicios utilizan planes que representan diferentes niveles o configuraciones del producto.
- Suministro de nuevas instancias de servicio
- Una instancia de servicio es una instancia creada de un servicio y plan tal como se describe en el catálogo del intermediario de servicio.
- Conexión y desconexión de aplicaciones y contenedores de dichas instancias de servicio
- Cuando se crea una instancia de servicio, desea que la aplicación o el contenedor empiece a comunicarse con dicha instancia. Desde la perspectiva de un intermediario de servicio, esto se denomina un enlace de servicio.
- Dejar de suministrar instancias de servicio
- Esta acción suprime todos los recursos que se crean tras la creación inicial de la instancia de servicio.
Antes de empezar
- Registre su servicio en IBM Cloud Partner Center.
- Defina los detalles del producto del servicio.
- Revise el Escenario de suministro para comprender cómo funciona la creación de recursos.
- Lea y familiarícese con las especificaciones de la API Open Broker, y utilice el archivo Léame como guía para obtener más información.
IBM Cloud utiliza la especificación Open Service
version 2.12Broker API (OSB).
Creación del intermediario
Configure y despliegue un broker que tenga sus especificaciones requeridas utilizando la siguiente documentación y aplicaciones de ejemplo:
- Utilice la API IBM Cloud Open Service Broker para establecer las especificaciones necesarias, incluidos los puntos finales requeridos.
Revisa la siguiente aplicación de ejemplo:
- Utilice la aplicación de referencia Open Service Broker de ejemplo basada en NodeJS como guía para crear su broker.
Inclusión de puntos finales necesarios
Todos los intermediarios de servicio deben establecer determinados puntos finales necesarios. Se necesita lógica de punto final adicional para los servicios enlazables e inhabilitar y volver a habilitar las instancias de servicio.
Lógica de punto final necesaria para todos los intermediarios de servicio
Los intermediarios de servicio deben proporcionar un conjunto estándar de valores de metadatos que consumen las API REST, y los intermediarios de IBM Cloud deben tener lógica para los siguientes puntos finales o vías de acceso de la API REST:
- catálogo (GET)
- Devuelve los metadatos de catálogo incluidos en el intermediario.
- instancias de recursos (PUT)
- Crea la instancia de servicio.
- instancias de recursos (DELETE)
- Suprime la instancia de servicio.
- instancias de recursos (PATCH)
- Actualiza la instancia de servicio.
Nota sobre el catálogo (GET): este punto final define el contrato entre el intermediario y la plataforma IBM Cloud en lo que respecta a los servicios y planes a los que el intermediario da soporte. Este punto final devuelve los metadatos del catálogo almacenados en tu broker. Estos valores definen el contrato mínimo entre tu servicio y la plataforma IBM Cloud. Todos los metadatos adicionales del catálogo que no sean obligatorios se almacenan en el catálogo « IBM Cloud ». Cualquier actualización de los valores de visualización del catálogo, como enlaces e iconos, debe realizarse en la IBM Cloud consola, y no alojarse en su agente. Ninguno de los metadatos almacenados en el intermediario se muestra en la consola de IBM Cloud ni en la CLI de IBM Cloud. La consola y la interfaz de línea de comandos (CLI) muestran los datos que se han configurado en Partner Center Sell y que se han almacenado en el catálogo « IBM Cloud ». En la siguiente sección se muestran los valores mínimos obligatorios que devuelve la consulta (GET) del catálogo:
{
"services": [{
"id": "0bc9d744-6f8c-4821-9648-2278bf6925bb",
"name": "ibmcloud-link",
"description": "An IBM provided service that enables aliasing to service instances in the IBM Cloud.",
"bindable": true,
"plan_updateable": false,
"plans": [
{
"id": "da40662d-2f72-4a19-8c79-8c77cf285e1",
"name": "ibmcloud-alias",
"free": true,
"description": "The IBM Cloud alias plan used for linking."
}
]
}]
}
Lógica de los puntos finales necesarios para servicios que se pueden enlazar
Si tu servicio puede integrarse con aplicaciones de IBM Cloud, debe proporcionar a los usuarios de tu servicio los puntos de conexión de la API y las credenciales. Un servicio que se puede enlazar debe utilizar las operaciones enlazables de la especificación Open Service Broker y debe utilizar los siguientes puntos finales o vías de acceso:
- enlaces y credenciales (PUT)
- Enlaza la instancia de servicio a una aplicación.
- enlaces y credenciales (DEL)
- Anula en enlace de la instancia de servicio de una aplicación.
Puntos finales necesarios de extensión de IBM Cloud
La especificación OSB no da soporte a un estado de instancia inhabilitado. Un estado inhabilitado incluye un pago que falta u otras situaciones que dan como resultado una suspensión de cuenta (pero que todavía no se ha cancelado) y es diferente de un estado de instancia suprimido. Con el fin de IBM Cloud dar soporte a los clientes que puedan experimentar un estado de desactivación, IBM Cloud definimos los puntos finales API ampliados que permiten desactivar y volver a activar las instancias de servicio. Se requieren las siguientes extensiones de punto final:
- habilitar e inhabilitar instancias (GET)
- Estado: devuelve el estado de la instancia de servicio.
- habilitar e inhabilitar instancias (PUT)
- Habilitar o inhabilitar una instancia de servicio.
Es responsabilidad del proveedor del servicio inhabilitar el acceso a la instancia de servicio cuando se inicia una inhabilitación del punto final y volver a habilitar dicho acceso cuando se inicia una habilitación del punto final.
Información de intermediario que proporciona la plataforma IBM Cloud
El intermediario o intermediarios de servicio reciben la siguiente información de la plataforma IBM Cloud:
X-Broker-API-Originating-Identity
El encabezado de identidad del usuario se proporciona a través de un encabezado de identidad procedente de una API. Esta cabecera de solicitud incluye la identidad de IBM Cloud IAM del usuario. La identidad IAM está codificada
en formato « base64 ». IBM Cloud admite un único ámbito de autenticación: IBMid. El dominio de IBMid utiliza un ID exclusivo de IBMid (IUI) para identificar la identidad del usuario en IBM Cloud. Este IUI es una
serie opaca para el proveedor del servicio.
Ejemplo:
X-Broker-API-Originating-Identity: ibmcloud eyJpYW1faWQiOiJJQk1pZC01MEdOUjcxN1lFIn0=
Decoded:
{"iam_id":"IBMid-50GNR717YE"}
Versión de la cabecera de API
La cabecera de versión de API es 2.12. Por ejemplo: X-Broker-Api-Version: 2.12.
body.context de la instancia del recurso (PUT) y body.context de la instancia del recurso (PATCH)
PUT /v2/service_instances/:resource_instance_id y PATCH /v2/service_instances/:resource_instance_id reciben el siguiente valor en body.context: { "platform": "ibmcloud", "account_id": "tracys-account-id", "crn": "resource-instance-crn" }.
Recomendaciones adicionales sobre el intermediario
Recomendaciones sobre el uso de operaciones síncronas en lugar de operaciones asíncronas
La API OSB da soporte a las modalidades de operación síncronas y asíncronas. Si las operaciones van a tardar menos de 10 segundos, debe utilizar respuestas síncronas. De lo contrario, debe utilizar la modalidad de operación asíncrona. La
modalidad asíncrona requiere el punto final last_operation. Para obtener más información, consulte Obtener el estado de un suministro en curso para una instancia de servicio.
Recomendaciones para gestionar intermediarios entre ubicaciones
Es importante que los usuarios conozcan la ubicación de sus servicios de nube para saber la latencia, disponibilidad y residencia de los datos.
Al crear instancias de servicio en IBM Cloud, uno de los parámetros obligatorios que deben proporcionar los usuarios es la ubicación en la que desean que se cree dicha instancia de servicio. Algunos servicios permiten crear contenido en varias ubicaciones. Por ejemplo, un servicio de bases de datos puede admitir la creación en todas las regiones de IBM Cloud o solo en un subconjunto de ellas.
Si el servicio basado en API de terceros se implementa en otra nube y se expone en IBM Cloud, la ubicación indica la ubicación del servicio en la otra nube.
Al realizar la incorporación a IBM Cloud, debe implementar al menos un intermediario OSB. Tiene la opción de tener más de un intermediario, en función de la estrategia de despliegue y de las ubicaciones a las que desea dar soporte para el servicio. Dentro Partner Center Sell, establece la correlación entre el plan de precios y el intermediario. Las opciones habituales son definir un único agente para dar servicio a todas las ubicaciones de su servicio o definir un agente por cada ubicación; esta decisión depende del proveedor del servicio.
Para obtener una lista de las ubicaciones disponibles, consulte las Ubicaciones del catálogo global deIBM. Si tu servicio requiere que se definan más ubicaciones, consulta al equipo de incorporación de IBM Cloud.
Alojamiento de los intermediarios
Su bróker debe estar alojado como parte de una aplicación que pueda responder a llamadas de API REST y su ubicación alojada debe cumplir con las IBM Cloud directrices de seguridad. Puedes alojar tu broker en IBM Cloud, o bien puede estar alojado externamente, siempre que sea accesible públicamente desde la propia página IBM Cloud.
Para alojar el intermediario fuera de IBM, debe asegurarse de que cumple las siguientes directrices de seguridad:
- Debe cumplir con la versión 1.2 del protocolo Transport Layer Security ( TLS ). Para más información, consulte TLS protocol overview.
- Debe estar alojado en un punto final de HTTPs válido que sea accesible en Internet público
Prueba del intermediario del servicio
Debe validar el intermediario ejecutando mandatos curl en los distintos puntos finales que habilite. Necesita la ubicación alojada de su agente de servicios y la dirección URL y las credenciales asociadas a su aplicación. Para probar tu broker, puedes utilizar el siguiente método:
- La guía de archivo léame de ejemplo para curling los puntos finales de OSB: https://github.com/IBM/sample-resource-service-brokers/blob/master/README.md.
Durante la prueba de su broker de servicios, el controlador de recursos utiliza el esquema de autenticación configurado para realizar peticiones a su broker. Asegúrese de que su corredor aplica uno de los métodos de autenticación admitidos para garantizar una validación y autorización adecuadas. Para más información, consulte Esquemas de autenticación para brokers.
Ejemplo de solicitud curl
Utilice el ejemplo siguiente para probar la respuesta curl del intermediario:
curl -X PUT https://<sample-service-broker>/v2/service_instances/<encoded-resource-crn> \
-u '<your broker user>:<your broker password>' \
-H 'content-type: application/json' \
-d '{ "context": {"platform": "ibmcloud", \
"account_id": "34ff5928-c3c7-4d46-bbf6-1a5628c325d1", \
"resource_group_crn": "crn:v1:bluemix:public:resource-controller::a/003e9bc3993aec710d30a5a719e57a80::resource-group:b4570a825f7f4d57aa54e8e1d9507926", \
"crn": "<resource-crn>", \
"target_crn": "<target_crn>"}, \
"service_id": "a07f025c-90db-4652-afd1-cf4adfac93c8", \
"plan_id": "fe442cec-2eef-41fe-9f92-58d6c094584f"}'