Puede agregar elementos de la interfaz de consumo de nube (CCI) para utilizar el servicio CCI dentro de una plantilla de VMware Aria Automation para que los usuarios puedan solicitar cargas de trabajo basadas en Kubernetes utilizando el servicio de máquina virtual y Tanzu Kubernetes Grid Service dentro de un espacio de nombres de supervisor.

Para ver los elementos CCI, amplíe la sección Interfaz de consumo de nube dentro de la biblioteca de recursos de su plantilla de nube o escriba cci en el campo Buscar tipos de recursos.

Localice los elementos CCI en su plantilla de nube

La siguiente tabla muestra los tres tipos de recursos de CCI que están disponibles en la plantilla.
Recurso Espacio de nombres de supervisor

CCI.Supervisor.Namespace

Cree un nuevo espacio de nombres de supervisor, que proporciona un espacio de trabajo basado en Kubernetes con límites de recursos, acceso de usuarios y servicios de supervisor disponibles, para que los usuarios puedan aprovisionar recursos de VM y TKG en función de las necesidades de las aplicaciones.
Recurso Supervisor

CCI.Supervisor.Resource

Cree cualquier recurso Supervisor de Kubernetes compatible dentro de un espacio de nombres de supervisor, como virtualmachines, virtualmachineservices, tanzukubernetesclusters, persistentvolumeclaims, secrets, etc., en función del manifiesto Kubernetes pasado al recurso Supervisor que se esté configurando.
Recurso TKG

CCI.TKG.Resource

Cree cualquier recurso Kubernetes compatible dentro de un clúster TKG.
Nota: Antes de poder agregar elementos CCI a su plantilla de nube, primero un administrador de VMware Aria Automation debe configurar la CCI. Consulte Instalación y configuración de la interfaz de consumo de nube.
Para agregar elementos a la plantilla, arrástrelos y suéltelos en el lienzo. Si los recursos tienen una relación basada en contexto, puede colocarlos en una configuración anidada con las siguientes reglas:
  • CCI.Supervisor.Namespace Soltar directamente en el lienzo.
  • CCI.Supervisor.Resource Soltar en un recurso de espacio de nombres de supervisor o directamente en el lienzo.
  • CCI.TKG.Resource Soltar en otro recurso de TKG, un recurso de supervisor o directamente en el lienzo. Los recursos de CCI están limitados a cinco niveles de anidamiento.

En la vista de lienzo que aparece a continuación, verá que se arrastra un recurso de TKG a un recurso de supervisor denominado cciTKGCluster. Un espacio de nombres de supervisor que contiene un recurso de supervisor que contiene un recurso de TKG muestra tres niveles de anidamiento.

Arrastre y suelte un recurso de CCI anidado en la plantilla

Los siguientes ejemplos muestran cómo aparecen los recursos de CCI, como cciNamespace y cciTKGCluster, en el código YAML de su plantilla de nube. Cada ejemplo está resumido para mostrar únicamente las líneas importantes.

Ejemplo de recurso Espacio de nombres de supervisor

CCI.Supervisor.Namespace representa el espacio de trabajo basado en Supervisor de Kubernetes en el que se crean los recursos de IaaS de supervisor de vSphere gestionados por el usuario para la aplicación.

Este ejemplo define un recurso de espacio de nombres de supervisor de CCI denominado cciNamespace para aprovisionar un espacio de nombres de supervisor denominado demo.

Nota: Al arrastrar y soltar un recurso de espacio de nombres de supervisor CCI en el lienzo, debe introducir un valor para la propiedad name en el código YAML.
Para asegurarse de que el espacio de nombres se aprovisiona en un Supervisor objetivo, debe configurar el espacio de nombres de supervisor con className y regionName definidos para el proyecto.
formatVersion: 1
inputs: {}
resources:
  cciNamespace:
    type: CCI.Supervisor.Namespace
    properties:
      name: demo
      className: default
      regionName: dev-us-west

Ejemplo de recurso Supervisor

Se usa CCI.Supervisor.Resource para pasar el manifiesto de Kubernetes para los objetos Kubernetes admitidos de forma que se ejecuten en un contexto de espacio de nombres de supervisor.

  • Para aprovisionar el recurso Supervisor dentro de un espacio de nombres de supervisor concreto, configure la propiedad de contexto del recurso Supervisor asignándola al ID del espacio de nombres de supervisor mediante una expresión de enlace de plantilla, por ejemplo context: ${resource.cciNamespace.id}.
  • Para especificar los objetos que desea aprovisionar, configure la propiedad de manifiesto del recurso Supervisor pasando el manifiesto de Kubernetes al objeto Kubernetes que está creando.
En este ejemplo, se crea un recurso de supervisor denominado cciTKGCluster en el espacio de nombres de supervisor cciNamespace proporcionando un manifiesto de Kubernetes para un clúster de TKG que especifica la red, la topología, el tamaño del plano de control y el recuento de nodos de trabajo, entre otras opciones.
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}
En este ejemplo, se define un recurso de supervisor denominado vm en el espacio de nombres de supervisor cciNamespace proporcionando un manifiesto de Kubernetes que define la configuración de la máquina virtual e incluye una condición basada en espera.
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

En el lienzo, el espacio de nombres de supervisor cciNamespace contiene dos recursos de supervisor: cciTKGCluster y vm.

Dos recursos de supervisor agregados dentro de un espacio de nombres de supervisor

Ejemplo de recurso TKG

Utilice CCI.TKG.Resource para crear recursos Kubernetes compatibles dentro de un clúster TKG o dentro de un espacio de nombres que se ejecute en el clúster TKG.
  • Para vincular un recurso TKG a un clúster TKG, debe asignar el ID del recurso de clúster TKG supervisor con la propiedad context, por ejemplo, context: ${resource.cciTKGCluster.id}.
  • Si está creando un espacio de nombres dentro de un recurso TKG llamado cciTKGNamespace, por ejemplo, puede vincular un recurso TKG al espacio de nombres insertando el nombre del recurso TKG en la propiedad context o context: ${resource.cciTKGNamespace.id}.
  • El manifiesto de Kubernetes que se pasa dentro de las propiedades del recurso especifica el tipo de objeto Kubernetes que se debe aprovisionar.
Este ejemplo muestra un secreto como recurso TKG vinculado a un clúster TKG denominado cciTKGCluster.
...
  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)}
...

En el lienzo, el recurso de TKG tkgSecret aparece anidado dentro del recurso de TKG cciTKGCluster.

Recurso de TKG tkgSecret dentro del recurso de TKG cciTKGCluster

Agregar una propiedad de espera

Tanto el recurso supervisor como el recurso TKG admiten una propiedad de espera que esperará a que se cumplan condiciones específicas o valores de campo dentro de un recurso, antes de considerar que se ha completado la creación del recurso. Los tipos de propiedad de espera son:
  • Campo Wait: Lista de campos donde cada campo puede configurarse con una ruta de propiedad y un valor. El valor debe ser verificado antes de que el recurso se considere completado.
  • Condición Wait: Lista de condiciones que indican el éxito o el fracaso de la creación del recurso.
Este ejemplo muestra una condición de espera agregada a un recurso Supervisor. Esa condición debe cumplirse antes de que el recurso Supervisor pueda marcarse como completado.
...
      wait:
        conditions:
          - type: VirtualMachinePrereqReady
            status: "False"
            reason: VirtualMachineImageNotReady
            indicatesFailure: true
...

Para agregar parámetros opcionales mediante la interfaz de usuario, haga clic en la bombilla junto al nombre del recurso en el panel Código.Haga clic en la bombilla en el panel Código para añadir parámetros opcionales