Skip to content

BIOSSettingsSet

BIOSSettingsSet is the fleet-scoped controller input for creating and managing many BIOSSettings objects from one template.

What It Does

  • Selects Server objects using spec.serverSelector.
  • Creates one child BIOSSettings per selected server.
  • Keeps child specs aligned with spec.biosSettingsTemplate.
  • Removes orphaned children when servers no longer match the selector.
  • Aggregates rollout progress into status counters.

Spec Reference

FieldRequiredDescription
spec.serverSelectorYesKubernetes label selector for target servers.
spec.biosSettingsTemplate.versionYesDesired BIOS version gate passed to each child BIOSSettings.
spec.biosSettingsTemplate.settingsFlow[]NoOrdered settings flow copied into each child.
spec.biosSettingsTemplate.serverMaintenancePolicyNoMaintenance policy copied into each child.

Status Fields In Detail

FieldWhat it meansHow to use it for debugging
status.fullyLabeledServersCurrent server count matching selector.If this is not expected, verify selector labels first.
status.availableBIOSSettingsOwned child BIOSSettings count.If lower than selected servers, child creation is lagging/failing.
status.pendingBIOSSettingsChildren not started yet.High value usually means prerequisites blocked in many children.
status.inProgressBIOSSettingsChildren actively reconciling.Stable high value may indicate shared bottleneck (maintenance approvals, BMC access).
status.completedBIOSSettingsChildren in terminal success (Applied).Use to track rollout progress percentage.
status.failedBIOSSettingsChildren in terminal failure.Non-zero means inspect failed child objects immediately.

Detailed Reconcile Diagram

Detailed Workflow (All Main Cases)

  1. Selector evaluation:
  • Build target server set from spec.serverSelector.
  • Any label drift immediately changes desired child set.
  1. Child creation path:
  • For each selected server without owned child, create BIOSSettings.
  • If server already references a valid external BIOSSettings, creation is skipped.
  1. Orphan cleanup path:
  • Child whose serverRef is no longer selected is deleted.
  • Exception: child in InProgress is retained until safe to remove.
  1. Template propagation path:
  • Non-InProgress children are patched from set template.
  • InProgress children are intentionally skipped to avoid disruptive mid-flight mutation.
  1. Aggregation and requeue:
  • Status counters are recalculated from all owned children.
  • Controller requeues when desired and observed topology are not yet aligned.

Troubleshooting Guide

SymptomWhere to checkLikely causeAction
fullyLabeledServers > availableBIOSSettingsset status + eventsChild creation failures or API conflictsCheck controller logs and child create permissions/errors.
High pendingBIOSSettings for long timechild BIOSSettings status/conditionsShared prerequisites blocked (version/maintenance/BMC access)Inspect one pending child deeply; resolve root blocker globally.
failedBIOSSettings increasesfailed child objectsInvalid template settings or unsupported vendor keysFix template and allow children to retry.
Selector changed but old children remainchild statesOrphans are still InProgress and protectedWait for terminal state or investigate stuck in-progress child.

Example

yaml
apiVersion: metal.ironcore.dev/v1alpha1
kind: BIOSSettingsSet
metadata:
  name: biossettingsset-sample
spec:
  biosSettingsTemplate:
    version: P79 v1.45 (12/06/2017)
    serverMaintenancePolicy: OwnerApproval
    settingsFlow:
      - name: boot-profile
        priority: 10
        settings:
          BootMode: Uefi
  serverSelector:
    matchLabels:
      manufacturer: Contoso
EU and German government funding logos

Funded by the European Union – NextGenerationEU.

The views and opinions expressed are solely those of the author(s) and do not necessarily reflect the views of the European Union or the European Commission. Neither the European Union nor the European Commission can be held responsible for them.