Copying CoreWeave Images to a Writable PVC
Objective: Clone an existing CoreWeave image to your namespace, digestible by tools like Packer or bootable as a VS.
Overview: This process consists of copying a CoreWeave block PVC from the vd-images namespace, into your own namespace.
References:
Be sure to review Getting Started and the kubectl Virtual Server deployment method before starting this guide.
Identifying source image
We start by identifying an image we wish to export and modify. To browse images from the CoreWeave store:
$kubectl get pvc -n vd-images -l images.coreweave.cloud/latest=true,images.coreweave.cloud/private=false,images.coreweave.cloud/family=windows --sort-by=.spec.storageClassName
For more information on querying source images, see Identifying Images
In this example – we'll be targeting the latest Windows Server 2019 Standard image presented from region ORD1:
Ensure your location is consistent throughout these examples – here we are using ORD1 - valid locations also include EWR1 and LAS1
Clone source image into namespace
Now we need to clone the PVC from vd-images into our own namespace so that we can attach it to a worker VM. To do this we deploy volume_clone.yaml with kubectl create -f volume_clone.yaml
apiVersion: cdi.kubevirt.io/v1beta1kind: DataVolumemetadata:annotations:labels:name: winserver2019std-clone-20210701-ord1namespace: tenant-<name>spec:pvc:accessModes:- ReadWriteOnceresources:requests:storage: 79GistorageClassName: block-nvme-ord1volumeMode: Blocksource:pvc:name: winserver2019std-master-20210722-ord1namespace: vd-images
Note here we are referencing the source image from vd-images winserver2019std-master-20210701-ord1 and re-creating it in our own namespace with the name winserver2019std-clone-20210701-ord1.
Note storage size needs to be equal to or greater than the source disk capacity.
With kubectl get pvc
, we can see our newly cloned image existing in our own namespace: