Hardware workflows, no hardware
A BMC for every virtual machine.
KubeVirtBMC gives each KubeVirt VM its own IPMI and Redfish endpoint. Bare-metal provisioning tools power it, boot it and install it as if it were a physical server.
helm repo add kubevirtbmc https://charts.kubevirtbmc.io/helm upgrade --install kubevirtbmc kubevirtbmc/kubevirtbmc \ --namespace kubevirtbmc-system --create-namespaceWhy
Provisioners speak IPMI and Redfish. Virtual machines don't.
Metal3, Tinkerbell and Seeder manage servers through their baseboard management controller: power state, boot device, virtual media. A KubeVirt VM has no BMC, so these tools cannot see it.
KubeVirtBMC plugs that gap. For every VM you point it at, the operator runs a virtual BMC that answers standard IPMI and Redfish calls and turns them into KubeVirt operations.
Works with Metal3 Tinkerbell Seeder
Features
What a virtual BMC answers
- IPMI
ipmitoolworks as-is Power on, power off, reset and boot device selection over IPMI v1.5 and v2.0, so both-I lanand-I lanpluswork. Off by default; turn it on per VM withspec.ipmi.enabled.- Redfish
- A Redfish service per VM RESTful server management that follows the DMTF Redfish specification, rooted at
/redfish/v1. - Virtual media
- Mount an ISO remotely Attach an installer or recovery ISO through Redfish virtual media, backed by KubeVirt hotplug volumes and CDI.
- CRD
- Kubernetes-native One
VirtualMachineBMCresource per VM. The controller reconciles a Deployment that runs the virtual BMC, a Service in front of it, and the ServiceAccount and RoleBinding it needs. - Provisioning
- Fits existing pipelines Anything that already speaks IPMI or Redfish can drive a KubeVirt VM, with no plugin or fork.
How it works
From a resource to a reachable BMC
Install the operator
Deploy the controller with the Helm chart or the single install manifest.
Point it at a VM
Create a
VirtualMachineBMCthat references aVirtualMachineand aSecretholding the BMC credentials.Get an endpoint
The controller rolls out a Deployment running the virtual BMC, and a Service exposing 80/TCP for Redfish, plus 623/UDP for IPMI when it is enabled.
Provision as usual
Your provisioner talks to that Service. Power and boot requests become KubeVirt operations on the VM.
apiVersion: bmc.kubevirt.io/v1beta1kind: VirtualMachineBMCmetadata: name: node-01 namespace: defaultspec: virtualMachineRef: name: node-01 authSecretRef: name: bmc-secretcurl -s -u admin:password \ http://node-01-virtbmc.default.svc/redfish/v1/Systems/1ipmitool -I lanplus -U admin -P password \ -H node-01-virtbmc.default.svc power statusGet involved
Open source, Apache 2.0 licensed
Open issues and ask questions in the main repository. Pull requests are welcome in any of the project’s repositories.