Andrew Mercer
on this page

27.1 Concept mapping

vSphere OpenStack Harvester
ESXi host Nova compute Harvester node (RKE2 + KubeVirt)
vCenter Horizon + APIs Harvester UI / Rancher
VM Nova instance VirtualMachine
Template / Content Library Glance image VirtualMachineImage, VirtualMachineTemplate
vSAN / VMFS datastore Cinder (Ceph/LVM) Longhorn / external CSI
Port group (VLAN) Neutron provider network NetworkAttachmentDefinition (VLAN)
vDS uplinks provider bridge mappings ClusterNetwork + VlanConfig
NSX segments Neutron tenant networks (VXLAN/Geneve) Kube-OVN VPCs/subnets
NSX edge / Octavia Octavia LB Harvester LB / guest LBs
Floating IP Floating IP VPC NAT gateway / EIP (v1.9)
vMotion Live migration Live migration
HA (restart) Instance HA (Masakari) vm-force-reset-policy restart
DRS — Descheduler add-on
Resource pools / folders Projects + quotas Rancher Projects + ResourceQuotas
Snapshots Cinder/Nova snapshots VM/volume snapshots
VADP backup (Veeam etc.) Freezer / vendor VM backups to S3/NFS (+ partner tools via CSI snapshots)
Host maintenance mode nova host-evacuate-live Maintenance mode
Heat Heat Terraform / Fleet / Argo

27.2 vm-import-controller

Enable the add-on, then:

apiVersion: v1
kind: Secret
metadata:
  name: vcsim-creds
  namespace: default
stringData:
  username: "[email protected]"
  password: "..."
---
apiVersion: migration.harvesterhci.io/v1beta1
kind: VmwareSource
metadata:
  name: vcenter-prod
  namespace: default
spec:
  endpoint: "https://vcenter.example.net/sdk"
  dc: "DC1"
  credentials:
    name: vcsim-creds
    namespace: default
---
apiVersion: migration.harvesterhci.io/v1beta1
kind: VirtualMachineImport
metadata:
  name: app01
  namespace: default
spec:
  virtualMachineName: "app01"
  networkMapping:
    - sourceNetwork: "VM Network"
      destinationNetwork: "default/vlan100-servers"
  sourceCluster:
    name: vcenter-prod
    namespace: default
    kind: VmwareSource
    apiVersion: migration.harvesterhci.io/v1beta1

An OpenstackSource works the same way with Keystone credentials (project, domain, region). The controller exports disks, converts them to raw images, and creates the Harvester VM.

27.3 Migration checklist

  • [ ] Install VirtIO drivers in Windows guests before migration (or use the conversion flow that injects them; otherwise the VM won't find its boot disk).
  • [ ] Linux guests: ensure virtio_blk/virtio_scsi/virtio_net are in the initramfs (dracut -f --add-drivers ... on RHEL-likes).
  • [ ] Remove VMware Tools; install qemu-guest-agent.
  • [ ] Interface names change (ens192 → enp1s0): fix netplan/NetworkManager configs, or use cloud-init network data.
  • [ ] Map VLANs 1:1 so IPs can be retained.
  • [ ] Plan for thin→raw expansion during conversion (temporary capacity).
  • [ ] Migrate in waves: test/dev → stateless → stateful → critical.
  • [ ] Re-establish backups on the new platform before decommissioning the old.

Coming from OpenStack operations, Harvester will feel familiar but much smaller: there's no RabbitMQ, no galera, no Keystone/Neutron agent sprawl — the Kubernetes control plane replaces most of it. The trade-off is less mature multi-tenant SDN (improving fast with Kube-OVN) and a scale ceiling per cluster that's lower than a large OpenStack region; the answer is many Harvester clusters managed by Rancher.


← Troubleshooting playbook · Index · Reference architectures →