OpenKeel: la solución Cloud soberana, francesa y de alcance europeo, del grupo inherent Descubrir inherent

Componentes · Cómputo y capacidad

Ironic

Bare metal: sigue siendo Python upstream, empaquetado en un chart de OpenKeel; demasiadas configuraciones de hardware que probar.

Chart (Python upstream) Chart de Helm (Python upstream)openkeel-ironic

El módulo

Upstream OpenStack Ironic (Python, 2026.2) in OpenKeel: a Helm chart, not a Go rewrite. Design, decisions and evidence are in openkeel-docs/IRONIC-DESIGN.md.

Extracto de openkeel-ironic/README.md (en inglés).

API REST

131 operaciones de la API REST original (rutas y acciones de cuerpo) y su estado en OpenKeel.

  • 131Servicio upstream

Cómo se prueba la compatibilidad

Ironic sigue siendo el servicio Python upstream en un chart de Helm; los tests comprueban que funciona a través del Keystone en Go, el cliente estándar y el Nova en Go, sobre una máquina Redfish simulada.

De extremo a extremo en un laboratorio

Smoke test sobre hardware Redfish simulado

openstack baremetal a través del Keystone en Go da de alta una máquina sushy-tools, la lleva hasta available, la despliega hasta wait call-back y revierte el despliegue.

Ejecución

openkeel-ironic/test/smoke.sh desde un pod cliente (python-ironicclient 6.3.0) en un clúster kind.

Último resultado Verificado (2026-10-31). Ninguna máquina arranca: IPA y active no están cubiertos.

Fuente: openkeel-docs/IRONIC-DESIGN.md

De extremo a extremo en un laboratorio

okadm install, laboratorio y producción

El chart instalado con okadm install --components ironic supera el smoke test en ambos modos de despliegue.

Ejecución

okadm install en modo laboratorio (kind, 3 nodos) y en modo producción (3 API, 2 conductors, Galera 3), y luego smoke.sh en cada uno.

Último resultado Ejecutado el 2026-11-02; la producción en kind requirió dos añadidos exclusivos de las pruebas (solución alternativa de NetworkPolicy para DNS, automated_clean: false).

Fuente: openkeel-docs/IRONIC-DESIGN.md

Escenario

Servidor bare metal a través de Nova

openstack server create con un flavor bare metal controla Ironic a través del Nova en Go, y la eliminación libera el nodo.

Ejecución

openkeel-ironic/test/nova.sh en un laboratorio con Nova e Ironic, Neutron flat y sushy-tools.

Último resultado Verificado en kind hasta wait call-back; máquina real, IPA, config drive y active no verificados.

Fuente: openkeel-nova/docs/CONFORMANCE.md

Excluido del rewrite

Ironic sigue siendo el Python de upstream en un chart de OpenKeel, desplegado sin RabbitMQ, sin URL temporales de Swift ni scripts de arranque de Kolla.

Mecánica interna simplificada

RPC de RabbitMQ entre API y conductor

Por qué se excluyó

Ironic no necesita RabbitMQ para nada más; json-rpc en el puerto 8089 del conductor, con nombres DNS por Pod procedentes del StatefulSet, cumple la misma función.

Por qué la solución no se ve afectada

La API y el conductor se comportan como en upstream; las notificaciones siguen desactivadas. JSON-RPC aún no está cifrado, y una NetworkPolicy lo limita a la API.

Fuente: openkeel-docs/IRONIC-DESIGN.md

Mecánica interna simplificada

URL temporales de Swift para imágenes

Por qué se excluyó

OpenKeel no tiene un servicio Swift propio.

Por qué la solución no se ve afectada

Las imágenes y los config drives los sirve el servidor HTTP del conductor (image_download_source http, configdrive_use_object_store false), por lo que el despliegue sigue funcionando.

Fuente: openkeel-docs/IRONIC-DESIGN.md

Mecánica interna simplificada

Scripts de arranque de Kolla y sudo

Asumido por Kubernetes

Por qué se excluyó

Las imágenes de Kolla se fijan por digest y sus binarios se ejecutan directamente, configurados desde un ConfigMap, sin kolla_start ni sudo.

Por qué la solución no se ve afectada

Mismo código de Ironic; la API y el conductor se ejecutan sin privilegios, con una raíz de solo lectura y sin capacidades.

Fuente: openkeel-docs/IRONIC-DESIGN.md

Aquí solo figura lo que se excluyó por diseño; el trabajo aún no realizado está en los Known gaps del docs/CONFORMANCE.md del módulo. Todos los módulos

Interacciones Ironic

Vista de servicio generada por la skill de diagramas a partir del modelo de OpenKeel.

Diagrama openkeel-ironic.svg Pantalla completa
Las 8 interacciones del modelo
DeAProtocoloQué
Nova conductor + schedulerIronic APIAPI RESTbare metal flavors: provision nodes
Nova compute agentIronic APIAPI RESTnodes → Placement inventory (planned)
Ironic APIIronic conductorAPI RESTJSON-RPC deploy/clean/power
Ironic conductorBMCs and switchesAPI RESTRedfish power, virtual media
Ironic conductorironic-python-agentAPI RESTagent API: write image, clean, inspect
ironic-python-agentIronic APIAPI RESTlookup, heartbeat
Ironic conductorGlanceAPI RESTimage download (cache)
Ironic conductorNeutron serverAPI RESTprovisioning/tenant ports

Especificaciones