Service-Broker entwickeln, hosten und testen
Die Plattform IBM Cloud® interagiert mit Service-Brokern, um Service-Instanzen und Service-Bindungen zu erstellen und zu verwalten. Sie können Ihren Broker mit Hilfe einer Kombination aus unseren öffentlichen IBM Cloud Service Broker-Beispielen, der Open Service Broker-Referenzanwendung und der Open Service Broker-API-Dokumentation erstellen.
Wenn Sie Ihren Service in IBM Cloudintegrieren, müssen Sie einen oder mehrere Service-Broker erstellen, um den Lebenszyklus Ihres Service und dessen Integration der Nutzungsmessung zu verwalten. Weitere Informationen finden Sie unter Integration der Nutzungsmessung.
Was ist ein Dienstleistungsmakler?
Service-Broker verwalten den Lebenszyklus von Services. Plattformen interagieren mit Service-Brokern, um die von ihnen angebotenen Services zu erstellen, auf sie zuzugreifen und sie zu verwalten. Die Open Service Broker-API definiert diese Interaktionen, damit Softwareanbieter ihre Services jedem anbieten können, unabhängig von der Technologie oder Infrastruktur, die diese Softwareanbieter wählen. Der Service-Broker fungiert als Middlewarekomponente, die für die automatische Bereitstellung von Serviceinstanzen für ein Produkt zuständig ist, und hilft bei der Nutzungsüberwachung der Serviceinstanzen.
Ein Broker ist nützlich, wenn Sie Software as a Service, Platform as a Service oder Infrastructure as a Service mehrerer Anbieter entwickeln und anbieten. Es kann den geschäftlichen Nutzen steigern, indem es den Service-Broker einführt, um die Bereitstellung und Bindung für Kunden zu automatisieren. Darüber hinaus kann das Kundenmanagement und die Nutzungsüberwachung mit einer Middlewarekomponente, die diese bereichsübergreifenden Problemstellungen behandelt, vereinfacht werden. Ein Service-Broker ist jedoch nicht geeignet, wenn Sie angepasste Software haben, die auf einer beliebigen virtuellen Maschine oder Plattform implementiert werden kann.
Wenn ein Benutzer Ihren Service und seinen Preistarif aus dem Katalog IBM Cloud auswählt und eine Instanz erstellt, werden die Daten für den Service, einschließlich des Preistarifs und der Metriken, an Ihren Service-Broker gesendet. Der Broker ist in das Back-End-System integriert, das die Bereitstellung von Serviceinstanzen und die Metriken für einen ausgewählten Preistarif verwaltet. Wenn ein Kunde eine Instanz des Produkts löscht, wird eine Anforderung an den Service-Broker gesendet und verwaltet die Zurücknahme der Bereitstellung der Instanz.
Die Brokerarchitektur bietet sowohl für Entwicklungs-als auch für Betriebsteams erhebliche Vorteile:
- Entwickler können ihre Anwendungen und Container mit den benötigten Unterstützungsservices verbinden. Die Operation ist unabhängig vom Sicherungsservice identisch.
- Bediener müssen den Zugriff auf Services nicht mehr manuell erstellen und delegieren. Stattdessen konfigurieren sie einen Marktplatz für Services und Servicepläne. Von dort aus können sich Entwickler selbst bedienen und so die Verwaltungskosten reduzieren, mit denen viele Unternehmen heute konfrontiert sind.
Jeder Service-Broker, der für die Open Service Broker API-Spezifikation erstellt wurde, verfügt über dieselbe intuitive Gruppe von Lebenszyklusbefehlen. Diese Befehle bieten nützliche Vorteile für den Service-Broker:
- Katalog der Unterstützungsservices abrufen, die ein Service-Broker anbietet
- Der Katalog beschreibt alle Services, die über einen Service-Broker erstellt werden können, und jeder Service besteht aus Plänen. Pläne stellen normalerweise die Kosten und den Nutzen für eine bestimmte Variante des Service dar. Viele Services verwenden Pläne, die sich auf die Größe des Produkts beziehen, z. B. klein, mittel und groß.
- Neue Serviceinstanzen bereitstellen
- Eine Serviceinstanz ist eine erstellte Instanz eines Service und eines Plans, wie im Katalog des Service-Brokers beschrieben.
- Verbindung von Anwendungen und Containern zu diesen Serviceinstanzen herstellen und trennen
- Wenn Sie eine Serviceinstanz erstellen, soll Ihre Anwendung bzw. Ihr Container mit dieser Instanz kommunizieren. Aus der Perspektive eines Service-Brokers wird dies als Servicebindung bezeichnet.
- Serviceinstanzen löschen
- Diese Aktion löscht alle Ressourcen, die bei der ersten Erstellung der Serviceinstanz erstellt wurden.
Vorbereitende Schritte
- Registrieren Sie Ihren Service im IBM Cloud Partner Center.
- Produktdetails Ihres Service definieren.
- Lesen Sie das Bereitstellungsszenario, um sich ein Bild davon zu machen, wie die Ressourcenerstellung funktioniert.
- Lesen und machen Sie sich mit der Open Broker API-Spezifikationvertraut und verwenden Sie die Readme-Datei als Leitfaden,
um mehr zu erfahren. IBM Cloud verwendet die OSB-Spezifikation (Open Service Broker API)
version 2.12
.
Broker erstellen
Konfigurieren und implementieren Sie einen Broker, der die von Ihnen gewünschten Spezifikationen erfüllt, indem Sie die folgende Dokumentation und Beispielanwendungen verwenden:
- Verwenden Sie die IBM Cloud Open Service Broker API, um die erforderlichen Spezifikationen, einschließlich der erforderlichen Endpunkte, festzulegen.
Sehen Sie sich das folgende Anwendungsbeispiel an:
- Verwenden Sie die auf NodeJS basierende Open Service Broker-Beispielanwendung als Leitfaden für die Erstellung Ihres Brokers.
Erforderliche Endpunkte einschließen
Alle Service-Broker müssen bestimmte erforderliche Endpunkte festlegen. Für bindbare Services und die Inaktivierung und erneute Aktivierung von Serviceinstanzen ist zusätzliche Endpunktlogik erforderlich.
Erforderliche Endpunktlogik für alle Service-Broker
Service-Broker müssen eine Standardgruppe von Metadatenwerten bereitstellen, die von den REST-APIs benutzt werden, und IBM Cloud-Broker müssen über Logik für die folgenden REST-API-Endpunkte und -Pfade verfügen:
- Katalog (GET)
- Gibt die Katalogmetadaten zurück, die in Ihrem Broker enthalten sind.
- Ressourceninstanzen (PUT)
- Erstellt Ihre Serviceinstanz.
- Ressourceninstanzen (DELETE)
- Löscht Ihre Serviceinstanz.
- Ressourceninstanzen (PATCH)
- Aktualisiert Ihre Serviceinstanz.
Hinweis zu 'Katalog (GET)': Dieser Endpunkt definiert den Vertrag zwischen dem Broker und der IBM Cloud-Plattform für die Services und Pläne, die vom Broker unterstützt werden. Dieser Endpunkt gibt die Katalog-Metadaten zurück, die in Ihrem Broker gespeichert sind. Diese Werte definieren den Mindestvertrag zwischen Ihrem Dienst und der Plattform IBM Cloud. Alle zusätzlichen Katalog-Metadaten, die nicht benötigt werden, werden im IBM Cloud Katalog gespeichert. Alle Aktualisierungen von Kataloganzeigewerten wie Links und Symbole müssen in der IBM Cloud-Konsole aktualisiert und nicht in Ihrem Broker enthalten sein. Keine der in Ihrem Broker gespeicherten Metadaten werden in der IBM Cloud-Konsole oder der IBM Cloud-CLI angezeigt. Die Konsole und die Befehlszeile geben zurück, was im Partner Center Sell eingestellt und im Katalog IBM Cloud gespeichert wurde. Der folgende Abschnitt zeigt die minimal erforderlichen Werte, die catalog (GET) zurückgibt:
{
"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."
}
]
}]
}
Erforderliche Endpunktlogik für bindefähige Services
Wenn Ihr Dienst an Anwendungen in IBM Cloud gebunden werden kann, muss er API-Endpunkte und Anmeldeinformationen an Ihre Dienstnutzer zurückgeben. Ein bindefähiger Service muss die bindefähigen Operationen in der Open Service Broker-Spezifikation verwenden und die folgenden Endpunkte oder Pfade implementieren:
- Bindungen und Berechtigungsnachweise (PUT)
- Bindet Ihre Serviceinstanz an eine Anwendung.
- Bindungen und Berechtigungsnachweise (DEL)
- Hebt die Bindung Ihrer Serviceinstanz an eine Anwendung auf.
Erforderliche IBM Cloud-Erweiterungsendpunkte
Die OSB-Spezifikation unterstützt keinen inaktivierten Instanzstatus. Ein inaktivierter Status enthält eine fehlende Zahlung oder andere Situationen, die zu einer Kontosperrung führen (aber noch nicht storniert wurden) und sich vom Status einer gelöschten Instanz unterscheiden. Damit IBM Cloud Kunden unterstützen kann, deren Status möglicherweise inaktiviert ist, hat IBM Cloud die erweiterten API-Endpunkte definiert, die die Inaktivierung und erneute Aktivierung von Serviceinstanzen ermöglichen. Die folgenden Endpunkterweiterungen sind erforderlich:
- Instanzen aktivieren und inaktivieren (GET)
- Status - Gibt den Status Ihrer Serviceinstanz zurück.
- Instanzen aktivieren und inaktivieren (PUT)
- Aktiviert oder inaktiviert eine Serviceinstanz.
Die Inaktivierung des Zugriffs auf die Serviceinstanz bei Aufruf des Inaktivierungsendpunkts und die erneute Aktivierung des Zugriffs bei Aufruf des Aktivierungsendpunkts ist Aufgabe des Service-Providers.
Von der IBM Cloud-Plattform bereitgestellte Brokerinformationen
Ihr Service-Broker bzw. Ihre Service-Broker empfangen von der IBM Cloud-Plattform folgende Informationen:
X-Broker-API-Originating-Identity
Der Benutzeridentitäts-Header wird durch einen API-Ursprungsidentitäts-Header bereitgestellt. Dieser Anforderungsheader enthält die IBM Cloud-IAM-Identität des Benutzers. Die IAM-Identität ist base64 codiert. IBM Cloud unterstützt
einen einzelnen Authentifizierungsrealm: IBMid
Der Realm IBMid
verwendet eine eindeutige IBMid-ID (IUI = IBMid Unique ID), um die Identität des Benutzers in IBM Cloud zu ermitteln. Diese IUI stellt für den Service-Provider
eine nicht transparente Zeichenfolge dar.
Beispiel:
X-Broker-API-Originating-Identity: ibmcloud eyJpYW1faWQiOiJJQk1pZC01MEdOUjcxN1lFIn0=
Decoded:
{"iam_id":"IBMid-50GNR717YE"}
Version des API-Headers
Der API-Versionsheader ist 2.12. Beispiel: X-Broker-Api-Version: 2.12
.
Ressourceninstanz (PUT) body.context und Ressourceninstanz (PATCH) body.context
PUT /v2/service_instances/:resource_instance_id
und PATCH /v2/service_instances/:resource_instance_id
empfangen den folgenden Wert in body.context: { "platform": "ibmcloud", "account_id": "tracys-account-id", "crn": "resource-instance-crn" }
.
Zusätzliche Brokerempfehlungen
Empfehlungen zur Verwendung asynchroner anstelle synchroner Operationen
Die OSB-API unterstützt sowohl den synchronen als auch den asynchronen Betriebsmodus. Wenn Ihre Operationen weniger als 10 Sekunden dauern, müssen Sie synchrone Antworten verwenden. Andernfalls müssen Sie den asynchronen Betriebsmodus verwenden.
Der asynchrone Modus erfordert den Endpunkt last_operation
. Weitere Informationen finden Sie unter Status einer laufenden Bereitstellung für eine Serviceinstanz abrufen.
Empfehlungen für die positionsübergreifende Verwaltung von Brokern
Für Benutzer ist es wichtig, die Gegebenheiten der Position für ihre Cloud-Services in Bezug auf die Latenzzeiten, die Verfügbarkeit und den Datenspeicherort zu kennen.
Wenn Sie Dienstinstanzen auf IBM Cloud erstellen, ist einer der erforderlichen Parameter, den Ihre Benutzer angeben, der Ort, an dem die Dienstinstanz erstellt werden soll. Einige Dienste können die Erstellung an mehreren Standorten unterstützen. So kann ein Datenbankdienst beispielsweise die Erstellung in allen Regionen von IBM Cloud oder nur in einer Teilmenge unterstützen.
Wenn Ihr API-basierter Drittanbieterservice in einer anderen Cloud implementiert wurde und in IBM Cloud zugänglich gemacht wurde, gibt die Position die Position des Service in der anderen Cloud an.
Beim IBM Cloud-Onboarding müssen Sie mindestens einen OSB-Broker implementieren. Sie können je nach Bereitstellungsstrategie und den Standorten, die für Ihren Service unterstützt werden sollen, mit mehreren Brokern arbeiten. Im Partner Center Sell erstellen Sie die Zuordnung zwischen Ihrem Preistarif und dem Broker. In der Regel haben Sie die Wahl zwischen der Definition eines einzigen Brokers, der alle Standorte Ihres Dienstes bedient, und der Definition eines Brokers pro Standort; diese Entscheidung obliegt dem Dienstanbieter.
Eine Liste der verfügbaren Positionen finden Sie unter IBM global catalog locations. Wenn für Ihren Service weitere Standorte definiert werden müssen, wenden Sie sich an das IBM Cloud -Onboarding-Team.
Hosting Ihrer Broker
Ihr Broker muss als Teil einer Anwendung gehostet werden, die auf REST-API-Aufrufe reagieren kann, und Ihr gehosteter Standort muss die Sicherheitsrichtlinien von IBM Cloud erfüllen. Sie können Ihren Broker in IBM Cloud hosten, oder er kann extern gehostet werden, wenn er von IBM Cloud selbst öffentlich zugänglich ist.
Um Ihren Broker außerhalb von IBMzu hosten, müssen Sie sicherstellen, dass er die folgenden Sicherheitsrichtlinien erfüllt:
- Das TLS-Protokoll (Transport Layer Security) in der Version 1.2 muss eingehalten werden. Weitere Informationen finden Sie unter Übersicht über das TLS-Protokoll.
- Hosting auf einem gültigen HTTPS-Endpunkt, auf den über das öffentliche Internet zugegriffen werden kann
Broker Ihres Service testen
Sie müssen Ihren Broker validieren, indem Sie curl-Befehle für die verschiedenen Endpunkte ausführen, die Sie aktivieren. Sie benötigen den gehosteten Standort Ihres Service-Brokers sowie die URL und die Anmeldeinformationen, die mit Ihrer Anwendung verbunden sind. Um Ihren Broker zu testen, können Sie die folgende Methode anwenden:
- Die Beispiel-Readme-Datei für das Curling Ihrer OSB-Endpunkte: https://github.com/IBM/sample-resource-service-brokers/blob/master/README.md.
Beim Testen Ihres Service-Brokers verwendet der Ressourcen-Controller das konfigurierte Authentifizierungsschema, um Anfragen an Ihren Broker zu stellen. Stellen Sie sicher, dass Ihr Broker eine der unterstützten Authentifizierungsmethoden implementiert, um eine ordnungsgemäße Validierung und Autorisierung zu gewährleisten. Weitere Informationen finden Sie unter Authentifizierungsverfahren für Makler.
Beispiel für die Curl-Anforderung:
Verwenden Sie das folgende Beispiel, um die curl-Antwort Ihrer Broker zu testen:
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"}'