Running a Windows 2019 Server VM in IBM Cloud Satellite with Openshift Virtualization
Some client environments will run a workload fleet that is composed of a mix of VM and container workload. In some situations: these workloads need to communicate together to accomplish an overall business goal (ie execute a user workflow/action). As covered in this previous post: containerized workload running within IBM Cloud Satellite can seamlessly communicate with VMs running within the datacenter hosting the Satellite location. However: some client environments do not have an existing virtualization environment (VMWare, Openstack, AWS, etc) to boot VMs within the datacenter running the Satellite location. In these environments: a client will only have a set of baremetal machines that they can dedicate to running both VM and containerized workload. ROKS on IBM Cloud Satellite with Openshift Virtualization can be utilized in these environments to provide a virtualization environment for booting VMs in addition to running containerized workload. In this guide: we will walk through booting a Windows 2019 Server VM in a baremetal IBM Cloud Satellite environment.
Prerequisites
First: a Red Hat CoreOS enabled Satellite location must be created. That can be created with the following command: ibmcloud sat location create --name LOCATION_NAME --managed-from REGION --coreos-enabled
. Infrastructure is then attached to the location to build out the control plane according to the sizing guidelines outlined in this documentation page. Once infrastructure is assigned to the location and the location is configured: a ROKS cluster is ordered within the location using ibmcloud ks cluster create satellite --name ROKS_CLUSTER_NAME --location LOCATION_NAME --version <4.11_openshift or higher> --operating-system RHCOS
. VM workload is only able to run on Red Hat CoreOS baremetal infrastructure assigned to a ROKS on Satellite cluster (typically all infrastructure in these environments are baremetals running Red Hat CoreOS). Within the ROKS on Satellite cluster: follow the upstream documentation for installing Openshift Virtualization. Lastly: a persistent storage solution needs to be deployed into the ROKS on Satellite cluster to host the VM disks. This guide will use an environment that is already pre provisioned: consult IBM Cloud Satellite’s documentation for getting an environment setup in this manner.
For booting a Windows 2019 Server VM: a user needs to have a license for using Windows 2019 Server. An evaluation ISO can be downloaded from Microsoft. This ISO then needs to be available to be downloaded from an endpoint accessible from within the ROKS on Satellite cluster running Openshift Virtualization. This guide will host the ISO in IBM Cloud Object storage.
Booting the Windows VM
We will use the console based workflow to boot the Windows 2019 VM. A CLI workflow can also be executed but is not covered in this guide. The first step is to login to the Openshift console for the ROKS on Satellite cluster and go to the VirtualMachine page shown below:
On this page: we will create a VM from the catalog with Create -> From Catalog. On the catalog page we will select the Microsoft Windows Server 2019 VM option and click Customize VirtualMachine shown below:
On the customization page: we will select the Boot from CD
option and reference the URL that the Windows VM ISO can be downloaded from. We need to ensure the persistent volume that runs the disk is large enough to hold the ISO. Additionally: in the Disk Source option: we specify the size of the main disk that will be the root disk of the windows VM. Also, ensure the Mount Windows drivers disk
option is deselected. The filled out page for our environment is shown below:
With this information filled out we click Review and create VirtualMachine
to review the details.
One thing we need to ensure before booting the VM is that the boot order is appropriately set to the following priority:
1) rootdisk
2) installation-cdrom
We will do that by going to the YAML tab of the review page and check the boot order section of the VM (shown below).
We will click Save and then go back to the Overview page and click Create VirtualMachine (ignore the warning if it pops up and click proceed as it is not applicable for booting from ISOs). Once created: an importer pod will be created in the namespace you created the VM in. It will proceed to import the ISO (logs can be viewed to show percentage complete).
Tylers-MacBook-Pro:~ tylerlisowski$ kubectl logs importer-win2k19-striped-mollusk-installation-cdrom
I1001 20:28:02.948632 1 importer.go:83] Starting importer
I1001 20:28:02.948674 1 importer.go:150] begin import process
I1001 20:28:03.884405 1 data-processor.go:379] Calculating available size
I1001 20:28:03.884557 1 data-processor.go:391] Checking out file system volume size.
I1001 20:28:03.884584 1 data-processor.go:399] Request image size not empty.
I1001 20:28:03.884599 1 data-processor.go:404] Target size 10226112610.
I1001 20:28:03.909286 1 nbdkit.go:294] Waiting for nbdkit PID.
I1001 20:28:04.410102 1 nbdkit.go:315] nbdkit ready.
I1001 20:28:04.410145 1 data-processor.go:282] New phase: Convert
I1001 20:28:04.410180 1 data-processor.go:288] Validating image
I1001 20:28:05.196989 1 qemu.go:259] 0.00
I1001 20:28:13.012100 1 qemu.go:259] 1.03
I1001 20:28:20.948293 1 qemu.go:259] 2.06
...
Once complete: we can go back to the VirtualMachine page and access the console to walk through the Window’s Server Operating System Installation:
We will click Next and then Install now, and then select Windows Server 2019 Standard Evaluation, click Next and accept the terms.
Then we will choose Custom: Install Windows only (advanced):
Then choose the Blank drive we created when customizing the VM and click next
It will proceed to install Windows. You can monitor the progress in the console window:
Once complete: you will be able to set an Administrator password and access a terminal on the machine.
Once set you will now have access to the shell on the Windows VM:
And within that VM: you have access to the Openshift cluster SDN network. For example: we can curl the downloads service in the openshift-console namespace.
Congratulations! You have now successfully booted a Windows Server 2019 VM and demonstrated how the workload running on it can seamlessly communicate with existing containerized workload in the cluster.