Skip to content

Create a Windows VM Workload Template

For this example, we will create a Windows VM workload template

Note

If you haven't installed the needed plugins please see our VM Getting Started documentation

Step 1: Get the Windows ISO URL

You don't need to download the ISO manually — Orion uses KubeVirt's native HTTP downloader to import ISOs directly.

Tip

You can use Windows 10, Windows 11, or any bootable ISO. You can also serve ISOs from your local network over HTTP if you have them available internally. Microsoft imposes a 24 hour limit on the validity of this link. If you get a 404 error during import, you need to request a new link from this page.

1. Gather your ISO image URL
  1. Navigate to: https://www.microsoft.com/en-us/software-download/windows10ISO
  2. Select your edition and language
  3. Right-click on the 64-bit download button and select Copy link address
  4. Save this URL—you'll use it in the template creation form

Step 2: Create the Workload Template

1. Navigate to the Workload template Creation Form
  1. From the Genesis Workloads table, click Create Workload
  2. Select the VM schema you installed previously in the getting started section.
2. Configure Windows VM Settings

With your VM schema selected we can begin configuring our template.

Set the following values for a Windows VM:

Setting Value Notes
Label Your choice (e.g., "Windows10") Displayed in the catalog
Groups Select your project group Add other groups to restrict access
secure_boot true Required for Windows
efi true Required for Windows
virtio_drivers true Required for Windows — loads drivers at boot
CPU Request 4 Minimum for Windows
CPU Limit 4 (or higher) Do NOT use "unlimited"
Memory Request 8Gi Minimum for Windows
Memory Limit 8Gi (or higher) Do NOT use "unlimited"

template form

Warning

Important: The "unlimited" checkbox does not work for virtual machines. Always set explicit CPU and memory limits. Also, spaces are NOT allowed in Labels.

3. Add the ISO Mount (HTTP)

iso mount


  1. Click + Add to add a new mount
  2. Set the mount type to HTTP
  3. Configure:
    • Name: iso (or preference)
    • iso_url: Paste the Windows ISO URL from Step 1
    • storage_size: 8Gi (must be larger than the ISO file—Windows 10 is ~5.7 GB)




Warning

The size value format is important. Always use Gi suffix for gigabytes (e.g., 8Gi, 15Gi). Incorrect formatting will cause volume creation to fail.

4. Add the System Disk (Blank)

blank mount


  1. Click + Add to add another mount
  2. Set the mount type to Blank
  3. Configure:
    • Name: system
    • storage_size: 50Gi




Info

This creates a 50 GB disk where Windows will be installed. Plan this size based on your intended use — you cannot resize it after creation, but you can attach additional drives later if needed.

5. Configure RustDesk Port

As a demonstration, we will use RustDesk as a performant VDI solution. Configure the port exposure:

rustdesk template


Setting Value
Name rustdesk
Type NodePort
vm_port 21118
service_port 21118
Protocol TCP




Info

When you set a port, it overwrites the defaults — you're not adding to them.

Why NodePort? This dynamically assigns a port and exposes it to the network, enabling Orion to function as a connection broker. You can launch thousands of VMs, and each will receive a unique port assignment accessible via the Connect button.

Other Use Cases for Ports:

  • Remote desktop protocols (RGS, Parsec, etc.)
  • Game servers (Minecraft, dedicated servers)
  • Development servers (database access, web services)
  • Any application requiring direct network access
6. Submit the Template

Click Submit to create the workload template. It will now appear in your project's workload catalog.