<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/metal3-meets-kubevirtbmc-provisioning-kubevirt-vms-like-bare-metal-wxeu7wz7k" -->

---
title: Metal3 meets KubeVirtBMC: Provisioning KubeVirt VMs like...
description: A step-by-step walkthrough demonstrates how to combine Metal3 with KubeVirtBMC to provision KubeVirt virtual machines using standard bare-metal workflows. The...
canonical: https://daily.dev/posts/metal3-meets-kubevirtbmc-provisioning-kubevirt-vms-like-bare-metal-wxeu7wz7k
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Metal3 meets KubeVirtBMC: Provisioning KubeVirt VMs like bare metal | daily.dev
og:description: A step-by-step walkthrough demonstrates how to combine Metal3 with KubeVirtBMC to provision KubeVirt virtual machines using standard bare-metal workflows. The...
og:url: https://daily.dev/posts/metal3-meets-kubevirtbmc-provisioning-kubevirt-vms-like-bare-metal-wxeu7wz7k
og:image: https://api.daily.dev/og/posts/WxEU7wZ7k.png
og:image:alt: Metal3 meets KubeVirtBMC: Provisioning KubeVirt VMs like bare metal
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Metal3 meets KubeVirtBMC: Provisioning KubeVirt VMs like bare metal

**[CNCF](https://daily.dev/sources/cncf)** · 12 min read · 1 upvotes · 0 comments

## Summary

A step-by-step walkthrough demonstrates how to combine Metal3 with KubeVirtBMC to provision KubeVirt virtual machines using standard bare-metal workflows. The guide covers installing cert-manager, KubeVirtBMC, and the Metal3 stack (Ironic Standalone Operator and Bare Metal Operator), then registering a KubeVirt VM as a BareMetalHost resource so Metal3 can inspect, boot via Redfish virtual media, and provision an OS image onto it exactly as if it were physical hardware. It closes with common gotchas (MAC address matching, HTTP vs HTTPS, virtual media vs PXE) and use cases like CI/CD testing and faster developer iteration without physical server fleets.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://www.cncf.io/blog/2026/09/02/metal3-meets-kubevirtbmc-provisioning-kubevirt-vms-like-bare-metal>

## Questions this post answers

### How do I make Metal3 treat a KubeVirt VM as a bare-metal host?

Deploy KubeVirtBMC to create a virtual BMC endpoint for the VM, then register a BareMetalHost resource in Metal3 pointing to that endpoint's Redfish address, such as redfish-virtualmedia+http://<vm>-virtbmc.default.svc.cluster.local:80/redfish/v1/Systems/1. Metal3 and Ironic then treat the VM exactly like physical hardware, using virtual media for inspection and provisioning.

_Track integration patterns like Metal3 plus KubeVirtBMC for VM-based bare-metal testing on daily.dev._

### Why does Ironic fail to connect to a Redfish virtual media BMC address in Metal3?

Ironic defaults to HTTPS unless the BMC address explicitly includes the +http suffix, such as redfish-virtualmedia+http://. Since KubeVirtBMC serves Redfish over plain HTTP by default, omitting +http causes the connection to fail during BareMetalHost registration.

_Developers debugging Redfish and Ironic connection issues can follow gotchas like these on daily.dev._

### Why does Ironic fail to match a KubeVirt VM during BareMetalHost inspection?

A MAC address mismatch is the usual cause: the bootMACAddress field on the BareMetalHost must match an actual NIC on the VM, but KubeVirt assigns a random MAC by default. Pinning a fixed macAddress, such as 02:00:00:00:00:01, on the VirtualMachine's network interface avoids this mismatch during registration and inspection.

_Engineers troubleshooting bare-metal provisioning quirks can find setups like this on daily.dev._

## Similar posts on daily.dev

- [Building a Kubernetes Cluster as a Service platform on BareMetal using KubeVirt and ClusterAPI](https://daily.dev/posts/building-a-kubernetes-cluster-as-a-service-platform-on-baremetal-using-kubevirt-and-clusterapi-w1rv27p3m) · ITNEXT · 0 upvotes · 0 comments
- [Metal3 at KubeCon \+ CloudNativeCon Europe 2026: Meet the CNCF’s Freshly Incubated Bare Metal Project](https://daily.dev/posts/metal3-at-kubecon-cloudnativecon-europe-2026-meet-the-cncf-s-freshly-incubated-bare-metal-project-d4izsoulu) · CNCF · 0 upvotes · 0 comments
- [Deploy hosted control planes with OpenShift Virtualization](https://daily.dev/posts/deploy-hosted-control-planes-with-openshift-virtualization-7pjlo3shu) · Red Hat Developer · 0 upvotes · 0 comments
- [An architectural decision: Containers on bare metal or on virtual machines](https://daily.dev/posts/an-architectural-decision-containers-on-bare-metal-or-on-virtual-machines-5dagnz43z) · CNCF · 2 upvotes · 0 comments

---

Tags: [#kubernetes](https://daily.dev/tags/kubernetes)

[View this post on daily.dev](https://daily.dev/posts/metal3-meets-kubevirtbmc-provisioning-kubevirt-vms-like-bare-metal-wxeu7wz7k)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Metal3 meets KubeVirtBMC: Provisioning KubeVirt VMs like bare metal","url":"https://daily.dev/posts/metal3-meets-kubevirtbmc-provisioning-kubevirt-vms-like-bare-metal-wxeu7wz7k","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/metal3-meets-kubevirtbmc-provisioning-kubevirt-vms-like-bare-metal-wxeu7wz7k"},"datePublished":"2026-09-02T11:34:06.338Z","dateModified":"2026-09-02T11:35:36.502Z","description":"A step-by-step walkthrough demonstrates how to combine Metal3 with KubeVirtBMC to provision KubeVirt virtual machines using standard bare-metal workflows. The...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/669a623e11269f748105f2c46282eb35?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/669a623e11269f748105f2c46282eb35?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"CNCF","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"CNCF","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/55536a03390741eebd96d2f9b74d2d8d","url":"https://daily.dev/sources/cncf"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/metal3-meets-kubevirtbmc-provisioning-kubevirt-vms-like-bare-metal-wxeu7wz7k","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":1},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"kubernetes","timeRequired":"PT12M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"CNCF","item":"https://daily.dev/sources/cncf"},{"@type":"ListItem","position":3,"name":"Metal3 meets KubeVirtBMC: Provisioning KubeVirt VMs like bare metal"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/metal3-meets-kubevirtbmc-provisioning-kubevirt-vms-like-bare-metal-wxeu7wz7k#faq","mainEntity":[{"@type":"Question","name":"How do I make Metal3 treat a KubeVirt VM as a bare-metal host?","acceptedAnswer":{"@type":"Answer","text":"Deploy KubeVirtBMC to create a virtual BMC endpoint for the VM, then register a BareMetalHost resource in Metal3 pointing to that endpoint's Redfish address, such as redfish-virtualmedia+http://<vm>-virtbmc.default.svc.cluster.local:80/redfish/v1/Systems/1. Metal3 and Ironic then treat the VM exactly like physical hardware, using virtual media for inspection and provisioning. Track integration patterns like Metal3 plus KubeVirtBMC for VM-based bare-metal testing on daily.dev."}},{"@type":"Question","name":"Why does Ironic fail to connect to a Redfish virtual media BMC address in Metal3?","acceptedAnswer":{"@type":"Answer","text":"Ironic defaults to HTTPS unless the BMC address explicitly includes the +http suffix, such as redfish-virtualmedia+http://. Since KubeVirtBMC serves Redfish over plain HTTP by default, omitting +http causes the connection to fail during BareMetalHost registration. Developers debugging Redfish and Ironic connection issues can follow gotchas like these on daily.dev."}},{"@type":"Question","name":"Why does Ironic fail to match a KubeVirt VM during BareMetalHost inspection?","acceptedAnswer":{"@type":"Answer","text":"A MAC address mismatch is the usual cause: the bootMACAddress field on the BareMetalHost must match an actual NIC on the VM, but KubeVirt assigns a random MAC by default. Pinning a fixed macAddress, such as 02:00:00:00:00:01, on the VirtualMachine's network interface avoids this mismatch during registration and inspection. Engineers troubleshooting bare-metal provisioning quirks can find setups like this on daily.dev."}}]}
```

