È possibile aggiungere elementi di CCI (Cloud Consumption Interface) per utilizzare il servizio CCI in un modello di VMware Aria Automation in modo che gli utenti possano richiedere carichi di lavoro basati su Kubernetes utilizzando il servizio Macchina virtuale e il servizio Tanzu Kubernetes Grid in uno spazio dei nomi supervisore.

Per visualizzare gli elementi di CCI, espandere la sezione Cloud Consumption Interface all'interno della libreria di risorse nel modello cloud o digitare cci nel campo Cerca tipi di risorse.

Individuare gli elementi di CCI nel modello cloud

La tabella seguente mostra i tre tipi di risorse CCI disponibili nel modello.
Risorsa spazio dei nomi supervisore

CCI.Supervisor.Namespace

Creare un nuovo spazio dei nomi supervisore, che fornisca a un'area di lavoro basata su Kubernetes limiti delle risorse, accesso utente e servizi supervisore disponibili, in modo che gli utenti possano eseguire il provisioning delle risorse della macchina virtuale e di TKG in base alle esigenze dell'applicazione.
Risorsa supervisore

CCI.Supervisor.Resource

Creare una risorsa Kubernetes supervisore supportata qualsiasi in uno spazio dei nomi supervisore, ad esempio virtualmachines, virtualmachineservices, tanzukubernetesclusters, persistentvolumeclaims, secrets e così via in base al manifesto Kubernetes passato alla risorsa supervisore in fase di configurazione.
Risorsa TKG

CCI.TKG.Resource

Creare una risorsa Kubernetes supportata qualsiasi in un cluster TKG.
Nota: Prima di poter aggiungere elementi CCI al modello cloud, è innanzitutto necessario che un amministratore di VMware Aria Automation configuri CCI. Vedere Impostazione e configurazione di Cloud Consumption Interface.
Per aggiungere elementi al modello, trascinarli nella tela. Se le risorse hanno una relazione basata sul contesto, è possibile trascinarle in una configurazione nidificata con le regole seguenti:
  • CCI.Supervisor.Namespace: trascinarla direttamente nella tela.
  • CCI.Supervisor.Resource: trascinarla in una risorsa spazio dei nomi supervisore o direttamente nella tela.
  • CCI.TKG.Resource: trascinarla in un'altra risorsa TKG, in una risorsa supervisore o direttamente nella tela. Le risorse CCI sono limitate a cinque livelli di nidificazione.

Nella vista della tela seguente, è presente una risorsa TKG trascinata in una risorsa supervisore denominata cciTKGCluster. Uno spazio dei nomi supervisore che contiene una risorsa supervisore che contiene una risorsa TKG include tre livelli di nidificazione.

Trascinare una risorsa CCI nidificata nel modello

Gli esempi seguenti illustrano in che modo le risorse di CCI, ad esempio cciNamespace e cciTKGCluster, vengono visualizzate nel codice YAML del modello cloud. Ogni esempio è stato tagliato in modo da mostrare solo le righe importanti.

Esempio di risorsa spazio dei nomi supervisore

CCI.Supervisor.Namespace rappresenta l'area di lavoro supervisore basata su Kubernetes in cui vengono create le risorse IaaS supervisore vSphere gestite dall'utente per l'applicazione.

In questo esempio viene definita una risorsa spazio dei nomi supervisore di CCI denominata cciNamespace per eseguire il provisioning di uno spazio dei nomi supervisore denominato demo.

Nota: Quando si trascina una risorsa spazio dei nomi supervisore CCI nella tela, è necessario immettere un valore per la proprietà name nel codice YAML.
Per assicurarsi che venga eseguito il provisioning dello spazio dei nomi in un supervisore di destinazione, è necessario configurare lo spazio dei nomi supervisore con className e regionName definiti dal progetto.
formatVersion: 1
inputs: {}
resources:
  cciNamespace:
    type: CCI.Supervisor.Namespace
    properties:
      name: demo
      className: default
      regionName: dev-us-west

