管理員和開發人員可以對 CCI Kubernetes API 伺服器公開的 Cloud Consumption Interface (CCI) API 資源執行動作。

根據資源種類,管理員和開發人員可以使用 API 執行以下動作。

資源種類 管理員動作動詞 開發人員動作動詞
CloudAccount 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 伺服器。
請參閱 準備使用命令行介面執行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 資料收集後由系統建立的。管理員可以使用用於放置的功能標籤更新主管,以及將其指派給區域。
  • 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
區域繫結
管理員建立區域繫結以將區域與專案相關聯。

若要使專案中的使用者能夠建立到主管命名空間,必須同時存在 RegionBindingRegionBindingConfig

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 允許的布林值清單。可用於僅具有一個值 (truefalse) 的參數。
整數
  • 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。若要讓專案具有主管命名空間類別的存取權, SupervisorNamespaceClassSupervisorNamespaceClassConfig 必須同時存在。
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
  • ((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>