若要建立可為承租人提供額外 VMware Cloud Director 功能的延伸,服務提供者可以使用 VMware Cloud Director API。
定義的實體表示 VMware Cloud Director 可以管理的外部資源。延伸和使用者介面外掛程式開發人員可以建立執行階段定義的實體,從而允許延伸和使用者介面外掛程式在 VMware Cloud Director 中儲存及操縱延伸特定資訊。如果建立的延伸需要儲存狀態或對外部資源的參考,則該延伸可以使用執行階段定義的實體,而不是本機資料庫。例如,Kubernetes 延伸可以在執行階段定義的實體中儲存所管理的 Kubernetes 叢集的相關資訊。然後,此延伸可提供延伸 API,從而使用執行階段定義的實體中的資訊管理這些叢集。
只能透過 VMware Cloud Director API 存取執行階段定義的實體。具有管理員權限的使用者可以透過驗證延伸所建立定義實體的狀態來追蹤和觀察延伸的運作方式。定義的實體的狀態還有助於對延伸問題進行疑難排解。
定義的實體類型
在執行階段定義可使用定義的實體儲存的資訊架構。透過 JSON 文件在實體類型中定義架構。在建立定義的實體類型時,將建立一個新的自訂 VMware Cloud Director 類型,類似於可以透過延伸和行為進行管理的虛擬機器和 vApp。例如,如果我們設想實體類型 NativeContainerCluster
,則此類型的每個執行個體都包含有關特定 Kubernetes 叢集的資訊。若要取得有關該叢集的資訊,VMware Cloud Director Container Service Extension 將透過 VMware Cloud Director API 與 VMware Cloud Director 通訊,然後向使用者提供必要的資訊。
建立定義的實體類型的執行個體後,將無法再變更類型、架構和行為。若要向實體類型新增新功能,必須建立該類型的新版本。如果定義的實體執行個體是基於舊版的實體類型,則可以透過將實體的類型內容設定為新類型的識別碼,升級定義的實體,以使用類型的更高版本。建立定義的實體時,在 API 呼叫中,實體內容的內容必須與實體類型中指定的 JSON 架構相符。只能將對實體類型的存取權授與特定的使用者和組織。可以為實體類型的不同版本設定不同的存取限制。
實體類型的架構可以指定對不同內容欄位的存取權。可以將內容標記為 public
、protected
或 private
。
內容狀態 | 存取控制 |
---|---|
Public | 所有使用者都可以檢視並修改該欄位。 |
Protected | 所有使用者都可以檢視該欄位。只有具有完全控制存取權的使用者才能建立和修改該欄位。這些使用者必須具有管理員完全控制:TYPE 權限,或同時具有完全控制:TYPE 權限和完全控制 ACL。 |
Private | 只有具有完全控制存取權的使用者才能檢視、建立和修改該欄位。這些使用者必須具有管理員完全控制:TYPE 權限,或同時具有完全控制:TYPE 權限和完全控制 ACL |
clusterState
的 JSON 架構可能如下所示。
"clusterState" : { "type" : "string", "x-vcloud-restricted" : "protected" }
介面和行為
定義的實體還具有可用於定義行為的介面。如果使用 Kubernetes 範例,則每個叢集實體類型對容器叢集介面中定義的行為都採用不同的實作形式。Tanzu Kubernetes 叢集類型行為與 vSphere 進行通訊以執行必要動作,而原生容器叢集類型行為與 VMware Cloud Director Container Service Extension 進行通訊。
所有使用者均可檢視定義的實體的介面。
可透過多種方法定義行為。
- 可以建立和發佈 VMware Aria Automation Orchestrator 工作流程,然後建立叫用該工作流程的行為。
- 您可以使用 WebHook 將任何功能連結到行為。
- 透過 MQTT 行為,可以叫用延伸中的功能。透過使用 MQTT,可以直接與延伸進行通訊,然後延伸可以提供更詳細的狀態。
- 介面 API 識別碼採用如下形式:
urn:vcloud:interface:vendor_name:interface_name:version
。 - 類型 API 識別碼採用如下形式:
urn:vcloud:type:vendor_name:type_name:version
。 - 行為 API 識別碼採用如下形式:
urn:vcloud:behavior-interface:behavior_name:vendor_name:interface_name:version
或urn:vcloud:behavior-type:behavior_name:vendor_name:interface_name:version
。
建立執行階段定義的實體
若要建立定義的實體,首先設定外部資源並將必要的資訊新增到定義的實體。此程序可能需要反覆執行幾次。若要解析定義的實體,您必須確認架構的內容具有所有必要的資訊。如果內容與類型中指定的 JSON 架構不相符,則定義的實體狀態將變更為 Resolution_Error
。如果填入的資訊正確,則定義的實體狀態將變更為 Resolved
並可供使用。
由於任務追蹤所有長時間執行的執行階段定義的實體作業,因此可以使用 VMware Cloud Director 使用者介面監控定義的實體的建立、行為叫用等。當定義的實體的狀態變更為 Resolved
時,使用者介面中的相應工作將顯示為 Succeeded
。
在一個承租人組織中建立定義的實體時,無法與另一個組織中的承租人共用該定義的實體。如果在 System
組織中建立定義的實體,則可以將其與承租人使用者或承租人組織共用。
用於建立定義實體的範例 API 呼叫
該範例提供了一個用於建立 pksContainerCluster
類型的新實體的範例 API 呼叫。
POST https://host/cloudapi/1.0.0/entityTypes/urn:vcloud:type:vendorA:pksContainerCluster:1.0.0 { "name": "testEntity", "entity": { "cluster": { "name": "testCluster", "nodes": ["node1"] } } }
存取定義的實體執行個體
兩個互補機制控制執行階段定義的實體的存取權。
-
權限 - 建立執行階段定義的實體類型時,您可以為此類型建立權限服務包。若要提供對特定作業的存取權,您必須將此服務包中的權限指派給其他角色。每個服務包都有五個特定於類型的權限:檢視:TYPE、編輯:TYPE、完全控制:TYPE、管理員檢視:TYPE 和管理員完全控制:TYPE。
檢視:TYPE、編輯:TYPE 和完全控制:TYPE 權限僅與 ACL 項目組合使用。
-
存取控制清單 (ACL) - ACL 資料表包含的項目定義了使用者對系統中特定實體具有的存取權。對實體提供了額外層級的控制。例如,如果編輯:TYPE 權限指定使用者可以修改其有權存取的實體,ACL 資料表會定義使用者可存取的實體。
具有檢視一般 ACL 權限的系統管理員可以使用
accessControls
API 檢視指派給特定已定義實體的 ACL。請參閱 VMware Cloud Director OpenAPI。具有管理一般 ACL 權限的系統管理員可以使用
accessControls
API 建立、修改和移除特定的 ACL。
實體作業 | 選項 | 描述 | |
---|---|---|---|
讀取 | 管理員檢視:TYPE 權限 | 具有此權限的使用者可以查看組織內此類型的所有執行階段定義的實體。 | |
檢視:TYPE 權限和 ACL 項目 >= 檢視 | 具有此權限和讀取層級 ACL 的使用者可以檢視此類型的執行階段定義的實體。 | ||
修改 | 管理員完全控制:TYPE 權限 | 具有此權限的使用者可以在所有組織中建立、檢視、修改和刪除此類型的執行階段定義的實體。 | |
編輯:TYPE 權限和 ACL 項目 >= 變更 | 具有此權限和修改層級 ACL 的使用者可以建立、檢視和修改此類型的執行階段定義的實體。 | ||
刪除 | 管理員完全控制:TYPE 權限 | 具有此權限的使用者可以在所有組織中建立、檢視、修改和刪除此類型的執行階段定義的實體。 | |
完全控制:TYPE 權限和 ACL 項目 = 完全控制 | 具有此權限和完全控制層級 ACL 的使用者可以建立、檢視、修改和刪除此類型的執行階段定義的實體。 |
您可以使用 VMware Cloud Director API 或使用者介面,將權限服務包發佈到要管理此類型實體的任何組織。發佈權限服務包後,您可以將服務包中的權限指派給組織內的角色。
您可以使用 VMware Cloud Director API 編輯 ACL 資料表。
存取定義的實體介面和類型作業
定義的實體介面和類型作業需要某些服務提供者可能沒有的特定權限。執行作業之前,請確認您具有必要的權限。
作業 | 需求 |
---|---|
檢視和查詢介面 | 所有使用者都具有必要的權限。 |
建立介面 | 您必須具有建立新的自訂實體定義權限。 |
編輯介面 | 您必須具有編輯自訂實體定義權限。 |
刪除介面 | 您必須具有刪除自訂實體定義權限。 |
建立類型 | 您必須具有建立新的自訂實體定義權限。 |
檢視類型 | 最低需求為 ReadOnly 類型 ACL。 |
編輯和刪除類型 | 您必須具有編輯/刪除自訂實體定義權限和 FullControl 類型 ACL。 |
使用執行階段定義的實體
若要在定義的實體上叫用行為,該實體必須處於 Resolved
狀態。若要刪除定義的實體,該實體必須處於 Resolved
或 Resolution_Error
狀態。
僅當實體類型和介面沒有執行個體時,才能對其進行修改。只能透過變更參考的實體類型版本來修改該實體類型。
若要診斷定義的實體的存取問題,可以使用實體 ACL 查詢 API 並驗證必要的權限。此外,必須將實體類型的權限服務包發佈到要使用該實體類型的承租人。