可以添加 Cloud Consumption Interface (CCI) 元素,以在 VMware Aria Automation 模板中使用 CCI 服务,这样您的用户可以在主管命名空间中使用虚拟机服务和 Tanzu Kubernetes Grid Service 请求基于 Kubernetes 的工作负载。

要查看 CCI 元素,请展开云模板中资源库内的 Cloud Consumption Interface 部分,或在搜索资源类型字段中键入 cci

在云模板中找到 CCI 元素

下表显示了模板中可用的三种 CCI 资源。
主管命名空间资源

CCI.Supervisor.Namespace

创建新的主管命名空间,该主管命名空间可为基于 Kubernetes 的工作区提供资源限制、用户访问和可用的主管服务,以便用户可以根据应用程序需求置备虚拟机和 TKG 资源。
主管资源

CCI.Supervisor.Resource

根据传递给正在配置的主管资源的 Kubernetes 清单,在主管命名空间中创建任何受支持的主管 Kubernetes 资源,例如 virtualmachinesvirtualmachineservicestanzukubernetesclusterspersistentvolumeclaimssecrets 等。
TKG 资源

CCI.TKG.Resource

在 TKG 集群中创建任何受支持的 Kubernetes 资源。
注: 在将 CCI 元素添加到云模板之前, VMware Aria Automation 管理员必须先设置 CCI。请参见 Cloud Consumption Interface 设置和配置
要将元素添加到模板,请将其拖放到画布上。如果您的资源具有上下文驱动关系,则可以使用以下规则将其放置在嵌套配置中:
  • CCI.Supervisor.Namespace 直接放置在画布上。
  • CCI.Supervisor.Resource 放置在主管命名空间资源上或直接放置在画布上。
  • CCI.TKG.Resource 放置在另一个 TKG 资源、主管资源上或直接放置在画布上。CCI 资源最多支持五级嵌套。

在下面的画布视图中,您会看到某个 TKG 资源拖到名为 cciTKGCluster 的主管资源中。主管命名空间包含主管资源,该主管资源包含 TKG 资源,这显示了三级嵌套。

将嵌套的 CCI 资源拖放到模板中

以下示例展示了 CCI 资源(如 cciNamespacecciTKGCluster)如何在云模板的 YAML 代码中呈现。每个示例已经过修剪,仅显示重要行。

主管命名空间资源示例

CCI.Supervisor.Namespace 表示基于主管 Kubernetes 的工作区,可在其中为应用程序创建用户管理的 vSphere 主管 IaaS 资源。

此示例定义了一个名为 cciNamespace 的 CCI 主管命名空间资源,以置备一个名为 demo 的主管命名空间。

注: 将 CCI 主管命名空间资源拖放到画布上时,必须在 YAML 代码中输入 name 属性的值。
为确保在目标主管上置备命名空间,必须使用项目定义的 classNameregionName 配置主管命名空间。
formatVersion: 1
inputs: {}
resources:
  cciNamespace:
    type: CCI.Supervisor.Namespace
    properties:
      name: demo
      className: default
      regionName: dev-us-west

主管资源示例

您使用 CCI.Supervisor.Resource 传递支持在主管命名空间上下文中运行的 Kubernetes 对象的 Kubernetes 清单。

  • 要在特定的主管命名空间中置备主管资源,可以通过使用模板绑定表达式将主管资源上下文属性映射到主管命名空间 ID 来配置该属性,例如,context: ${resource.cciNamespace.id}
  • 要指定需要置备的对象,可以通过将 Kubernetes 清单传递给要创建的 Kubernetes 对象来配置主管资源的清单属性。