Esempio di risorsa supervisore

Utilizzare CCI.Supervisor.Resource per passare il manifesto di Kubernetes per gli oggetti Kubernetes supportati per l'esecuzione nel contesto dello spazio dei nomi supervisore.

  • Per eseguire il provisioning della risorsa supervisore all'interno di uno spazio dei nomi supervisore specifico, configurare la proprietà del contesto della risorsa supervisore mappandola all'ID dello spazio dei nomi supervisore tramite un'espressione di binding del modello, ad esempio context: ${resource.cciNamespace.id}.
  • Per specificare gli oggetti di cui eseguire il provisioning, configurare la proprietà manifesto della risorsa supervisore passando il manifesto di Kubernetes all'oggetto Kubernetes che si sta creando.
In questo esempio viene creata una risorsa supervisore denominata cciTKGCluster nello spazio dei nomi supervisore cciNamespace fornendo un manifesto Kubernetes per un cluster TKG che specifica la rete, la topologia, le dimensioni del piano di controllo e il numero di nodi worker tra le altre impostazioni.
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}
In questo esempio viene definita una risorsa supervisore denominata vm nello spazio dei nomi supervisore cciNamespace fornendo un manifesto Kubernetes che definisce la configurazione della macchina virtuale e include una condizione basata su wait.
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

Nella tela, lo spazio dei nomi supervisore cciNamespace contiene due risorse supervisore, ovvero cciTKGCluster e vm.

Due risorse supervisore aggiunte in uno spazio dei nomi supervisore

Esempio di risorsa TKG

Utilizzare CCI.TKG.Resource per creare risorse di Kubernetes supportate in un cluster TKG o in uno spazio dei nomi in esecuzione nel cluster TKG.
  • Per associare una risorsa TKG a un cluster TKG, mappare l'ID della risorsa cluster TKG supervisore alla proprietà del contesto, ad esempio context: ${resource.cciTKGCluster.id}.
  • Se ad esempio si crea uno spazio dei nomi all'interno di una risorsa TKG denominato cciTKGNamespace, è possibile associare una risorsa TKG allo spazio dei nomi inserendo il nome della risorsa TKG nella proprietà del contesto o context: ${resource.cciTKGNamespace.id}.
  • Il manifesto di Kubernetes passato all'interno delle proprietà della risorsa specifica il tipo dell'oggetto Kubernetes di cui eseguire il provisioning.
In questo esempio viene mostrato un segreto come risorsa TKG associata a un cluster TKG denominato 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)}
...

Nella tela, la risorsa TKG tkgSecret è nidificata all'interno della risorsa TKG cciTKGCluster.

Risorsa TKG tkgSecret all'interno della risorsa TKG cciTKGCluster

Aggiunta di una proprietà di attesa

Sia la risorsa supervisore sia la risorsa TKG supportano una proprietà di attesa che attenderà condizioni o valori del campo specifici all'interno di una risorsa prima di decidere di completare la creazione della risorsa. I tipi di proprietà di attesa sono:
  • Attesa del campo: elenco di campi in cui ogni campo può essere configurato con un percorso di proprietà e un valore. Il valore deve corrispondere affinché la risorsa venga considerata completata.
  • Attesa della condizione: elenco di condizioni che indicano l'esito positivo o negativo della creazione delle risorse.
In questo esempio viene illustrata una condizione di attesa aggiunta a una risorsa supervisore. Affinché la risorsa supervisore possa essere contrassegnata come completata, la condizione deve essere soddisfatta.
...
      wait:
        conditions:
          - type: VirtualMachinePrereqReady
            status: "False"
            reason: VirtualMachineImageNotReady
            indicatesFailure: true
...

Per aggiungere parametri facoltativi utilizzando l'interfaccia utente, fare clic sulla lampadina accanto al nome della risorsa nel pannello Codice.Fare clic sulla lampadina nel pannello Codice per aggiungere parametri facoltativi