管理员和开发人员可以对 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 令牌。
  • 已登录到 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 正则表达式模式,用于对值进行验证。
  • 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 存储类名称和限制(以兆字节为单位)。
  • 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)) 显示如何指定 pod 计数限制的值。podCountLimit 是整数类型。
    • 如果用户指定的值在主管命名空间类中定义的最小值和最大值(100 到 1000)范围内,则该值为 pod 计数限制的值。
    • 如果用户未指定任何值,则 pod 计数限制为主管命名空间类中定义的默认值 500。
    • 如果用户指定的值超出最小值和最大值范围,则该值无效,主管命名空间创建将失败,并显示错误,指出 pod 计数限制超出允许的值范围。
主管命名空间类绑定
通过主管命名空间类绑定,可以在项目中创建主管命名空间时使用主管命名空间类。
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>