以下示例通过为 TKG 集群提供 Kubernetes 清单,在主管命名空间 cciNamespace 中创建了名为 cciTKGCluster 的主管资源,该清单指定了网络、拓扑、控制平面大小以及 Worker 节点等设置。
formatVersion: 1
inputs: {}
resources:
  cciTKGCluster:
    type: CCI.Supervisor.Resource
    properties:
      context: ${resource.cciNamespace.id}
      manifest:
        apiVersion: cluster.x-k8s.io/v1beta1
        kind: Cluster
        metadata:
          name: ${input.tkg_Name}
          labels:
            tkg-cluster-selector: ${input.tkg_Name}
        spec:
          clusterNetwork:
            cni:
              name: antrea
            pods:
              cidrBlocks:
                - 192.168.156.0/20
            services:
              cidrBlocks:
                - 10.96.0.0/12
            serviceDomain: cluster.local
          topology:
            class: tanzukubernetescluster
            version: v1.24.9---vmware.1-tkg.4
            variables:
              - name: storageClasses
                value:
                  - tmm-kubernetes-storage-policy
              - name: defaultStorageClass
                value: tmm-kubernetes-storage-policy
              - name: vmClass
                value: ${input.controlPlaneVmClassName}
              - name: storageClass
                value: tmm-kubernetes-storage-policy
            controlPlane:
              replicas: ${input.controlPlaneCount}
              metadata:
                annotations:
                  run.tanzu.vmware.com/resolve-os-image: os-name=photon
            workers:
              machineDeployments:
                - class: node-pool
                  name: ${input.tkg_Name}-nodepool
                  replicas: ${input.workerCount}
                  metadata:
                    annotations:
                      run.tanzu.vmware.com/resolve-os-image: os-name=photon
                  variables:
                    overrides:
                      - name: vmClass
                        value: ${input.workerVmClassName}
以下示例通过提供 Kubernetes 清单,在主管命名空间 cciNamespace 中定义了名为 vm 的主管资源,该清单定义了虚拟机配置并包含基于等待的条件。
formatVersion: 1
inputs: {}
resources:
  vm:
    type: CCI.Supervisor.Resource
    properties:
      context: ${resource.cciNamespace.id}
      manifest:
        apiVersion: vmoperator.vmware.com/v1alpha1
        kind: VirtualMachine
        metadata:
          finalizers:
            - virtualmachine.vmoperator.vmware.com
          generation: 1
          labels:
            vm-selector: vm-2rfx
          name: vm-2rfx
        spec:
          className: best-effort-xsmall
          imageName: vmi-c3d184be88e1af1cd
          networkInterfaces:
            - networkType: nsx-t
          powerOffMode: hard
          powerState: poweredOn
          restartMode: hard
          storageClass: vsan-default-storage-policy
          suspendMode: hard
      wait:
        conditions:
          - type: VirtualMachinePrereqReady
            status: "False"
            reason: VirtualMachineImageNotReady
            indicatesFailure: true

在画布上,主管命名空间 cciNamespace 包含两个主管资源,cciTKGClustervm

主管命名空间中添加了两个主管资源

TKG 资源示例

您使用 CCI.TKG.Resource 在 TKG 集群内或 TKG 集群上运行的命名空间内创建支持的 Kubernetes 资源。
  • 要将 TKG 资源绑定到 TKG 集群,可以将主管 TKG 集群资源的 ID 与上下文属性进行映射,例如,context: ${resource.cciTKGCluster.id}
  • 例如,如果要在名为 cciTKGNamespace 的 TKG 资源中创建命名空间,可以通过在上下文属性中插入 TKG 资源的名称(即 context: ${resource.cciTKGNamespace.id}),将 TKG 资源绑定到命名空间。
  • 在资源属性中传递的 Kubernetes 清单指定了要置备的 Kubernetes 对象的类型。
此示例展示了将密钥作为 TKG 资源绑定到名为 cciTKGCluster 的 TKG 集群。
...
  tkgSecret:
    type: CCI.TKG.Resource
    properties:
      context: ${resource.cciTKGCluster.id}
      manifest:
        apiVersion: v1
        kind: Secret
        metadata:
          name: nvaie-apikey
        type: Opaque
        data:
          username: KM9hdCCodG9rZW4=
          password: ${base64_encode(input.password)}
...

在画布上,TKG 资源 tkgSecret 显示嵌套在 TKG 资源 cciTKGCluster 内。

TKG 资源 tkgSecret 嵌套在 TKG 资源 cciTKGCluster 内

添加等待属性

主管资源和 TKG 资源都支持等待属性,通过该属性,将等待资源内满足特定条件或字段值后才认为资源创建完成。等待属性类型包括:
  • 字段等待:字段列表,其中每个字段都可以配置属性路径和值。必须与该值匹配后,才会认为资源已完成。
  • 条件等待:指示资源创建成功或失败的条件列表。
此示例展示了在主管资源中添加了等待条件。必须满足该条件,主管资源才会标记为已完成。
...
      wait:
        conditions:
          - type: VirtualMachinePrereqReady
            status: "False"
            reason: VirtualMachineImageNotReady
            indicatesFailure: true
...

要使用 UI 添加可选参数,请在“代码”面板中单击资源名称旁边的灯泡。在“代码”面板中单击灯泡以添加可选参数