作为 VMware Aria Automation 云管理员,您可以使用命令行界面设置 Cloud Consumption Interface (CCI) 访问并配置监管构造。命令行界面使用 Kubernetes 命令行工具或 kubectl。

有关可以使用 CLI 执行的操作的完整列表,请参见 Cloud Consumption Interface 的 Kubernetes API 参考

注: 此外,还可以使用 UI 执行以下部分步骤。在这些步骤中,提供了使用 UI 执行相关操作的文档链接。

必备条件

  • 确认主管集群已在 vCenter 实例上启用,并且已在 VMware Aria Automation 中注册。
  • 确认您至少是 VMware Aria Automation 中的组织成员,具有 Automation AssemblerAutomation Service Broker 的管理员服务角色。
  • 验证您是否:
    • 已下载 CCI kubectl 插件。
    • 为管理员用户获取了 API 令牌,或定义了用于存储用户密码的变量。
    • 将令牌与 -t 选项结合使用,或将管理员凭据与 -u 选项结合使用以登录到 CCI 服务器,并已将默认上下文更改为 CCI。
  • 确认您已在 Automation Assembler 中添加 vCenter 云帐户。
  • 确认 vCenter 云帐户名称不包含任何空格或大写字母。例如,my-vcenter-cloud-account

有关这些必备条件中任意一个的详细信息,请参见Cloud Consumption Interface 设置和配置

步骤 1:创建项目和项目角色绑定

要对 Automation 用户进行分组并设置对基础架构资源的访问权限,请创建项目和项目角色绑定。

要使用 UI 创建项目和项目角色绑定,请参见如何为我的 Automation Assembler 开发团队添加项目

  1. 创建项目。
    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
    
  2. 创建项目角色绑定,为所创建项目中的用户或组分配角色。
    kubectl create -f projectrolebinding.yaml
    以下示例 projectrolebinding.yaml 文件将添加具有 admin 项目角色的用户。项目角色值为: adminviewedit
    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]>

步骤 2:创建区域

可以创建区域,以便可以为该区域分配主管。

kubectl create -f region.yaml
示例 region.yaml 文件。
apiVersion: topology.cci.vmware.com/v1alpha1
kind: Region
metadata:
  name: <region_name>
spec:
  description: <description_of_region>

步骤 3:将主管与区域相关联

要将主管与区域相关联,请找到要更新的主管,然后添加将用于命名空间放置的区域和标签。

  1. 要查找需要更新的主管,请列出主管。在进行 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
  2. 更新名为 adminannie-vcenter:domain-c8 的主管。
    kubectl -n cci-config edit supervisor adminannie-vc:domain-c8
    以下示例包括 metadata.labels 键值对和区域 spec.regionNames。可以使用 environment: testingfipsMode: strict 标签来帮助制定主管放置决策。
    apiVersion: infrastructure.cci.vmware.com/v1alpha1
    kind: Supervisor
    metadata:
      labels:
        environment: testing
      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:
        - <region_name>
要在 Automation AssemblerAutomation Service Broker UI 中查看主管区域列表,请转到:
  • 基础架构 > 配置 > 主管区域
  • 或者,单击位于基础架构 > 管理 > 项目中某个项目的主管区域选项卡。
请参见 查看管理员构造

步骤 4:创建区域绑定和区域绑定配置

可以创建区域绑定和区域绑定配置,以便项目中的用户可以在区域中的主管上创建主管命名空间。

  1. 创建区域绑定。
    kubectl create -f regionbinding.yaml
    示例 regionbinding.yaml 文件。
    apiVersion: topology.cci.vmware.com/v1alpha1
    kind: RegionBinding
    metadata:
      name: <region_name>
      namespace: <project_name>

    区域绑定不包括任何主管放置设置,因此还必须创建区域绑定配置。

  2. 为创建的每个区域绑定创建一个区域绑定配置。可以包括匹配表达式,用于对主管进行额外筛选。主管标签用于允许在区域中的一部分主管上放置主管命名空间。
    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

步骤 5:创建主管命名空间类并添加主管命名空间类配置

要定义具有可选参数的命名空间模板(可以在创建期间使用这些参数自定义命名空间设置),请创建主管命名空间类。然后,可以创建包含匹配表达式的主管命名空间类配置,可以使用这些匹配表达式对用于主管命名空间放置的主管进行额外筛选。

要使用 UI 创建具有主管命名空间类配置的主管命名空间类,请参见如何使用 UI 创建并配置命名空间类、命名空间类配置和命名空间类绑定

  1. 创建主管命名空间类。
    kubectl create -f supervisornamespaceclass.yaml
    在以下示例 supervisornamespaceclass.yaml 文件中, parameters 下的可选输入反映了用户在创建命名空间时提供的命名空间类参数。所有输入都必须具有默认值。这些值用于自定义存储类、限制和其他限制。 name 值必须全部小写且不含空格。
    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

    主管命名空间类不包含任何主管放置设置,因此还必须创建主管命名空间类配置。

  2. 创建主管命名空间类配置。
    kubectl create -f supervisornamespaceclassconfig.yaml
    YAML 配置了您希望主管命名空间继承的所有主管命名空间配置,可以包括:
    • 内容库,其中包含了在置备虚拟机时虚拟机服务使用的映像。
    • 虚拟机类,如“T 恤调整大小”。
    • CPU、内存和存储强制实施资源限制。
    • 要使用的存储类。
    • SupervisorSelector 可确定要用于创建主管命名空间的主管。
    在以下示例 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
    

步骤 6:将命名空间类与项目相关联

要允许在项目中使用主管命名空间类创建主管命名空间,请创建主管命名空间类绑定。

要使用 UI 将命名空间类与项目关联,请参见如何使用 UI 创建并配置命名空间类、命名空间类配置和命名空间类绑定

kubectl create -f supervisornamespaceclassbinding.yaml
示例 supervisornamespaceclassbinding.yaml 文件。
  • namespace 指定要与主管命名空间类关联的项目名称。
  • overrideParameters 为可选项。这些参数用于在创建主管命名空间时强制指定参数值,而忽略用户提供的参数值。有效类型为 IntegerStringBooleanname 值必须全部小写且不含空格。
apiVersion: infrastructure.cci.vmware.com/v1alpha1
kind: SupervisorNamespaceClassBinding
metadata:
  name: <class_name>
  namespace: <project_name>
spec:
  overrideParameters:
    - name: podcountlimit
      type: Integer
      const: 1000