vSphere 管理員將內容程式庫指派給命名空間或叢集後,DevOps 使用者可以存取程式庫,並使用其項目從程式庫中的虛擬機器映像部署虛擬機器。如果指派給命名空間的程式庫是可寫入的,則具有編輯權限的 DevOps 使用者還可以管理程式庫項目並發佈新的虛擬機器映像。
備註: 您使用的虛擬機器映像沒有任何限制。如果要測試可供使用的 OVA 映像,可以從
建議的映像頁面下載這些映像。請記住,這些映像僅供 POC 使用。在生產環境中,使用遵循企業安全性原則的最新修補程式和所需安全性設定建立映像。
必要條件
身為 DevOps 使用者,請確保遵循以下需求:
- 您在 vSphere 命名空間上具有 Edit 權限。
- vSphere 管理員已將可寫入的內容程式庫指派給命名空間。請參閱使用資料中心 CLI 將虛擬機器內容程式庫新增到主管。
- 內容程式庫為本機程式庫或已發佈程式庫。無法編輯已訂閱程式庫。
程序
- 管理程式庫項目。
- 確認內容程式庫在命名空間中可用。
備註: 如果要管理程式庫中的程式庫項目或將虛擬機器映像發佈到程式庫,請確保其可寫入狀態為 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
- 檢查程式庫的內容。
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
- 從內容程式庫中刪除映射。
備註: 僅當程式庫為可寫入並且您具有 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
- 取得映射詳細資料。
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
- 確認內容程式庫在命名空間中可用。
- 將映像發佈到內容程式庫。
- 建立 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
- 取得已部署虛擬機器的相關資訊,並連線至虛擬機器以確保其正在執行。
您會看到類似下列內容的輸出。
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
- 為新的目標映像建立發佈請求。
例如,
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
- 說明發佈請求。
確保發佈請求處於
Ready
狀態,並且已設定ImageName
。kubectl describe vmpub vmpub-1 -n <namespace-name> ================== Status: imageName: vmi-12980cddd... ready: true ==================
- 確認在發佈請求完成後新映像已新增至內容程式庫。
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
您可以使用此新映像部署新虛擬機器。 - 建立 yaml 檔案以部署來源虛擬機器。