管理員和開發人員可以對 CCI Kubernetes API 伺服器公開的 Cloud Consumption Interface (CCI) API 資源執行動作。
根據資源種類,管理員和開發人員可以使用 API 執行以下動作。
資源種類 | 管理員動作動詞 | 開發人員動作動詞 |
---|---|---|
CloudAccount | get、list | |
CloudGateway | get、list | |
Supervisor | get、patch、list | |
Project | create、get、update、patch、delete、list | get、list |
ProjectRole | get、list | get、list |
ProjectRoleBinding | create、get、update、patch、delete、list | get、list |
Region | create、get、update、patch、delete、list | get、list |
RegionBinding | create、get、update、patch、delete、list | get、list |
RegionBindingConfig | create、get、update、patch、delete、list | |
SupervisorNamespaceClass | create、get、update、patch、delete、list | get、list |
SupervisorNamespaceClassConfig | create、get、update、patch、delete、list | |
SupervisorNamespaceClassBinding | create、get、update、patch、delete、list | get、list |
SupervisorNamespace | create、get、delete、list | create、get、delete、list |
以下範例顯示了 CLI 呼叫和回應。使用 CLI 需要具備以下條件:
- 已下載 CCI kubectl 外掛程式。
- 已取得 API Token。
- 已登入 CCI 伺服器。
專案和使用者
- 專案
-
管理員可以建立專案,以便對使用者進行分組,並設定對
Automation Assembler 中的雲端範本等內容來源或對
Automation Service Broker 中的目錄項目的存取權。
Project 包含以下內容:
metadata.name
專案名稱。-
spec.description
可選說明。 -
spec.sharedResources
如果為 true,則專案與專案中的其他使用者共用主管命名空間。如果為 false,則專案將命名空間的存取權限制到管理員或建立命名空間的使用者。
apiVersion: project.cci.vmware.com/v1alpha1 kind: Project metadata: name: demo-project spec: description: This is a demo project sharedResources: true
- 專案角色
-
專案角色反映可指派給專案中使用者的可用管理、檢視或編輯角色。
專案角色 說明 admin 允許修改和刪除命名空間。 檢視 命名空間上的唯讀角色。 編輯 允許修改命名空間。 閱讀專案角色範例輸入。
apiVersion: authorization.cci.vmware.com/v1alpha1 kind: ProjectRole metadata: name: admin spec: description: project administrator
- 專案角色繫結
-
專案角色繫結用於為專案中的使用者或群組指派成員資格。
ProjectRoleBinding 包含以下內容:
metadata.name
專案角色繫結的名稱,需要使用特定的格式以反映主體類型 (使用者或群組) 和主體名稱:cci:<user/group>:<subject domain>:<subject name>
metadata.namespace
說明專案名稱。-
subjects
說明使用者或群組。僅允許一個項目。 -
roleRef
說明角色。
apiVersion: authorization.cci.vmware.com/v1alpha1 kind: ProjectRoleBinding metadata: # name must match the subject kind and name name: cci:user:vmware.com:hello namespace: demo-project subjects: - kind: User # User / Group name: [email protected] roleRef: apiGroup: authorization.cci.vmware.com kind: ProjectRole name: admin # admin / edit / view
vCenter 和主管
此類別涉及基礎結構,其功能僅供管理員使用。
- 雲端帳戶
-
雲端帳戶由 vSphere+ 自動建立,也可由管理員手動建立,用於登錄
vCenter 以及在主管中啟用資料中心。
建立雲端帳戶範例輸出。
Name: cci-ui-volume-service Namespace: cci-config Labels: <none> Annotations: infrastructure.cci.vmware.com/data-collection-status: FINISHED infrastructure.cci.vmware.com/last-data-collection-timestamp: 2022-10-24T22:06:08.603Z API Version: infrastructure.cci.vmware.com/v1alpha1 Kind: CloudAccount Metadata: Creation Timestamp: 2022-10-17T12:18:28Z UID: 2163e7cf-f698-3f1f-afca-f3daa8c730fa Spec: Address: 127.193.29.114 Cloud Proxy Name: 2d164fed-bbf3-47cc-8e6b-5226c5277ee4 Events: <none>
- 雲端閘道
-
雲端閘道用於在內部部署
vCenter 執行個體與
VMware Aria Automation Cloud 之間建立通訊。雲端閘道僅在 vSphere+ 環境中使用。
若要查詢雲端閘道,管理員必須具有 Automation Service Broker 管理員和 vSphere+ 雲端管理員服務角色的 API Token。若要取得 API Token,請參閱使用命令列介面執行主管命名空間工作。
CloudGateway 包含以下內容:status.conditions.status
指示雲端閘道的狀況。Status: true
指示閘道正常運作。status.gatewayVersion
指示閘道版本。status.phase
指示閘道狀態為已連線或已中斷連線。
列出所有雲端閘道範例命令和輸出。$ kubectl -n cci-config get cloudgateways NAME AGE 1edcd989-6b57-61d3-a57f-5bc9f848d4c2 21d 1edcda3b-0ad1-6680-8488-914e7078087d 21d 1edd3e58-c7fc-6afc-b2b9-4382615d7f58 13d 1edd4c68-ada5-617f-9649-53904d8cf8db 12d 1edd9bdf-71ca-67d3-ac0d-a3c2f885f97c 5d20h
按識別碼說明雲端閘道範例命令和輸出。$ kubectl -n cci-config describe cloudgateway 1edd9bdf-71ca-67d3-ac0d-a3c2f885f97c Name: 1edd9bdf-71ca-67d3-ac0d-a3c2f885f97c Namespace: cci-config Labels: <none> Annotations: <none> API Version: infrastructure.cci.vmware.com/v1alpha1 Kind: CloudGateway Metadata: Creation Timestamp: 2023-04-13T05:42:23Z UID: e0de7747-2076-366e-9546-c98f6738c0ab Spec: Gateway Id: 1edd9bdf-71ca-67d3-ac0d-a3c2f885f97c Status: Conditions: Last Updated Time: 2023-04-19T21:45:03Z Status: True Type: CloudGatewayReady Gateway Version: 8.0.1.00000 Hostname: sc2-10-184-86-182.eng.vmware.com Phase: Connected Vcenters: Id: 94c18050-362e-4a8c-842f-2d8c4f01e240 Vm Instance Uuid: 4201EFF0-2147-CB43-2817-155FDA47DF41 Events: <none>
- 主管
-
主管是在完成
vCenter 資料收集後由系統建立的。管理員可以使用用於放置的功能標籤更新主管,以及將其指派給區域。
-
metadata.labels
管理員使用索引鍵-值設定定義標籤以反映主管功能。標籤用於在建立命名空間時根據功能篩選主管。 spec.regionNames
管理員定義區域名稱,以便可以將主管指派給區域。一個主管只能指派給一個區域,依預設不會指派給某個區域。
Name: bugbash-vc:domain-c8 Namespace: cci-config Labels: environment=bug-bash-9 Annotations: infrastructure.cci.vmware.com/cloud-account-id: 33a0b2d0-91c8-4629-b04a-65448494d54e API Version: infrastructure.cci.vmware.com/v1alpha1 Kind: Supervisor Metadata: Creation Timestamp: 2022-09-28T04:22:38Z UID: fbd10d08-bc56-4ec2-93f8-693a7a4b2003 Spec: Cloud Account Name: bugbash-vc Display Name: wcp-test-dc-cluster External Id: domain-c8 Region Names: us-demo1 Status: Power State: On Events: <none>
-
拓撲
- 區域
-
管理員建立區域作為一或多個主管的分組機制。區域可以根據地理位置或基礎結構等各種參數,並且可以包括來自多個 vCenter 的主管。
建立區域範例輸入。
apiVersion: topology.cci.vmware.com/v1alpha1 kind: Region metadata: name: us-west1 spec: description: The us-west1 region
- 區域繫結
-
管理員建立區域繫結以將區域與專案相關聯。
若要使專案中的使用者能夠建立到主管命名空間,必須同時存在 RegionBinding 和 RegionBindingConfig。
RegionBinding 包含以下內容:metadata.name
區域名稱,必須與現有區域相符。metadata.namespace
專案名稱。
建立區域繫結範例輸入。apiVersion: topology.cci.vmware.com/v1alpha1 kind: RegionBinding metadata: name: us-west1 namespace: demo-project
- 區域繫結組態
-
若要在專案中按區域控制主管放置邏輯,管理員需要定義
RegionBindingConfig。定義
RegionBindingConfig 後,管理員可以使用主管標籤索引鍵-值配對進一步細化特定主管與專案的關聯。例如,管理員可以使用
key: environment
規格,透過value: testing
選取為測試指定的主管。RegionBindingConfig 包含以下內容:建立區域繫結組態範例輸入。metadata.name
區域名稱,必須與現有區域相符。metadata.namespace
專案名稱。spec.supervisorSelector
選取專案中可用於建立命名空間的主管。為選取正確的主管,matchExpressions
定義了主管標籤索引鍵、相符運算子和值以獲得相符項。spec.supervisorSelector
運算式比對使用以下運算子:operator: In
區域繫結測試索引鍵-值是否與主管標籤索引鍵-值相符。雖然matchExpressions
是一個陣列,但該陣列目前僅限於一個項目值。operator: NotIn
區域繫結測試索引鍵-值是否與主管標籤索引鍵-值不相符。雖然matchExpressions
是一個陣列,但該陣列目前僅限於一個項目值。operator: Exists
區域繫結搜尋與包含標籤索引鍵的主管相符的項目。不使用值。operator: DoesNotExist
區域繫結搜尋不包含標籤索引鍵的主管。不使用值。
apiVersion: topology.cci.vmware.com/v1alpha1 kind: RegionBindingConfig metadata: name: us-west1 namespace: demo-project spec: supervisorSelector: matchExpressions: - key: environment operator: In values: - testing - key: storage operator: Exists - key: storage operator: NotIn values: - encrypted
主管命名空間類別
- 主管命名空間類別
-
SupervisorNamespaceClass 定義在建立命名空間期間可用於自訂命名空間設定的命名空間範本和可選參數。
預設欄位指定使用者在建立命名空間時未提供參數值的情況下所使用的參數值。例如,如果參數類型定義:
default: false
,則false
為參數值。備註: 為確保使用者可以在使用部分參數值或不使用參數值的情況下建立命名空間,每個參數都必須包含預設欄位和值。參數類型 內容 布林值 default
預設布林值。enum
允許的布林值清單。可用於僅具有一個值 (true
或false
) 的參數。
整數 minimum
最小整數值。maximum
最大整數值。default
預設整數值。enum
允許的整數值清單。
字串 minLength
字串長度下限。maxLength
字串長度上限。default
預設字串值 (如果使用者未提供)。pattern
Regex 模式,用於對值進行驗證。enum
允許的字串值清單。
apiVersion: infrastructure.cci.vmware.com/v1alpha1 kind: SupervisorNamespaceClass metadata: name: gold-with-gpu spec: description: Gold with GPU enabled supervisor namespace parameters: - name: environment type: String default: testing enum: - testing - staging - production - name: fastStorageClass type: Boolean default: false - name: podCountLimit type: Integer minimum: 100 maximum: 1000 default: 500
- 主管命名空間類別組態
-
若要指定主管命名空間類別的實作,管理員需要建立包含命名空間設定的
SupervisorNamespaceClassConfig。若要讓專案具有主管命名空間類別的存取權,
SupervisorNamespaceClass 和
SupervisorNamespaceClassConfig 必須同時存在。
SupervisorNamespaceClassConfig 包含以下內容:
metadata.name
主管命名空間類別名稱。metadata.namespace
專案名稱。spec.storageClasses
儲存區類別名稱和限制 (以 MB 為單位)。spec.vmClasses
虛擬機器類別的名稱。spec.contentSource
全部使用type: ContentLibrary
定義的內容程式庫名稱。spec.limits
限制名稱和值。有效的限制值包括:config_map_count
cpu_limit
cpu_limit_default
cpu_request_default
daemon_set_count
deployment_count
job_count
memory_limit
memory_limit_default
memory_request_default
persistent_volume_claim_count
pod_count
replica_set_count
replication_controller_count
secret_count
service_count
stateful_set_count
storage_request_limit
spec.supervisorSelector
專案中可用於建立命名空間的主管。為選取正確的主管,matchExpressions
定義了標籤索引鍵、相符運算子和標籤值以獲得相符項。
管理員會公開定義命名空間設定值時可以使用的類別參數,以便使用者可以在請求期間自訂命名空間設定。
建立主管命名空間類別組態範例輸入。apiVersion: infrastructure.cci.vmware.com/v1alpha1 kind: SupervisorNamespaceClassConfig metadata: name: gold-with-gpu spec: storageClasses: - name: wcp-storage-class limit: "100" - name: "((parameters.fastStorageClass ? 'fast-storage-class' : 'standard-storage-class'))" vmClasses: - name: big-vm-class - name: small-vm-class contentSources: - name: global-content-library type: ContentLibrary - name: "((parameters.environment))-content-library" type: ContentLibrary limits: - name: cpu_limit limit: "1000" - name: pod_count limit: "((parameters.podCountLimit))" supervisorSelector: matchExpressions: - key: gpu-enabled operator: In values: - true
此範例使用主管命名空間類別範例中的參數,如下所示:((parameters.fastStorageClass ? 'fast-storage-class' : 'standard-storage-class'))
顯示用於指定儲存區類別名稱的條件檢查。fastStorageClass
是布林類型。- 如果使用者將參數值指定為 true,則名稱為
fast-storage-class
。 - 如果使用者將值指定為 false,則名稱為
standard-storage-class
。
- 如果使用者將參數值指定為 true,則名稱為
((parameters.podCountLimit))
顯示如何指定網繭計數限制的值。podCountLimit
是整數類型。- 如果使用者指定的值在主管命名空間類別中定義的最小值和最大值範圍 (100 到 1000) 內,則該值為網繭計數限制的值。
- 如果使用者未指定任何值,則網繭計數限制為主管命名空間類別中定義的預設值 500。
- 如果使用者指定的值超出最小值和最大值範圍,則該值無效,主管命名空間建立將失敗,並顯示錯誤,指出網繭計數限制超出允許的值範圍。
- 主管命名空間類別繫結
-
透過主管命名空間類別繫結,可以在專案中建立主管命名空間時使用主管命名空間類別。
SupervisorNamespaceClassBinding 包含以下內容:
metadata.name
主管命名空間類別繫結名稱。metadata.namespace
專案名稱。spec.overrideParameters
這些由管理員建立的參數是定義的值,使用者在建立主管命名空間時無法變更它們。const
指定參數值。這些參數是可選參數,如果已定義,並非所有類別參數都需要這些參數。
建立主管命名空間類別繫結範例輸入。在此範例中,apiVersion: infrastructure.cci.vmware.com/v1alpha1 kind: SupervisorNamespaceClassBinding metadata: name: gold-with-gpu namespace: demo-project spec: overrideParameters: - name: environment type: string const: testing supervisorNamespaceClassRef: apiVersion: infrastructure.cci.vmware.com/v1alpha1 kind: SupervisorNamespaceClass name: gold
name: environment
是一個覆寫參數,使用主管命名空間類別中的environment
參數。透過指定const: testing
,使用者將只能在測試環境中使用此類別建立主管命名空間。
主管命名空間
- 主管命名空間
-
使用者可以使用主管命名空間類別作為範本在特定區域中建立主管命名空間。如果已公開,則可以使用可選類別參數定義命名空間設定。
SupervisorNamespace 包含以下內容:建立主管命名空間範例輸入。
metadata.name
專案中和主管上的命名空間的名稱。metadata.namespace
專案名稱。spec.regionName
區域名稱。spec.className
主管命名空間類別名稱。spec.classParameters
可選索引鍵-值,用於覆寫預設參數值。spec.description
可選命名空間說明。
apiVersion: infrastructure.cci.vmware.com/v1alpha1 kind: SupervisorNamespace metadata: name: demo-ns5 namespace: demo-project spec: description: Demonstrating supervisor namespace creation regionName: us-west2 className: bronze
建立主管命名空間範例輸出。Name: demo-1 Namespace: sprint-demo-project Labels: <none> Annotations: infrastructure.cci.vmware.com/wcp-address: 10.161.81.40 API Version: infrastructure.cci.vmware.com/v1alpha1 Kind: SupervisorNamespace Metadata: Creation Timestamp: 2022-09-13T01:55:57Z UID: my-example-demo-1 Spec: Class Name: demo-class Class Parameters: Pods: 30 Description: Region Name: us-demo-1 Status: Conditions: Last Transition Time: 2022-09-13T01:55:58Z Status: True Type: Ready Phase: Created Events: <none>