開發、管理及測試服務分配管理系統
IBM Cloud® 平台會與服務中介程式互動,以建立及管理服務實例與服務綁定。 您可以透過結合使用我們的公共 IBM Cloud 服務中介程式範例、開放式服務中介程式參考應用程式以及開放式服務中介程式 API 文件,來建立您自己的中介程式。
當您將服務上線至 IBM Cloud時,必須建置一個以上服務分配管理系統,以管理服務的生命週期及其計量整合。 如需相關資訊,請參閱 計量整合。
什麼是服務中介?
服務分配管理系統可管理服務的生命週期。 平台會與服務分配管理系統互動,以建立、存取及管理它們所提供的服務。 Open Service Broker API 定義這些互動,以容許軟體提供者向任何人提供其服務,而不論這些軟體提供者選擇何種技術或基礎架構。 服務分配管理系統充當中介軟體元件,可處理自動佈建產品的服務實例,並協助追蹤服務實例的使用情形。
如果您在多個供應商之間開發並提供軟體即服務、平台即服務或基礎架構即服務,則分配管理系統非常有用。 它可以透過引進服務分配管理系統來自動為客戶佈建及連結,以增加商業價值。 此外,客戶管理和使用情形追蹤可以更容易使用中介軟體元件來處理這些跨領域的問題。 不過,如果您具有可以部署在任何虛擬機器或平台上的自訂軟體,則服務分配管理系統不適用。
當使用者從 IBM Cloud 型錄選取您的服務及其定價方案並建立實例時,服務的資料 (包括定價方案和度量值) 會傳送至您的服務分配管理系統。 分配管理系統會與後端系統整合,後端系統會管理服務實例的佈建,以及所選定價方案的度量值。 如果客戶刪除產品的實例,則會將要求傳送至服務分配管理系統,並管理實例的取消佈建。
分配管理系統架構為開發和作業團隊提供重大好處:
- 開發人員可以將他們的應用程式和儲存器連接至他們需要的支援服務。 不論支援服務為何,作業都相同。
- 操作員不再需要手動建立及委派對服務的存取權。 相反地,它們會配置服務及服務方案的市場。 從那裡,開發商可以自助,降低了許多企業今天所面臨的行政成本。
每一個根據 Open Service Broker API 規格建置的服務分配管理系統都有一組相同的直覺式生命週期指令。 這些指令為服務分配管理系統提供有用的好處:
- 提取服務分配管理系統提供之支持服務的型錄
- 型錄說明可透過服務分配管理系統建立的所有服務,且每一個服務都由方案組成。 方案通常代表服務給定變式的成本和好處。 許多服務使用代表產品不同層級或配置的計劃。
- 佈建新的服務實例
- 服務實例是服務及方案的已建立實例,如服務分配管理系統的型錄中所述。
- 從那些服務實例連接及中斷連接應用程式和儲存器
- 建立服務實例時,您希望應用程式或容器開始與該實例通訊。 從服務分配管理系統的角度來看,這稱為服務連結。
- 取消佈建服務實例
- 此動作會刪除起始建立服務實例時所建立的所有資源。
開始之前
- 請在 IBM Cloud 合作夥伴中心註冊您的服務。
- 定義服務的產品詳細資料。
- 檢閱 供應實務範例,以瞭解資源建立的運作方式。
- 請閱讀並熟悉 Open Broker API 規格說明,並以讀我檔作為指引以深入了解。IBM Cloud 本系統採用 Open Service Broker API (OSB) 規格
version 2.12。
建置分配管理系統
使用下列文件和示例應用程式配置和部署具有您所需規格的代理:
- 使用 Open Service IBM Cloud Broker API 設定所需規格,包括必需的端點。
檢視下列範例應用程式:
- 使用 NodeJS 基於範例的 Open Service Broker 參考應用程式作為指南來建立您的經紀人。
包括必要的端點
所有服務分配管理系統都必須設定某些必要的端點。 可連結服務以及停用和重新啟用服務實例需要其他端點邏輯。
所有服務分配管理系統的必要端點邏輯
服務分配管理系統必須提供 REST API 所耗用的一組標準 meta 資料值,而 IBM Cloud 分配管理系統必須要有下列 REST API 端點或路徑的邏輯:
- 型錄 (GET)
- 傳回分配管理系統中所含的型錄 meta 資料。
- 資源實例 (PUT)
- 建立服務實例。
- 資源實例 (DELETE)
- 刪除服務實例。
- 資源實例 (PATCH)
- 更新服務實例。
型錄 (GET) 的附註:此端點定義分配管理系統與分配管理系統所支援服務及方案之 IBM Cloud 平台間的合約。 此端點會傳回儲存於您的中介伺服器中的目錄元資料。 這些值定義了您的服務與 IBM Cloud 平台之間的最低限度合約。 所有非必要的額外目錄元資料,皆儲存於 IBM Cloud 目錄中。 任何目錄顯示值(如連結和圖示)的更新,必須在控制台 IBM Cloud 進行,而非存放於您的經紀商中。 儲存在分配管理系統中的 meta 資料都不會顯示在 IBM Cloud 主控台或 IBM Cloud CLI 中。 主控台和命令列介面(CLI)會回傳在「Partner Center Sell」中設定,並儲存於「IBM Cloud」目錄中的內容。 以下部分列出了 catalog (GET) 方法所回傳的最低必要值:
{
"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."
}
]
}]
}
可連結服務的必要端點邏輯
若您的服務可與 IBM Cloud 中的應用程式綁定,則必須向服務使用者提供 API 端點及憑證。 可連結服務必須使用 Open Service Broker 規格中的可連結作業,並實作下列端點或路徑:
- 連結及認證 (PUT)
- 將服務實例連結至應用程式。
- 連結及認證 (DEL)
- 將您的服務實例與應用程式取消連結。
必要 IBM Cloud 延伸端點
OSB 規格不支援已停用實例狀態。 已停用狀態包括導致帳戶暫停 (但尚未取消) 且不同於已刪除實例狀態的遺漏付款或其他狀況。 為 IBM Cloud 支援可能處於停用狀態的客戶 IBM Cloud,我們定義了擴展 API 端點,允許停用及重新啟用服務實例。 必須具備以下端點擴充功能:
- 啟用及停用實例 (GET)
- 狀態 - 傳回服務實例的狀態。
- 啟用及停用實例 (PUT)
- 啟用或停用服務實例。
服務提供者必須負責在停用端點啟動時,停用對服務實例的存取權,並且在啟用端點啟動時,重新啟用該存取權。
IBM Cloud 平台提供的分配管理系統資訊
您的服務分配管理系統會從 IBM Cloud 平台收到下列資訊:
X-Broker-API-Originating-Identity
使用者身分標頭是透過 API 來源身分標頭提供的。 此要求標頭包含使用者的「IBM Cloud IAM 身分」。 IAM 身分已 base64 進行編碼。IBM Cloud 支援單一驗證領域:IBMid。 IBMid 領域使用「IBM ID 唯一 ID (IUI)」來識別使用者在 IBM Cloud 中的身分。 此 IUI 對服務提供者來說是不可探知的字串。
範例:
X-Broker-API-Originating-Identity: ibmcloud eyJpYW1faWQiOiJJQk1pZC01MEdOUjcxN1lFIn0=
Decoded:
{"iam_id":"IBMid-50GNR717YE"}
API 版本標頭
API 版本標頭 是 2.12。 例如:X-Broker-Api-Version: 2.12。
資源實例 (PUT) body.context 及資源實例 (PATCH) body.context
PUT /v2/service_instances/:resource_instance_id 及 PATCH /v2/service_instances/:resource_instance_id 會在 body.context 內收到下列值:{ "platform": "ibmcloud", "account_id": "tracys-account-id", "crn": "resource-instance-crn" }。
其他分配管理系統建議
使用非同步作業而不使用同步作業的建議
OSB API 支援同步及非同步作業模式。 如果您的作業將花費不到 10 秒,則必須使用同步回應。 否則,您必須使用非同步作業模式。 非同步模式需要 last_operation 端點。 如需相關資訊,請參閱 取得服務實例進行中佈建的狀態。
跨位置管理分配管理系統的建議
使用者必須瞭解其雲端服務的位置,查看是否會有延遲、可用性及資料常駐等問題。
當您在 IBM Cloud 上建立服務實例時,使用者必須提供的必填參數之一,就是他們希望建立該服務實例的位置。 某些服務支援在多個地點進行建立。 例如,資料庫服務可支援在所有 IBM Cloud 區域建立資料庫,或僅支援部分區域。
如果協力廠商 API 型服務實作在另一個雲端中,並公開至 IBM Cloud 中,則位置會指出服務在其他雲端中的位置。
在 IBM Cloud 上線時,您必須實作至少一個 OSB 分配管理系統。 您可以根據部署策略以及您要為服務提供支援的位置,實作多個分配管理系統。 在 Partner Center Sell 內,您可以建立定價方案與分配管理系統之間的對映。 常見的選擇包括:定義一個單一中介伺服器來為服務的所有據點提供服務,或是為每個據點分別定義一個中介伺服器;此選擇權取決於服務提供者。
如需可用位置的清單,請檢閱 IBM 廣域型錄位置。 若您的服務需要定義更多地點,IBM Cloud 請諮詢入職團隊。
管理分配管理系統
您的經紀人必須託管於可回應 REST API 呼叫的應用程式中,且託管位置必須符合 IBM Cloud 安全準則。 您可以將您的中介伺服器託管於 IBM Cloud,或者若該伺服器可透過 IBM Cloud 直接從外部存取,則也可選擇由外部託管。
若要在 IBM 之外託管您的經紀商,您必須確保其符合以下安全準則:
- 必須遵循傳輸層安全性( TLS )協定版本 1.2。 如需詳細資訊,請參閱 TLS 通訊協定概觀。
- 必須在公用網際網路上可存取的有效 HTTPS 端點上管理
測試服務的分配管理系統
您必須針對您啟用的不同端點執行 curl 指令,以驗證分配管理系統。 您需要服務中介的託管位置,以及與應用程式相關的 URL 和憑證。 要測試您的經紀人,您可以使用下列方法:
- 用於捲曲 OSB 端點的範例 Readme 檔指引: https://github.com/IBM/sample-resource-service-brokers/blob/master/README.md。
在測試您的服務中介時,資源控制器會使用已設定的驗證方案向您的中介提出請求。 確保您的經紀人實施了其中一種支援的驗證方法,以協助確保適當的驗證和授權。 如需詳細資訊,請參閱 中介的驗證方案。
curl 要求範例
下列範例用來測試您的分配管理系統 curl 回應:
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"}'