Después de que un administrador de vSphere asigna bibliotecas de contenido a un espacio de nombres o un clúster, los usuarios de desarrollo y operaciones pueden acceder a la biblioteca y utilizar sus elementos para implementar máquinas virtuales a partir de imágenes de máquina virtual en la biblioteca. Si se puede escribir en la biblioteca asignada al espacio de nombres, los usuarios de desarrollo y operaciones con permisos de edición también pueden administrar los elementos de la biblioteca y publicar nuevas imágenes de máquina virtual.

Requisitos previos

Como usuario de desarrollo y operaciones, asegúrese de seguir estos requisitos:

Procedimiento

  1. Administre los elementos de biblioteca.
    1. Compruebe que las bibliotecas de contenido estén disponibles en el espacio de nombres.
      Nota: Si desea administrar elementos de biblioteca en la biblioteca o publicar imágenes de máquina virtual en la biblioteca, asegúrese de que el estado de escritura sea 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. Compruebe el contenido de la biblioteca.
      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. Elimine una imagen de la biblioteca de contenido.
      Nota: Solo puede eliminar un elemento de la biblioteca en el que se pueda escribir y si tiene permisos de Edit o permisos de un nivel superior.
      Una vez que se elimina el elemento CLItem, también se elimina el recurso de VMI correspondiente.
      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. Obtiene los detalles de la imagen.
      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. Publique una imagen en la biblioteca de contenido.
    1. Cree un archivo yaml para implementar una máquina virtual de origen.
      Asegúrese de que imageName en la especificación de máquina virtual haga referencia a una de las imágenes de máquina virtual de la biblioteca de contenido.
      Por ejemplo, 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. Obtenga información sobre la máquina virtual implementada y conéctese a la máquina virtual para asegurarse de que se esté ejecutando.
      Verá resultados similares al siguiente.
      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. Cree una solicitud de publicación para una nueva imagen de destino.
      Por ejemplo, vmpub.yaml. En la solicitud, indique el nombre de la máquina virtual de origen y la biblioteca de contenido de destino en la que desea publicar la imagen. Asegúrese de que se pueda escribir en la biblioteca.
      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. Describa la solicitud de publicación.
      Asegúrese de que la solicitud de publicación tenga el estado Ready con ImageName establecido.
      kubectl describe vmpub vmpub-1 -n <namespace-name>
      ==================
      Status:
        imageName: vmi-12980cddd...
        ready: true
      ==================
    5. Compruebe que la nueva imagen se agregue a la biblioteca de contenido después de que se complete la solicitud de publicación.
      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
    Puede utilizar esta nueva imagen para implementar una nueva máquina virtual.