管理员和开发人员可以对 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 令牌。
- 已登录到 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 令牌。要获取 API 令牌,请参见使用命令行界面执行主管命名空间任务。
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
按 ID 描述云网关示例命令和输出。$ 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
正则表达式模式,用于对值进行验证。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
存储类名称和限制(以兆字节为单位)。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))
显示如何指定 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>