Bare Metal Provider APIs

The Bare Metal Infrastructure Provider builds on elemental-operator and Cluster API. Operators interact with two CRD groups, both documented here:

  • infrastructure.cluster.x-k8s.io/v1beta1 — the provider's own resources.
  • elemental.cattle.io/v1beta1 — owned by elemental-operator; the provider only reads and annotates them, but operators must author the registration/seed objects and inspect inventory objects on every workflow.

Custom Resources

Provider resources (infrastructure.cluster.x-k8s.io/v1beta1)

ResourceDescriptionDocumentation
BaremetalClusterCluster-level infrastructure: control-plane VIP, endpoint, network type.BaremetalCluster
BaremetalMachineSingle infra machine bound to one MachineInventory.BaremetalMachine
BaremetalMachineTemplateTemplate that binds a pool to a KubeadmControlPlane or MachineDeployment.BaremetalMachineTemplate
MachineInventoryPoolAllowed set of MachineInventory names for a cluster.MachineInventoryPool

Elemental resources (elemental.cattle.io/v1beta1)

ResourceDescriptionDocumentation
MachineRegistrationRegistration URL + first-install cloud-config. Authored once per cluster.MachineRegistration
SeedImageTriggers ISO build with the registration baked in.SeedImage
MachineInventoryLong-lived host identity; consumed by MachineInventoryPool. The provider also reads spec.observedNetwork (Alauda-fork-only) and writes the baremetal.alauda.io/* annotations.MachineInventory

Upstream Cluster API resources

The provider also composes the following upstream resources without changing their schemas. Refer to the Cluster API reference for full schemas.

ResourceAPI groupPurpose
Clustercluster.x-k8s.io/v1beta1Top-level CAPI resource; carries the bare-metal-specific cpaas.io/* annotations.
KubeadmControlPlanecontrolplane.cluster.x-k8s.io/v1beta1Owns control-plane Machine lifecycle and kubeadm config.
MachineDeploymentcluster.x-k8s.io/v1beta1Owns worker Machine lifecycle.
KubeadmConfigTemplatebootstrap.cluster.x-k8s.io/v1beta1Worker cloud-init user-data template.