U kunt Cloud Consumption Interface-elementen (CCI) toevoegen om de CCI-service te gebruiken in een VMware Aria Automation-sjabloon, zodat uw gebruikers Kubernetes-gebaseerde workloads kunnen aanvragen via de Virtual Machine-service en de Tanzu Kubernetes Grid Service in een supervisornaamruimte.

Als u de CCI-elementen wilt weergeven, vouwt u het gedeelte Cloud Consumption Interface in de resourcebibliotheek in uw cloudsjabloon uit of typt u cci in het veld Cloud Consumption Interface.

Zoek naar de CCI-elementen in uw cloudsjabloon

De onderstaande tabel toont de drie typen CCI-resources die gebruikers kunnen slepen, neerzetten en configureren in de sjabloon.
Resource voor supervisornaamruimte

CCI.Supervisor.Namespace

Maak een nieuwe supervisornaamruimte die een Kubernetes-gebaseerde werkplek biedt met resourcelimieten, gebruikerstoegang en beschikbare supervisorservices, zodat gebruikers VM- en TKG-resources kunnen inrichten op basis van de applicatiebehoeften.
Supervisorresource

CCI.Supervisor.Resource

Maak een ondersteunde Kubernetes-supervisorresource in een supervisornaamruimte, zoals virtualmachines, virtualmachineservices, tanzukubernetesclusters, persistentvolumeclaims, secrets, enzovoort, afhankelijk van het Kubernetes-manifest dat is doorgegeven aan de supervisorresource die wordt geconfigureerd.
TKG-resource

CCI.TKG.Resource

Maak een ondersteunde Kubernetes-resource in een TKG-cluster.
Opmerking: Voordat u CCI-elementen aan uw cloudsjabloon kunt toevoegen, moet een VMware Aria Automation-beheerder eerst CCI instellen. Zie Installatie en configuratie van de Cloud Consumption-interface.
In de volgende voorbeelden ziet u hoe de CCI-resources worden weergegeven in de YAML-code van uw cloudsjabloon. Elk voorbeeld wordt ingekort om alleen de belangrijke regels weer te geven.

Voorbeeld van supervisornaamruimteresource

CCI.Supervisor.Namespace vertegenwoordigt de op Kubernetes gebaseerde supervisorwerkplek waar de door de gebruiker beheerde vSphere IaaS-supervisorresources voor de applicatie worden gemaakt.

In dit voorbeeld wordt een CCI-supervisornaamruimteresource met de naam cciNamespace gedefinieerd om een supervisornaamruimte met de naam demo in te richten.

Om ervoor te zorgen dat de naamruimte is ingericht op een getargete supervisor, moet u de supervisornaamruimte configureren met een door het project gedefinieerde className en regionName.
formatVersion: 1
inputs: {}
resources:
  cciNamespace:
    type: CCI.Supervisor.Namespace
    properties:
      name: demo
      className: default
      regionName: dev-us-west

Voorbeeld van supervisorresource

U gebruikt CCI.Supervisor.Resource om het Kubernetes-manifest door te geven voor Kubernetes-objecten die worden ondersteund om te worden uitgevoerd binnen een supervisornaamruimtecontext.

  • Als u de supervisorresource binnen een bepaalde supervisornaamruimte wilt inrichten, configureert u de contexteigenschap van de supervisorresource door deze toe te voegen aan de naamruimte-ID van de supervisor met behulp van een bind-expressie voor sjablonen, bijvoorbeeld context: ${resource.cciNamespace.id}.
  • Als u de in te richten objecten wilt opgeven, configureert u de manifesteigenschap van de supervisorresource door het Kubernetes-manifest door te geven aan het Kubernetes-object dat u maakt.
Dit voorbeeld maakt een TKG-cluster door een Kubernetes-manifest op te geven waarin onder andere het netwerk, de topologie, de grootte van het regelvlak en het aantal werkerknooppunten worden opgegeven.
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 dit voorbeeld wordt een virtuele machine gedefinieerd door een Kubernetes-manifest op te geven dat de VM-configuratie definieert en een op wachten gebaseerde voorwaarde bevat.
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

Voorbeeld van TKG-resource

U gebruikt CCI.TKG. Resource om ondersteunde Kubernetes-resources te maken in een TKG-cluster of in een naamruimte die op het TKG-cluster wordt uitgevoerd.
  • Als u een TKG-resource wilt binden aan een TKG-cluster, wijst u de id van de TKG-clusterresource van de supervisor toe met de contexteigenschap, bijvoorbeeld context: ${resource.cciTKGCluster.id}.
  • Als u een naamruimte in een TKG-resource maakt met de naam cciTKGNamespace kunt u bijvoorbeeld een TKG-resource binden aan de naamruimte door de naam van de TKG-resource in te voegen in de contexteigenschap of context: ${resource.cciTKGNamespace.id}.
  • Het Kubernetes-manifest dat wordt doorgegeven binnen de resource-eigenschappen, geeft het type van het Kubernetes-object op dat moet worden ingericht.
Dit voorbeeld toont een geheim als een TKG-resource gebonden aan een TKG-cluster met de naam 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)}
...

Een eigenschap voor wachten toevoegen

Zowel de supervisorresource als de TKG-resource ondersteunen een eigenschap die wacht op specifieke voorwaarden of veldwaarden in een resource, voordat het maken van de resource wordt beschouwd als voltooid. Typen eigenschappen voor wachten zijn:
  • Wachten voor veld: lijst met velden waar elk veld kan worden geconfigureerd met een eigenschapspad en een waarde. De waarde moet overeenkomen voordat de bron als voltooid wordt beschouwd.
  • Wachten voor voorwaarde: lijst met voorwaarden die aangeven dat het maken van de resource is gelukt of mislukt.
In dit voorbeeld ziet u een wachtvoorwaarde die is toegevoegd aan een supervisorresource. Aan de voorwaarde moet worden voldaan voordat de supervisorresource als voltooid kan worden gemarkeerd.
...
    wait:
      fields:
        - path: status.loadBalancer.ingress[0].ip
          value: "*"
...