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 文件以部署源虚拟机。