Dopo che un amministratore di vSphere assegna le librerie di contenuti a uno spazio dei nomi o a un cluster, gli utenti di DevOps possono accedere alla libreria e utilizzarne gli elementi per distribuire le macchine virtuali dalle immagini di macchine virtuali nella libreria. Se la libreria assegnata allo spazio dei nomi è scrivibile, gli utenti di DevOps con autorizzazioni Modifica possono anche gestire gli elementi della libreria e pubblicare nuove immagini di macchine virtuali.

Prerequisiti

In qualità di utente DevOps, assicurarsi di soddisfare i requisiti seguenti:

Procedura

  1. Gestire gli elementi della libreria.
    1. Verificare che le librerie di contenuti siano disponibili nello spazio dei nomi.
      Nota: Se si desidera gestire gli elementi della libreria nella libreria o pubblicare immagini della macchina virtuale nella libreria, assicurarsi che lo stato scrivibile sia true.
      kubectl get cl -n <namespace-name>
         NAME                   VSPHERENAME   TYPE    WRITABLE   STORAGETYPE   AGE
         cl-b585915ddxxxxxxxx   Test-ns-cl-1  Local   true       Datastore     3m9s
         cl-535d4b3dnxxxyyyyy   Test-ns-cl-1  Local   false      Datastore     3m9s
    2. Controllare il contenuto della libreria.
      kubectl get clitem -n <namespace-name>
       NAME                 VSPHERENAME     CONTENTLIBRAYREF        TYPE   READY   AGE
       clitem-d2wnmq.....   item 1          cl-b585915ddxxxxxxxx    Ovf    True    26c
       clitem-55088d.....   item 2          cl-b585915ddxxxxxxxx    Ovf    True    26c
       clitem-xyzxyz.....   xyzxyz          cl-535d4b3dnxxxyyyyy    Ovf    True    26c
    3. Eliminare un'immagine dalla libreria di contenuti.
      Nota: È possibile eliminare un elemento solo dalla libreria scrivibile e se si dispone delle autorizzazioni Edit o autorizzazioni di un livello superiore.
      Dopo aver eliminato l'elemento clitem, viene eliminata anche la risorsa vmi corrispondente.
      kubectl delete clitem clitem-55088d.....
       NAME                 VSPHERENAME     CONTENTLIBRAYREF        TYPE   READY   AGE
       clitem-d2wnmq.....   item 1          cl-b585915ddxxxxxxxx    Ovf    True    26c
       clitem-xyzxyz.....   xyzxyz          cl-535d4b3dnxxxyyyyy    Ovf    True    26c
    4. Ottenere dettagli immagine.
      kubectl get vmi -n <namespace-name>
       NAME              PROVIDER-NAME      CONTENT-LIBRAY-NAME    IMAGE-NAME VERSION   OS-TYPE        FORMAT   AGE
       vmi-d2wnmq.....   clitem-d2wnmq..... cl-b585915ddxxxxxxxx   item 1               ubuntu64guest  ovf      26c
       vmi-55088d.....   clitem-55088d..... cl-b585915ddxxxxxxxx   item 2               otherguest     ovf      26c
  2. Pubblicare un'immagine nella libreria di contenuti.
    1. Creare un file YAML per distribuire una macchina virtuale di origine.
      Assicurarsi che imageName nella specifica VirtualMachine faccia riferimento a una delle immagini della macchina virtuale dalla libreria di contenuti.
      Ad esempio source-vm.yaml.
      apiVersion: vmoperator.vmware.com/v1alpha1
      kind: VirtualMachine
      metadata:
        name: source-vm
        namespace: test-publish-ns
      spec:
        className: best-effort-small
        storageClass: wcpglobal-storage-profile
        imageName: vmi-d2wnmq.....
        powerState: poweredOn
        vmMetadata:
          transport: CloudInit
    2. Ottenere informazioni sulla macchina virtuale distribuita e connettersi alla macchina virtuale per assicurarsi che sia in esecuzione.
      L'output è simile al seguente.
      kubectl get vm -n <namespace-name>
      NAME        POWER-STATE   CLASS             IMAGE           PRIMARY-IP        AGE
      source-vm   poweredOn     best-effort-small vmi-d2wnmq..... 192.168.000.00   9m32s
    3. Creare una richiesta di pubblicazione per una nuova immagine di destinazione.
      Ad esempio vmpub.yaml. Nella richiesta, indicare il nome della macchina virtuale di origine e la libreria di contenuti di destinazione in cui si desidera pubblicare l'immagine. Assicurarsi che la libreria sia scrivibile.
      apiVersion: vmoperator.vmware.com/v1alpha1
      kind: VirtualMachinePublishRequest
      metadata:
        name: vmpub-1
        namespace: test-publish-ns
      spec:
        source:
          apiVersion: vmoperator.vmware.com/v1alpha1
          kind: VirtualMachine
          name: source-vm # If empty, the name of this VirtualMachinePublishRequest will be used as the source VM name ("vmpub-1" in this example).
        target:
          item:
            name: publish-image-1 # If empty, the target item name is <source-vm-name>-image by default
          location:
            apiVersion: imageregistry.vmware.com/v1alpha1
            kind: ContentLibrary
            name: cl-b585915ddxxxxxxxx
      
    4. Descrivere la richiesta di pubblicazione.
      Assicurarsi che lo stato della richiesta di pubblicazione sia in stato Ready con il ImageName impostato.
      kubectl describe vmpub vmpub-1 -n <namespace-name>
      ==================
      Status:
        imageName: vmi-12980cddd...
        ready: true
      ==================
    5. Verificare che la nuova immagine venga aggiunta alla libreria di contenuti dopo il completamento della richiesta di pubblicazione.
      kubectl get vmi
       NAME              PROVIDER-NAME      CONTENT-LIBRAY-NAME    IMAGE-NAME      VERSION   OS-TYPE        FORMAT   AGE
       vmi-12980cddd..   clitem-12980cddd.. cl-b585915ddxxxxxxxx   publish-image-1           ubuntu64guest  ovf      7m12s
       vmi-d2wnmq.....   clitem-d2wnmq..... cl-b585915ddxxxxxxxx   item 1                    ubuntu64guest  ovf      26m
       vmi-55088d.....   clitem-55088d..... cl-b585915ddxxxxxxxx   item 2                    otherguest     ovf      26m
    È possibile utilizzare questa nuova immagine per distribuire una nuova macchina virtuale.