vSphere 管理员将内容库分配给命名空间或集群后,DevOps 用户可以访问库,并使用其项目从库中的虚拟机映像部署虚拟机。如果分配给命名空间的库是可写的,则具有编辑权限的 DevOps 用户还可以管理库项目并发布新的虚拟机映像。

注: 您使用的虚拟机映像没有任何限制。如果要测试即时可用的 OVA 映像,可以从 建议的映像页面下载这些映像。请记住,这些映像仅供 POC 使用。在生产环境中,使用遵循企业安全策略的最新修补程序和所需安全设置创建映像。

前提条件

作为 DevOps 用户,请确保遵循以下要求:

过程

  1. 管理库项目。
    1. 确认内容库在命名空间中可用。
      注: 如果要管理库中的库项目或将虚拟机映像发布到库,请确保其可写状态为 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. 检查库的内容。
      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. 从内容库中删除映像。
      注: 仅当具有 Edit 权限或更高级别的权限时,才能从库中删除项目。
      删除 clitem 后,也会删除相应的 vmi 资源。
      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. 获取映像详细信息。
      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. 将映像发布到内容库。
    1. 创建 yaml 文件以部署源虚拟机。
      确保 VirtualMachine 规范中的 imageName 引用内容库中的一个虚拟机映像。
      例如, source-vm.yaml
      apiVersion: vmoperator.vmware.com/v1alpha2
      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. 获取有关已部署虚拟机的信息,并连接到虚拟机以确保其正在运行。
      您会看到类似以下内容的输出。
      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. 为新的目标映像创建发布请求。
      例如 vmpub.yaml。在请求中,指示源虚拟机名称以及要在其中发布映像的目标内容库。确保库可写入。
      apiVersion: vmoperator.vmware.com/v1alpha2
      kind: VirtualMachinePublishRequest
      metadata:
        name: vmpub-1
        namespace: test-publish-ns
      spec:
        source:
          apiVersion: vmoperator.vmware.com/v1alpha2
          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/v1alpha2
            kind: ContentLibrary
            name: cl-b585915ddxxxxxxxx
      
    4. 描述发布请求。
      确保发布请求处于 Ready 状态,并设置了 ImageName
      kubectl describe vmpub vmpub-1 -n <namespace-name>
      ==================
      Status:
        imageName: vmi-12980cddd...
        ready: true
      ==================
    5. 确认在发布请求完成后新映像已添加到内容库。
      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
    您可以使用此新映像部署新虚拟机。