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
    您可以使用此新映像部署新虛擬機器。