Développement, hébergement et test de vos courtiers de services
La plateforme « IBM Cloud® » interagit avec les courtiers de services pour créer et gérer des instances de service et des liaisons de service. Vous pouvez créer votre propre courtier en combinant nos exemples de courtiers de services IBM Cloud publics, l'application de référence Open Service Broker et la documentation de l'API Open Service Broker.
Lorsque vous intégrez votre service à IBM Cloud, vous devez générer un ou plusieurs courtiers de services pour gérer le cycle de vie de votre service et son intégration de décompte. Pour plus d'informations, voir Intégration de la mesure.
Qu'est-ce qu'un courtier en services?
Les courtiers de services gèrent le cycle de vie des services. Les plateformes interagissent avec les courtiers de services pour créer, accéder aux services qu'ils offrent et les gérer. L'API Open Service Broker définit ces interactions pour permettre aux fournisseurs de logiciels d'offrir leurs services à n'importe qui, quelle que soit la technologie ou l'infrastructure choisie par ces fournisseurs de logiciels. Le courtier de services agit en tant que composant middleware qui gère la mise à disposition automatique des instances de service pour un produit et il facilite le suivi de l'utilisation des instances de service.
Un courtier est utile si vous développez et offrez des logiciels sous forme de service, de plateforme sous forme de service ou d'infrastructure sous forme de service à plusieurs fournisseurs. Il peut augmenter la valeur métier en introduisant le courtier de services pour automatiser la mise à disposition et la liaison pour les clients. En outre, la gestion des clients et le suivi de l'utilisation peuvent être plus faciles avec un composant middleware qui gère ces problèmes transversaux. Toutefois, un courtier de services ne convient pas si vous disposez de logiciels personnalisés pouvant être déployés sur n'importe quelle machine virtuelle ou plateforme.
Lorsqu'un utilisateur sélectionne votre service et son plan de tarification dans le catalogue IBM Cloud et crée une instance, les données du service, y compris le plan de tarification et les métriques, sont envoyées à votre courtier de services.
Le courtier est intégré au système dorsal qui gère la mise à disposition des instances de service et les métriques pour un plan de tarification sélectionné. Si un client supprime une instance du produit, une demande est envoyée au courtier
de services et il gère l'annulation de la mise à disposition de l'instance.
L'architecture de courtier offre des avantages significatifs aux équipes de développement et d'exploitation:
- Les développeurs peuvent connecter leurs applications et leurs conteneurs aux services de support dont ils ont besoin. L'opération est identique, quel que soit le service de sauvegarde.
- Les opérateurs n'ont plus besoin de créer et de déléguer manuellement l'accès aux services. Au lieu de cela, ils configurent une place de marché de services et de plans de service. À partir de là, les développeurs peuvent s'auto-servir, ce qui réduit les coûts administratifs auxquels de nombreuses entreprises sont confrontées aujourd'hui.
Chaque courtier de services intégré à la spécification de l'API Open Service Broker possède le même ensemble intuitif de commandes de cycle de vie. Ces commandes offrent des avantages utiles au courtier de services:
- Extraction du catalogue des services de sauvegarde offerts par un courtier de services
- Le catalogue décrit tous les services qui peuvent être créés via un courtier de services et chaque service est constitué de plans. Les plans représentent généralement les coûts et les avantages d'une variante donnée du service. De nombreux services utilisent des plans qui représentent différents niveaux ou configurations du produit.
- Mise à disposition de nouvelles instances de service
- Une instance de service est une instance créée d'un service et d'un plan, comme décrit dans le catalogue du courtier de services.
- Connexion et déconnexion des applications et des conteneurs de ces instances de service
- Lorsqu'une instance de service est créée, vous souhaitez que votre application ou votre conteneur commence à communiquer avec cette instance. Du point de vue d'un courtier de services, il s'agit d'une liaison de service.
- Annuler la mise à disposition des instances de service
- Cette action supprime toutes les ressources créées lors de la création initiale de l'instance de service.
Avant de commencer
- Enregistrez votre service dans IBM Cloud Partner Center.
- Définissez les détails du produit de votre service.
- Passez en revue le scénario de mise à disposition pour comprendre le fonctionnement de la création de ressources.
- Lisez et familiarisez-vous avec les spécifications de l'API Open Broker, et utilisez le fichier readme comme guide pour en savoir
plus. IBM Cloud utilise les spécifications de l'API
version 2.12Open Service Broker (OSB).
Génération de votre courtier
Configurez et déployez un courtier répondant aux spécifications requises en utilisant la documentation et les exemples d'applications suivants :
- Utilisez l 'API IBM Cloud Open Service Broker pour définir les spécifications requises, y compris les points de terminaison requis.
Consultez l'exemple d'application suivant :
- Utilisez l'exemple d' application de référence Open Service Broker basé sur NodeJS comme guide pour créer votre courtier.
Inclusion des noeuds finaux requis
Tous les courtiers de services doivent définir certains noeuds finaux requis. Une logique de noeud final supplémentaire est requise pour les services pouvant être liés et pour la désactivation et la réactivation des instances de service.
Logique de noeud final requise pour tous les courtiers de services
Les courtiers de services doivent fournir un ensemble standard de valeurs de métadonnées utilisées par les API REST. De plus, les courtiers IBM Cloud doivent inclure la logique pour les noeuds finaux ou les chemins d'API REST suivants :
- catalog (GET)
- Renvoie vos métadonnées de catalogue incluses dans votre courtier.
- resource instances (PUT)
- Crée votre instance de service.
- resource instances (DELETE)
- Supprime votre instance de service.
- resource instances (PATCH)
- Met à jour votre instance de service.
Remarque concernant catalog (GET) : ce noeud final définit le contrat entre le courtier et la plateforme IBM Cloud pour les services et les plans pris en charge par le courtier. Ce point de terminaison renvoie les métadonnées du catalogue stockées dans votre courtier. Ces valeurs définissent le contrat minimal entre votre service et la plateforme IBM Cloud. Toutes les métadonnées supplémentaires du catalogue qui ne sont pas obligatoires sont stockées dans le catalogue « IBM Cloud ». Toute mise à jour des valeurs d'affichage du catalogue, telles que les liens et les icônes, doit être effectuée dans la IBM Cloud console et non hébergée chez votre courtier. Aucune des métadonnées stockées dans votre courtier ne s'affiche dans la console IBM Cloud ou l'interface de ligne de commande IBM Cloud. La console et l'interface de ligne de commande (CLI) renvoient les paramètres définis dans Partner Center Sell et enregistrés dans le catalogue « IBM Cloud ». La section suivante présente les valeurs minimales requises renvoyées par la requête (GET) « catalog » :
{
"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."
}
]
}]
}
Logique des noeuds finaux requis pour les services pouvant être liés
Si votre service peut être associé à des applications dans IBM Cloud, il doit fournir des points de terminaison API et des identifiants à ses utilisateurs. Un service pouvant être lié doit utiliser les opérations pouvant être liées dans la spécification Open Service Broker et implémenter les noeuds finaux ou les chemins suivants :
- bindings and credentials (PUT)
- Lie votre instance de service à une application.
- bindings and credentials (DEL)
- Annule la liaison de votre instance de service à une application.
Noeuds finaux d'extension IBM Cloud requis
La spécification OSB ne prend pas en charge un état d'instance désactivé. Un état désactivé inclut un paiement manquant ou d'autres situations qui entraînent une suspension de compte (mais pas encore d'annulation) et est différent d'un état d'instance supprimé. Afin IBM Cloud d'aider les clients susceptibles de rencontrer un état de désactivation, IBM Cloud a défini les points de terminaison API étendus qui permettent de désactiver et de réactiver les instances de service. Les extensions de point de terminaison suivantes sont requises :
- enable and disable instances (GET)
- Statut - renvoie l'état de votre instance de service.
- enable and disable instances (PUT)
- Activer ou désactiver une instance de service.
Le fournisseur de services a la charge de désactiver l'accès à l'instance de service lorsque le noeud final de désactivation est démarré puis de réactiver cet accès lorsque le noeud final d'activation est démarré.
Informations de courtier fournies par la plateforme IBM Cloud
Vos courtiers de services reçoivent les informations suivantes de la plateforme IBM Cloud :
X-Broker-API-Originating-Identity
L'en-tête d'identité de l'utilisateur est fourni via un en-tête d'identité provenant de l'API. Cet en-tête de demande inclut l'identité IAM IBM Cloud de l'utilisateur. L'identité IAM est codée au format « base64 ». IBM Cloud
prend en charge un seul domaine d'authentification : IBMid. Le domaine IBMid utilise un ID unique (IU) IBMid pour définir l'identité de l'utilisateur dans IBM Cloud. Cet ID unique est une chaîne opaque pour le
fournisseur de services.
Exemple :
X-Broker-API-Originating-Identity: ibmcloud eyJpYW1faWQiOiJJQk1pZC01MEdOUjcxN1lFIn0=
Decoded:
{"iam_id":"IBMid-50GNR717YE"}
Version d'en-tête d'API
L' en-tête de version d'API est 2.12. Par exemple : X-Broker-Api-Version: 2.12.
resource instance (PUT) body.context et resource instance (PATCH) body.context
PUT /v2/service_instances/:resource_instance_id and PATCH /v2/service_instances/:resource_instance_id receive the following value within body.context: { "platform": "ibmcloud", "account_id": "tracys-account-id", "crn": "resource-instance-crn" }.
Recommandations de courtier supplémentaires
Recommandations en matière d'utilisation d'opérations asynchrones au lieu d'opérations synchrones
L'API OSB prend en charge à la fois les modes de fonctionnement synchrones et asynchrones. Si vos opérations prennent moins de 10 secondes, vous devez utiliser des réponses synchrones. Dans le cas contraire, vous devez utiliser le mode de
fonctionnement asynchrone. Le mode asynchrone requiert le noeud final last_operation. Pour plus d'informations, voir Obtention du statut d'une mise à disposition en cours pour une instance de service.
Recommandations pour la gestion des courtiers dans les différents emplacements
Il est important que les utilisateurs connaissent l'emplacement de leurs services Cloud pour le temps d'attente, la disponibilité et l'hébergement des données.
Lorsque vous créez des instances de service sur IBM Cloud, l'un des paramètres obligatoires que vos utilisateurs doivent fournir est l'emplacement où ils souhaitent que cette instance de service soit créée. Certains services permettent de créer des contenus à plusieurs endroits. Par exemple, un service de base de données peut prendre en charge la création dans toutes les régions d' IBM Cloud, ou seulement dans certaines d'entre elles.
Si votre service de tiers reposant sur une API est implémenté dans un autre cloud et exposé dans IBM Cloud, l'emplacement indique l'emplacement du service dans l'autre cloud.
Lors de l'intégration à IBM Cloud, vous devez implémenter au moins un courtier OSB. Vous pouvez avoir plus d'un courtier en fonction de votre stratégie de déploiement et des emplacements à prendre en charge pour votre service. Dans Partner Center Sell, vous établissez le mappage entre votre plan de tarification et le courtier. En général, on a le choix entre définir un seul courtier pour desservir tous les sites de votre service ou définir un courtier par site; ce choix revient au prestataire de services.
Pour obtenir la liste des emplacements disponibles, consultez les emplacements du catalogue globalIBM. Si votre service nécessite la définition d'un plus grand nombre de sites, veuillez contacter l'équipe d'intégration d' IBM Cloud.
Hébergement de vos courtiers
Votre courtier doit être hébergé dans le cadre d'une application capable de répondre aux appels API REST et votre emplacement d'hébergement doit respecter les IBM Cloud directives de sécurité. Vous pouvez héberger votre broker sur IBM Cloud, ou bien le faire héberger en externe, à condition qu'il soit accessible au public depuis le site IBM Cloud lui-même.
Pour héberger votre courtier en dehors de IBM, vous devez vous assurer qu'il respecte les instructions de sécurité suivantes :
- Doit respecter la version 1.2 du protocole Transport Layer Security ( TLS ). Pour plus d'informations, voir TLS protocol overview.
- L'hébergement doit être effectué sur un noeud final HTTPs valide accessible sur le réseau Internet public
Test du courtier de votre service
Vous devez valider votre courtier en exécutant des commandes curl sur les différents noeuds finaux que vous activez. Vous avez besoin de l'emplacement hébergé de votre courtier de services, ainsi que de URL et des informations d'identification associées à votre application. Pour tester votre courtier, vous pouvez utiliser la méthode suivante :
- Exemple de guide de fichier Readme pour le curling de vos noeuds finaux OSB: https://github.com/IBM/sample-resource-service-brokers/blob/master/README.md.
Lors du test de votre courtier de services, le contrôleur de ressources utilise le schéma d'authentification configuré pour effectuer des requêtes à votre courtier. Assurez-vous que votre courtier met en œuvre l'une des méthodes d'authentification prises en charge afin de garantir une validation et une autorisation correctes. Pour plus d'informations, voir Schémas d'authentification pour les courtiers.
Exemple de demande curl :
Utilisez l'exemple suivant pour tester la réponse curl de vos courtiers :
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"}'