ServerMaintenance
ServerMaintenance
represents a maintenance operation for a physical server. It transitions a Server
from its
current operational state (e.g., Available/Reserved) into a Maintenance state. Each ServerMaintenance
object tracks
the lifecycle of a maintenance task, ensuring servers are properly taken offline, updated, and restored.
Key Points
ServerMaintenance
is namespaced and may represent various maintenance operations.- Only one
ServerMaintenance
can be active perServer
at a time. Others remain pending. - When the active
ServerMaintenance
completes, the next pending one (if any) starts. - If no more maintenance tasks are pending, the
Server
returns to its previous operational state. policy
determines how maintenance starts:- OwnerApproval: Requires a label (e.g.,
ok-to-maintenance: "true"
) on theServerClaim
. - Enforced: Does not require owner approval.
- OwnerApproval: Requires a label (e.g.,
Workflow
- A separate operator (e.g.,
foo-maintenance-operator
) or user creates aServerMaintenance
resource referencing a specificServer
. - If a
Server
is claimed, a labelmetal.ironcore.dev/maintanence-needed: "true"
is added to theServerClaim
. - If
policy
isOwnerApproval
and nook-to-maintenance
label is set on theServerClaim
, theServerMaintenance
stays inPending
. TheServer
also remains unchanged. - If
policy
isOwnerApproval
and theok-to-maintenance
label is present (or ifalwaysPerformMaintenance
is enabled), or if the policy isEnforced
, themetal-operator
transitions theServer
intoMaintenance
and updates theServerMaintenance
state accordingly. - The
ServerMaintenanceReconciler
creates aServerBootConfiguration
out of theServerMaintenance
'sServerBootConfigurationTemplate
and applies it to theServer
. The power state of theServer
can set by providing theServerPower
field in theServerMaintenance
object. Once the maintenance task is complete, the maintenance operator sets theServerMaintenance
state toCompleted
. - (optional) In case no
ServerBootConfigurationTemplate
is provided, the maintenance operator powers off theServer
, applies aServerBootConfiguration
(if needed), performs the maintenance, and setsServerMaintenance
toCompleted
. - The
metal-operator
transitions theServer
back to its prior state. If additionalServerMaintenance
objects are pending, the next one is processed.
Example
apiVersion: metal.ironcore.dev/v1alpha1
kind: ServerMaintenance
metadata:
name: bios-update
namespace: ops
annotations:
metal.ironcore.dev/reason: "BIOS update"
spec:
policy: OwnerApproval
serverRef:
name: server-foo
serverPower: On # or Off
serverBootConfigurationTemplate:
name: bios-update-config
spec:
image: "bios-update-image"
serverRef:
name: server-foo
ignitionSecretRef:
name: bios-update-ignition
status:
state: Pending
If policy: OwnerApproval
and no ok-to-maintenance
label exists on the ServerClaim
, this ServerMaintenance
remains Pending
, and the Server
stays as is. Once the label is added (or if the operator setting
alwaysPerformMaintenance
is enabled), the metal-operator
transitions the Server
to Maintenance
, and the
maintenance operator performs the maintenance task.