Skip to main content

Configuration Schema

Complete field reference for the NodeProvider resource and the property keys recognized by the Metal3 provider. For task-oriented guides with YAML examples, see Configuration.

NodeProvider

apiVersion: management.loft.sh/v1 · kind: NodeProvider

spec

NodeProviderSpec defines the desired state of NodeProvider.

FieldTypeRequiredDescription
propertiesmap[string]stringNoProperties are global properties that are applied to all node claims and environments managed by this provider.
metal3NodeProviderMetal3NoMetal3 configures a node provider using metal3.io BareMetalHost resources. See spec.metal3.
displayNamestringNoDisplayName is the name that should be displayed in the UI

Only one provider type (bcm, kubeVirt, terraform, clusterAPI, metal3) may be set at a time. This reference covers metal3 only.

spec.metal3

FieldTypeRequiredDescription
clusterRefNodeProviderClusterRefYesClusterRef is a reference to connected control plane cluster in which KubeVirt operator is running See spec.metal3.clusterRef.
deployMetal3ProviderDeploymentNoSee spec.metal3.deploy.
nodeTypesMetal3NodeTypeSpec[]YesNodeTypes define NodeTypes that should be automatically created for this provider. See spec.metal3.nodeTypes.

spec.metal3.clusterRef

FieldTypeRequiredDescription
clusterstringYesCluster is the connected cluster the VMs will be created in
namespacestringYesNamespace is the namespace inside the connected cluster holding VMs

spec.metal3.deploy

FieldTypeRequiredDescription
multusMultusDeploymentNoMultus configures the Multus CNI deployment. See spec.metal3.deploy.multus.
dhcpDHCPDeploymentNoDHCP configures the DHCP server deployment. See spec.metal3.deploy.dhcp.
metal3Metal3DeploymentNoMetal3 configures the Metal3/Ironic deployment. See spec.metal3.deploy.metal3.

spec.metal3.deploy.multus

FieldTypeRequiredDescription
enabledbooleanYesEnabled controls whether Multus CNI is deployed into the cluster.
helmValuesstringNoHelmValues is raw YAML that will be passed as values to the Multus Helm chart.

spec.metal3.deploy.dhcp

FieldTypeRequiredDescription
enabledbooleanYesEnabled controls whether the DHCP server is deployed into the cluster.
chartRepostringNoChartRepo overrides the Helm chart repository used to install the DHCP server.
chartstringNoChart overrides the Helm chart name used to install the DHCP server.
versionstringNoVersion overrides the Helm chart version used to install the DHCP server.
helmValuesstringNoHelmValues is raw YAML that will be passed as values to the DHCP Helm chart.

spec.metal3.deploy.metal3

FieldTypeRequiredDescription
enabledbooleanYesEnabled controls whether Metal3 and Ironic are deployed into the cluster.
chartRepostringNoChartRepo overrides the Helm chart repository used to install Metal3.
chartstringNoChart overrides the Helm chart name used to install Metal3.
versionstringNoVersion overrides the Helm chart version used to install Metal3.
helmValuesstringNoHelmValues is raw YAML that will be passed as values to the Metal3 Helm chart.

spec.metal3.nodeTypes

FieldTypeRequiredDescription
providerRefstringNoProviderRef is the node provider to use for this node type.
propertiesmap[string]stringYesProperties returns a flexible set of properties that may be selected for scheduling.
resourcesResourceListYesResources lists the full resources for a single node.
overheadNodeTypeOverheadNoOverhead defines the resource overhead for this node type. See spec.metal3.nodeTypes.overhead.
costintegerNoCost is the instance cost. The higher the cost, the less likely it is to be selected. If empty, cost is automatically calculated from the resources specified.
displayNamestringNoDisplayName is the name that should be displayed in the UI
namestringYesName is the name of this node type.
metadataManagedNodeTypeObjectMetaYesMetadata holds metadata to add to this managed NodeType. See spec.metal3.nodeTypes.metadata.
bareMetalHostsMetal3BareMetalHostsNoBareMetalHosts is a list of BareMetalHosts to use for this NodeType. See spec.metal3.nodeTypes.bareMetalHosts.

spec.metal3.nodeTypes.overhead

NodeTypeOverhead defines the resource overhead for a node type.

FieldTypeRequiredDescription
kubeReservedResourceListNoKubeReserved is the resource overhead for kubelet and other Kubernetes system daemons.

spec.metal3.nodeTypes.metadata

FieldTypeRequiredDescription
labelsmap[string]stringYesLabels holds labels to add to this managed NodeType.
annotationsmap[string]stringYesAnnotations holds annotations to add to this managed NodeType.

spec.metal3.nodeTypes.bareMetalHosts

FieldTypeRequiredDescription
selectorLabelSelectorNoSelector is a label selector to select the BareMetalHosts to use for this NodeType.

Properties reference

Properties are key-value strings set on NodeProvider.spec.properties, nodeTypes[].properties, or per-Machine. The most specific level wins: Machine overrides NodeType, NodeType overrides NodeProvider.

Image

PropertyDescription
vcluster.com/os-imageName of an OSImage resource to use as the OS for provisioned servers. Mutually exclusive with metal3.vcluster.com/image-url.
metal3.vcluster.com/image-urlDirect HTTP URL of the OS image. Use when the image is not tracked as an OSImage resource.
metal3.vcluster.com/image-checksumChecksum of the OS image file. Required when using image-url.
metal3.vcluster.com/image-checksum-typeAlgorithm for image-checksum. Accepted values: md5, sha256, sha512. Defaults to md5.

User data

PropertyDescription
vcluster.com/user-dataInline cloud-init user data applied at first boot. The platform appends the vCluster join script automatically.
vcluster.com/user-data-templateGo template string for user data. Receives Machine and NodeType fields as template variables.
vcluster.com/user-data-template-secretReference to a Secret containing a Go template for user data. Format: <namespace>/<name>.
vcluster.com/ssh-keysNewline-separated SSH public keys injected into the provisioned OS.

Networking

PropertyDescription
metal3.vcluster.com/network-cidrCIDR pool for IPAM. Format: <gateway>/<prefix>, e.g. 192.168.100.1/24. The platform derives the allocatable range from the prefix and skips network, gateway, and broadcast addresses. Mutually exclusive with network-ip-range.
metal3.vcluster.com/network-ip-rangeExplicit IP ranges for IPAM. Format: <start>-<end>, comma-separated for multiple ranges, e.g. 10.0.0.20-10.0.0.30,10.0.0.40-10.0.0.50. Mutually exclusive with network-cidr.
metal3.vcluster.com/dns-serversComma-separated DNS server IPs written into the network-data Secret, e.g. 8.8.8.8,8.8.4.4.
metal3.vcluster.com/network-dataRaw network-data JSON document. Overrides IPAM-based generation entirely. Use for VLAN tagging, bonding, or other configurations not covered by CIDR/range allocation.
vcluster.com/network-data-templateGo template string for the network-data JSON document. Receives the allocated IP and gateway as template variables.

Server selection

PropertyDescription
metal3.vcluster.com/server-nameName of a specific BareMetalHost to claim. The platform ignores the node type's label selector and claims only this server. Provisioning fails if the named server is unavailable.