可以添加 Cloud Consumption Interface (CCI) 元素,以在 VMware Aria Automation 模板中使用 CCI 服务,这样您的用户可以在主管命名空间中使用虚拟机服务和 Tanzu Kubernetes Grid Service 请求基于 Kubernetes 的工作负载。
要查看 CCI 元素,请展开云模板中资源库内的 Cloud Consumption Interface 部分,或在搜索资源类型字段中键入 cci。
下表显示了模板中可供用户拖放和配置的三种类型的 CCI 资源。
以下示例展示了 CCI 资源如何在云模板的 YAML 代码中呈现。每个示例已经过修剪,仅显示重要行。
主管命名空间资源
|
创建新的主管命名空间,该主管命名空间可为基于 Kubernetes 的工作区提供资源限制、用户访问和可用的主管服务,以便用户可以根据应用程序需求置备虚拟机和 TKG 资源。 |
主管资源
|
根据传递给正在配置的主管资源的 Kubernetes 清单,在主管命名空间中创建任何受支持的主管 Kubernetes 资源,例如 virtualmachines 、virtualmachineservices 、tanzukubernetesclusters 、persistentvolumeclaims 、secrets 等。 |
TKG 资源
|
在 TKG 集群中创建任何受支持的 Kubernetes 资源。 |
主管命名空间资源示例
CCI.Supervisor.Namespace 表示基于主管 Kubernetes 的工作区,可在其中为应用程序创建用户管理的 vSphere 主管 IaaS 资源。
此示例定义了一个名为 cciNamespace 的 CCI 主管命名空间资源,以置备一个名为 demo 的主管命名空间。
为确保在目标主管上置备命名空间,必须使用项目定义的
className 和
regionName 配置主管命名空间。
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 对象来配置主管资源的清单属性。
此示例通过提供 Kubernetes 清单创建了一个 TKG 集群,该清单指定了网络、拓扑、控制平面大小和 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 清单定义了一个虚拟机,该清单定义了虚拟机配置并包含基于等待的条件。
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
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 对象的类型。
... 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 资源都支持等待属性,通过该属性,将等待资源内满足特定条件或字段值后才认为资源创建完成。等待属性类型包括:
- 字段等待:字段列表,其中每个字段都可以配置属性路径和值。必须与该值匹配后,才会认为资源已完成。
- 条件等待:指示资源创建成功或失败的条件列表。
... wait: fields: - path: status.loadBalancer.ingress[0].ip value: "*" ...