Maintenance Contract Evolution
@adracus ya está trabajando en esto.
Desde el 21/7/2026.
Evaluación
Este issue todavía no se ha evaluado.
Descripción
Summary
Maintenance on bare metal servers is expressed today via the ServerMaintenance CRD owned by metal-operator, driven by labels and annotations on the Server (metal.ironcore.dev/maintenance-{needed,requested,approved,reason}) combined with ServerMaintenanceSpec.Policy (OwnerApproval vs. Enforced). It works, but it is stringly-typed and leaks platform
maintenance into the core server lifecycle. There is no first-class cordon, no negotiated drain/eviction handshake between Server and ServerClaim, no fleet-wide rate-limiting of concurrent evictions, the BMC/BIOS update controllers sit next to claim/availability, and the Gardener / CAPI drain handshake lives in the CCM (the wrong layer).
The outcome we want is a first-class, typed maintenance contract on Server and ServerClaim (cordon, announce, approve, disruption budget), the maintenance machinery decoupled into the metal-maintenance-operator, a single controlled path for booting servers to a chosen image, and a clean upstream integration point for CAPI / MCM.
Scope
In Scope
- Cordon on
Server(WS 1). A first-class, typed "do not place new claims here" signal. Foundation for the rest. - Typed announce / approve + disruption budget (WS 2). Replace the label/annotation flow with a typed contract on
ServerandServerClaim, plus fleet-wide rate-limiting of concurrent evictions. - Move
ServerMaintenancetometal-maintenance-operator(WS 3). Decouple platform maintenance from the core server lifecycle. - Boot tool (WS 4). A single controlled path for booting a
Serverto a chosen image (maintenance OS, diagnostics, sanitization). - Move
BMC*/BIOS*controllers (WS 5). Firmware / settings / kernel work moves alongsideServerMaintenance. - CAPI / MCM integration (WS 6). Upstream actors participate in the drain/approve handshake via the typed contract, replacing today's CCM-side logic.
- Enhancement proposals. Each workstream lands a written proposal in
ironcore-dev/enhancementsbefore implementation.
Out of Scope
- Redesigning the
Serverstate machine (Initial -> Discovery -> Available -> Reserved). Maintenance stays an overlay. - Replacing existing in-tree
ServerMaintenanceusage in a single cut-over. A deprecation window is expected. - A single-cut migration of CCM logic. CCM and the new path coexist during the deprecation window.
Responsible Areas
- Metal Automation
- Gardener Extension
- Documentation
Contributors
- @adracus
- @afritzler
Acceptance Criteria
-
Cordon (WS 1)
- Enhancement proposal landed.
- Typed cordon field on
Server(no longer label/annotation driven). - Scheduling / claim placement honors the cordon signal.
-
Typed announce / approve + disruption budget (WS 2)
- Enhancement proposal landed.
- Typed announce / approve fields on
ServerandServerClaimreplace themetal.ironcore.dev/maintenance-*labels and annotations. - Deprecation path documented for
ServerMaintenanceSpec.Policy(OwnerApproval/Enforced).
-
Move
ServerMaintenance(WS 3)-
ServerMaintenanceCRD and controller live inmetal-maintenance-operator. - Migration path for existing
ServerMaintenanceobjects.
-
-
Boot tool (WS 4)
- Enhancement proposal landed.
- A single controlled path exists for booting a
Serverto a chosen image. - Boot-driven controllers can be moved cleanly on top of it.
-
Move
BMC*/BIOS*(WS 5)- BMC and BIOS update controllers live in
metal-maintenance-operator. - No remaining firmware / settings work in the claim / availability controllers of
metal-operator.
- BMC and BIOS update controllers live in
-
CAPI / MCM integration (WS 6)
- CAPI providers / Gardener MCM participate in the drain / approve handshake via the typed contract.
- CCM-side drain logic has a documented deprecation path; CCM and the new path coexist during the window.
-
Common
- Suggested order honored: WS 1 (cordon) -> WS 2 (announce/approve + DB) -> WS 4 (boot tool) -> WS 3 (move
ServerMaintenance) || WS 5 (moveBMC*/BIOS*). WS 6 (CAPI / MCM) runs on its own timeline. - Cross-repo coordination plan for WS 3, 5, 6 (PR ordering, releases, chart version pinning).
- Long-lived bound claims with no upstream consumer have a defined approval path.
- Suggested order honored: WS 1 (cordon) -> WS 2 (announce/approve + DB) -> WS 4 (boot tool) -> WS 3 (move
Action Items
- Assign labels (e.g.,
area/metal-automation,kind/design) - Set milestone
- Open one tracking issue per workstream (1-6)
- Add this issue to the
Roadmapproject board
- Lenguaje dominante
- Shell
- Estrellas
- 1
- Forks
- 1
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de ironcore-dev/roadmap
-
Clean up IronCore repoQuizá libre de nuevo @lukasfrank la tomó hace 54 días y no hay ningún pull request abierto. Abiertoarea/iaas kind/roadmap
ironcore-dev/roadmap#129 · 1 asignado ·
-
area/compute area/iaas kind/roadmap
Dificultad 5/5 Más de una semana Aptitud para principiantes 30/100
ironcore-dev/roadmap#128 ·
-
NAT64/NAT46 with High Performance and FlexibilityQuizá libre de nuevo @byteocean la tomó hace 74 días y no hay ningún pull request abierto. Abiertoarea/networking kind/roadmap
ironcore-dev/roadmap#126 · 1 asignado ·
-
Observability Specification for IronCore componentsQuizá libre de nuevo @peanball la tomó hace 103 días y no hay ningún pull request abierto. Abiertoarea/product kind/roadmap
ironcore-dev/roadmap#123 · 1 asignado ·
-
IronCore DNS Service (static / manually configured entries)Quizá libre de nuevo @peanball la tomó hace 107 días y no hay ningún pull request abierto. Abiertoarea/iaas area/ironcore-api area/networking kind/roadmap
ironcore-dev/roadmap#122 · 1 asignado ·
Todos los issues de ironcore-dev/roadmap
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
Los mantenedores suelen responder en 1 día
-
Update sonic-namespace to 6.31.0Abiertopackage-update
Dificultad 2/5 1-3 horas Aptitud para principiantes 77/100
Los mantenedores suelen responder en 1 día
-
Isha NarulaAbierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 72/100
dataplat/DataSpeakers#178 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
btclib-org/claude-process#341 ·
-
command: start distro: Debian engine: null game: Teamspeak 3 reproducible: always severity: low type: bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
GameServerManagers/LinuxGSM#5193 ·
Los mantenedores suelen responder en 1 día