Skip to main content

Proxmox API β€” compatibility layer

corral proxmox serves a subset of the Proxmox VE REST API (/api2/json/...) backed by KubeVirt, so tools built for the Proxmox ecosystem β€” the Terraform bpg/proxmox provider, Ansible, proxmoxer β€” can manage your KubeVirt VMs without modification.

corral plugin install proxmox
corral proxmox serve --addr :8006

It's also always available embedded in corral web at the same /api2/json/... paths β€” you don't need the standalone plugin if you're already running the web UI.

What's translated​

  • Nodes β€” Kubernetes nodes, exposed as Proxmox nodes with CPU/memory capacity and Ready condition
  • VMs (/nodes/{node}/qemu) β€” KubeVirt VMs, with a stable numeric vmid bidirectionally mapped via a corral.io/proxmox-vmid label (pre-existing VMs without the label derive one from a CRC32 hash of their name, so it stays stable across restarts)
  • Storage β€” Kubernetes StorageClasses, mapped to Proxmox storage types (Longhorn β†’ lvmthin, local-path β†’ dir)
  • Pools β€” Kubernetes namespaces, one pool per namespace, VMs as members
  • Users/groups/roles β€” a read-only view of Kubernetes RBAC translated into Proxmox's shape (four fixed roles: Administrator, Operator, Viewer, NoAccess, mapped from cluster-admin/admin/view/default privilege levels). See ADR-0001 for the exact mapping.

Auth enforcement is delegated entirely to tailnet membership + Kubernetes RBAC β€” the Proxmox privilege strings this layer returns are presentation-only, for tooling that expects to see them, not an independent authorization system.

Full reference​

docs/proxmox-api.md in the corral repo has the complete endpoint list.