Release-1.14.0 Highlights: What's New in CAPM3, IPAM and BMO
The Metal3 community has published new releases across three core projects: Cluster API Provider Metal3 (CAPM3) v1.14.0, Bare Metal Operator (BMO) v0.14.0, and IP Address Manager (IPAM) v1.14.0.
This post highlights the key changes in each release, with a focus on major breaking changes and user-facing improvements. It is intended as a concise summary rather than a full changelog.
Full release notes are available here:
Full release notes remain the source of truth for the complete list of fixes, dependency updates, and maintenance changes.
CAPM3 v1.14.0 Highlights
CAPM3 Breaking Changes
-
Deprecate
Metal3DataTemplatespec.clusterName(#3520) — AMetal3DataTemplateis no longer tied to a single cluster, so theclusterNamefield is now optional and unused by the controllers. Setting it produces an admission warning, and the template is no longer garbage-collected with the cluster. To keep it moving duringclusterctl move, the template now carries theclusterctl.cluster.x-k8s.io/movelabel. Drop the field from your manifests:apiVersion: infrastructure.cluster.x-k8s.io/v1beta2 kind: Metal3DataTemplate metadata: name: nodepool-1 spec: # clusterName: my-cluster # deprecated: remove this line metaData: ipAddressesFromIPPool: - key: provisioningIP name: provisioning-pool -
Add blockmove annotations to allow M3M owner references to be removed from BMH (#3459) — CAPM3 no longer sets a
Metal3Machineowner reference on theBareMetalHost; theConsumerRefis used instead. To keepclusterctl movesafe while a host is being claimed, CAPM3 now sets theclusterctl.cluster.x-k8s.io/block-moveannotation on the BMH until its pause and status annotations are applied, then removes it. Note that this annotation blocks the entire move operation while present on any object, so a BMH stuck in this state can stall the whole move.metadata: annotations: # set automatically by CAPM3, removed once the BMH is paused clusterctl.cluster.x-k8s.io/block-move: "" -
Remove all code related to the legacy form of ProviderID (#3373) — Only the current
ProviderIDformat (metal3://<namespace>/<bmh-name>/<m3m-name>) is supported. Clusters that still carry nodes with the oldmetal3://<bmh-uid>style provider IDs must be reconciled onto the new format before upgrading.
CAPM3 New Features
-
Fetch DNS servers from IPPool for the CAPI
IPAddressClaimpath (#3534) — A CAPIIPAddressdoes not carry DNS information, so when allocating through the Cluster APIIPAddressClaimflow, CAPM3 now reads DNS servers directly from the referenced Metal3IPPool. It resolves the allocated address to the matching pool entry and uses that entry’s per-subnetdnsServers, falling back to the pool-leveldnsServerswhen there is no override:apiVersion: ipam.metal3.io/v1alpha1 kind: IPPool metadata: name: provisioning-pool spec: dnsServers: ["8.8.8.8"] # used as fallback pools: - subnet: "192.168.1.0/24" dnsServers: ["9.9.9.9"] # used for addresses in this subnet
BMO v0.14.0 Highlights
BMO Breaking Changes
-
Deprecate the BMH
Taintsfield (#3465) — Thespec.taintsfield onBareMetalHostis now deprecated because it was never actually implemented. Apply node taints through your Cluster API machine templates instead.apiVersion: metal3.io/v1alpha1 kind: BareMetalHost metadata: name: node-0 spec: # taints: # deprecated # - key: dedicated # effect: NoSchedule online: true -
Provisioner: drop the separate
TryInitcall (#3327) — Removes the standaloneTryInitcall from the provisioner initialization flow, simplifying how the Ironic provisioner is brought up. This is an internal refactor with no user-facing configuration change.
BMO New Features
- Add fast Redfish-based inspection mode (#3482) — Introduces a faster hardware inspection mode using Redfish.
-
Add provisioning retry limit to prevent infinite loops (#3468) — A host that repeatedly fails to provision the same image no longer retries forever. A new
--max-provisioning-retriesflag (default5,0disables the limit) caps consecutive failures, tracked in a newstatus.provisioningFailCount. The counter resets on success or when the image spec (URL, checksum, format) changes:# disable the limit (previous behavior of unlimited retries) baremetal-operator --max-provisioning-retries=0 - Add webhooks to validate URLs (#3333) — New admission webhooks validate URLs before they are accepted.
- Implementation of the
HostClaimcontroller (#3406) — Adds a controller for the newHostClaimresource. - Add BMH and HNA types and cross-resource validation (#3338) — Introduces new types and validation across related resources.
- Add TLS curve preferences support (#3423) — Allows configuring preferred TLS curves.
- Implement structured logging pattern from CAPM3 (#2943) — Adopts the structured logging approach already used in CAPM3.
- Cache Ironic client and its status across reconciliations (#3343) — Reuses the Ironic client and status to reduce overhead between reconciles.
- Migrate to a go-plugin system for provisioners (#3166) — Provisioners are now loaded through a go-plugin based system.
- Reduce and simplify requeue delays in the Ironic provisioner (#3302) — Streamlines requeue timing for faster provisioning progress.
- Add
BareMetalSwitchCRD and controller for switch config generation (#3046) — Introduces a new CRD and controller to generate switch configuration. - Allow exiting the externally provisioned state (#3181) — Hosts can now leave the externally provisioned state.
- Validation webhook for
HostClaims(#3196) — Adds a validating webhook forHostClaimresources.
IPAM v1.14.0 Highlights
IPAM New Features
-
Add random IP allocation strategy to
IPPool(#1359) —IPPoolnow supports aspec.allocationStrategyfield. The default,sequential, allocates the first available address; the newrandomstrategy picks a random free address within a pool. The strategy is immutable after creation, andrandomrequires bounded pools (start/end or subnet) so the pool size can be computed:apiVersion: ipam.metal3.io/v1alpha1 kind: IPPool metadata: name: provisioning-pool spec: allocationStrategy: random # "sequential" (default) or "random" pools: - start: "192.168.0.10" end: "192.168.0.100"
Notes
As always, review the full release notes linked above before upgrading, and pay particular attention to the breaking changes in CAPM3 and BMO. If you run into issues or have questions, reach out on the Metal3 community channels.
Thanks to all our contributors who made these releases possible!