作为 VMware Aria Automation 云管理员,您可以使用命令行界面启用 Cloud Consumption Interface (CCI) 访问并配置监管构造。命令行界面使用 Kubernetes 命令行工具或 kubectl。
例如,您可以在以下情况下使用 CLI:
- 如果用户使用 vSphere+ 配置了对 CCI 的访问权限,则用户只能访问 vSphere+ 创建的默认项目。可以使用 CLI 配置对其他项目和云帐户的访问权限。
- 如果您是现有 VMware Aria Automation 实例的管理员,则可以使用 CLI 访问 CCI,而无需通过 vSphere+ 启动 CCI。
有关可以使用 CLI 执行的操作的完整列表,请参见 Cloud Consumption Interface 的 Kubernetes API 参考。
必备条件
- 确认 vSphere 管理员已通过在 vSphere+ 中激活开发人员体验,授予用户对 VMware Aria Automation 的访问权限。请参见为新的 Aria Automation 用户配置对 Cloud Consumption Interface 的访问。
- 确认主管集群已在 vCenter 实例上启用,并且已在 VMware Aria Automation 中注册。
- 确认您至少是 VMware Aria Automation 中的组织成员,具有 Automation Assembler 或 Automation Service Broker 的管理员服务角色。
- 验证您是否拥有:
- 已下载 CCI kubectl 插件。
- 已获取管理员用户的 API 令牌。
- 使用令牌登录到 CCI 服务器,并将默认上下文更改为 CCI。
创建项目和项目角色绑定
要对 VMware Aria Automation 用户进行分组并设置对基础架构资源的访问权限,请创建项目和项目角色绑定。
- 创建项目。
kubectl create -f project.yaml
示例project.yaml
文件。apiVersion: project.cci.vmware.com/v1alpha1 kind: Project metadata: name: <project_name> spec: description: <description_of_project> sharedResources: true
- 创建项目角色绑定,为所创建项目中的用户或组分配角色。
kubectl create -f projectrolebinding.yaml
以下示例projectrolebinding.yaml
文件将添加具有 admin 项目角色的用户。项目角色值为: admin、 view 或 edit。apiVersion: authorization.cci.vmware.com/v1alpha1 kind: ProjectRoleBinding metadata: name: cci:user:vmware.com:<user_alias> namespace: <project_name> roleRef: apiGroup: authorization.cci.vmware.com kind: ProjectRole name: admin subjects: - kind: User name: <[email protected]>
创建区域
可以创建区域,以便可以为该区域分配主管。
kubectl create -f region.yaml
示例
region.yaml
文件。
apiVersion: topology.cci.vmware.com/v1alpha1 kind: Region metadata: name: <region_name> spec: description: <description_of_region>
将主管与区域相关联
要将主管与区域相关联,请找到要更新的主管,然后添加将用于命名空间放置的区域和标签。
- 要查找需要更新的主管,请列出主管。在进行 vCenter 数据收集后,将看到主管资源。
kubectl -n cci-config get supervisors
以下是示例结果。NAME AGE demo-self-service:domain-c50 75d adminannie-vcenter:domain-c8 5d18h scale-test-vc-01:domain-c8 56d
- 更新名为
adminannie-vcenter:domain-c8
的主管。kubectl -n cci-config edit supervisor adminannie-vc:domain-c8
具有metadata.labels
键-值对和区域spec.regionNames
的主管示例。apiVersion: infrastructure.cci.vmware.com/v1alpha1 kind: Supervisor metadata: labels: environment: testing fipsMode: strict name: adminannie-vc:domain-c8 namespace: cci-config uid: ccd3d154-6404-47b7-8786-bb2d49ad9f5d spec: cloudAccountName: adminannie-vc externalId: domain-c8 externalName: wcp-test-dc-cluster regionNames: - eu-west1
创建区域绑定和区域绑定配置
可以创建区域绑定和区域绑定配置,以便项目中的用户可以在区域中的主管上创建主管命名空间。
- 创建区域绑定。
kubectl create -f regionbinding.yaml
示例regionbinding.yaml
文件。apiVersion: topology.cci.vmware.com/v1alpha1 kind: RegionBinding metadata: name: <region_name> namespace: <project_name>
区域绑定不包括任何主管放置设置,因此还必须创建区域绑定配置。
- 为创建的每个区域绑定创建一个区域绑定配置。可以包括匹配表达式,用于对主管进行额外筛选。主管标签用于允许在区域中的一部分主管上放置主管命名空间。
kubectl create -f regionbindingconfig.yaml
在以下示例regionbindingconfig.yaml
文件中,与 testing 环境标签匹配的任何主管都可以托管在该项目和区域中创建的主管命名空间。apiVersion: topology.cci.vmware.com/v1alpha1 kind: RegionBindingConfig metadata: name: <region_name> namespace: <project_name> spec: supervisorSelector: matchExpressions: - key: environment operator: In values: - testing
创建主管命名空间类
要定义具有可选参数的命名空间模板(可以在创建期间使用这些参数自定义命名空间设置),请创建主管命名空间类。然后,可以创建包含匹配表达式的主管命名空间类配置,可以使用这些匹配表达式对用于主管命名空间放置的主管进行额外筛选。
- 创建主管命名空间类。
kubectl create -f supervisornamespaceclass.yaml
在以下示例supervisornamespaceclass.yaml
文件中,parameters
下的可选输入反映了用户在创建命名空间时提供的命名空间类参数。所有输入都必须具有默认值。这些值用于自定义存储类、限制和其他限制。apiVersion: infrastructure.cci.vmware.com/v1alpha1 kind: SupervisorNamespaceClass metadata: name: <class_name> spec: description: supervisor namespace class parameters: - name: podCountLimit type: Integer minimum: 100 maximum: 1000 default: 500
主管命名空间类不包含任何主管放置设置,因此还必须创建主管命名空间类配置。
- 创建主管命名空间类配置。
kubectl create -f supervisornamespaceclassconfig.yaml
在以下示例supervisornamespaceclassconfig.yaml
文件中,supervisorSelector
用于匹配主管标签。apiVersion: infrastructure.cci.vmware.com/v1alpha1 kind: SupervisorNamespaceClassConfig metadata: name: <class_name> spec: storageClasses: - name: management-storage-policy-thin vmClasses: - name: big-vm-class - name: small-vm-class contentSources: - name: global-content-library type: ContentLibrary # Below limits are an EXAMPLE! Setting them may cause unexpected behavior in your namespace # Either set reasonable limits, or remove the below section to get unlimited resources limits: - name: pod_count limit: "((parameters.podCountLimit))" supervisorSelector: matchExpressions: - key: environment operator: In values: - testing
将命名空间类与项目相关联
要允许在项目中使用主管命名空间类创建主管命名空间,请创建主管命名空间类绑定。
kubectl create -f supervisornamespaceclassbinding.yaml
示例
supervisornamespaceclassbinding.yaml
文件。
namespace
指定要与主管命名空间类关联的项目名称。overrideParameters
为可选项。这些参数用于在创建主管命名空间时强制指定参数值,而忽略用户提供的参数值。有效类型为 Integer、String 或 Boolean。
apiVersion: infrastructure.cci.vmware.com/v1alpha1 kind: SupervisorNamespaceClassBinding metadata: name: <class_name> namespace: <project_name> spec: overrideParameters: - name: podCountLimit type: Integer const: 1000