OpenKeel: the sovereign French Cloud solution of the inherent group, with a European reach Discover inherent

Components · Compute and capacity

Ironic

Bare metal: stays upstream Python, packaged in an OpenKeel chart; too many hardware configurations to test.

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

The module

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.

Excerpt from openkeel-ironic/README.md (in English).

REST API

131 operations of the original REST API (routes and body actions), and their state in OpenKeel.

  • 131Upstream service

How compatibility is tested

Ironic stays the upstream Python service in a Helm chart; tests check that it works through Go Keystone, the standard client and Go Nova, on a fake Redfish machine.

End to end on a lab

Smoke test on fake Redfish hardware

openstack baremetal through Go Keystone enrols a sushy-tools machine, walks it to available, deploys to wait call-back and undeploys.

How it runs

openkeel-ironic/test/smoke.sh from a client pod (python-ironicclient 6.3.0) on a kind cluster.

Latest result Verified (2026-10-31). No machine boots: IPA and active are not covered.

Source: openkeel-docs/IRONIC-DESIGN.md

End to end on a lab

okadm install, lab and production

The chart installed by okadm install --components ironic passes the smoke test in both deployment modes.

How it runs

okadm install in lab mode (kind, 3 nodes) and production mode (3 API, 2 conductors, Galera 3), then smoke.sh on each.

Latest result Run on 2026-11-02; production on kind needed two test-only additions (DNS NetworkPolicy workaround, automated_clean: false).

Source: openkeel-docs/IRONIC-DESIGN.md

Scenario

Bare metal server through Nova

openstack server create with a bare metal flavor drives Ironic through Go Nova, and delete frees the node.

How it runs

openkeel-ironic/test/nova.sh on a lab with Nova and Ironic, Neutron flat and sushy-tools.

Latest result Verified on kind up to wait call-back; a real machine, IPA, the config drive and active not verified.

Source: openkeel-nova/docs/CONFORMANCE.md

Left out of the rewrite

Ironic stays upstream Python in an OpenKeel chart, deployed without RabbitMQ, Swift temporary URLs or the Kolla start-up scripts.

Internal machinery simplified

RabbitMQ RPC between API and conductor

Why it was left out

Ironic needs RabbitMQ for nothing else; json-rpc on the conductor's port 8089, with per-Pod DNS names from the StatefulSet, does the same job.

Why the solution is not affected

API and conductor behave as upstream; notifications stay off. JSON-RPC is not yet encrypted, and a NetworkPolicy limits it to the API.

Source: openkeel-docs/IRONIC-DESIGN.md

Internal machinery simplified

Swift temporary URLs for images

Why it was left out

OpenKeel has no Swift service of its own.

Why the solution is not affected

Images and config drives are served by the conductor's HTTP server (image_download_source http, configdrive_use_object_store false), so deployment still works.

Source: openkeel-docs/IRONIC-DESIGN.md

Internal machinery simplified

Kolla start-up scripts and sudo

Taken over by Kubernetes

Why it was left out

The Kolla images are pinned by digest and their binaries run directly, configured from a ConfigMap, without kolla_start or sudo.

Why the solution is not affected

Same Ironic code; the API and conductor run unprivileged with a read-only root and no capabilities.

Source: openkeel-docs/IRONIC-DESIGN.md

Only what was left out by design is listed here; the work not done yet is in the Known gaps of the module's docs/CONFORMANCE.md. Every module

Ironic interactions

Service view generated by the diagram skill from the OpenKeel model.

Diagram openkeel-ironic.svg Full screen
The 8 interactions of the model
FromToProtocolWhat
Nova conductor + schedulerIronic APIREST APIbare metal flavors: provision nodes
Nova compute agentIronic APIREST APInodes → Placement inventory (planned)
Ironic APIIronic conductorREST APIJSON-RPC deploy/clean/power
Ironic conductorBMCs and switchesREST APIRedfish power, virtual media
Ironic conductorironic-python-agentREST APIagent API: write image, clean, inspect
ironic-python-agentIronic APIREST APIlookup, heartbeat
Ironic conductorGlanceREST APIimage download (cache)
Ironic conductorNeutron serverREST APIprovisioning/tenant ports

Specifications