OpenKeel : la solution Cloud souveraine, française à portée européenne du groupe inherent Découvrir inherent

Composants · Calcul et capacités

Ironic

Bare metal : reste en Python amont, empaqueté dans un chart OpenKeel ; trop de configurations matérielles à tester.

Chart (Python amont) Chart Helm (Python amont)openkeel-ironic

Le 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.

Extrait de openkeel-ironic/README.md (en anglais).

API REST

131 opérations de l'API REST d'origine (routes et actions de corps), et leur état dans OpenKeel.

  • 131Service amont

Comment la compatibilité est testée

Ironic reste le service Python amont dans un chart Helm ; les tests vérifient qu'il fonctionne via le Keystone Go, le client standard et le Nova Go, sur une fausse machine Redfish.

De bout en bout sur un lab

Smoke test sur faux matériel Redfish

openstack baremetal via le Keystone Go enrôle une machine sushy-tools, la mène jusqu'à available, la déploie jusqu'à wait call-back et la dé-déploie.

Exécution

openkeel-ironic/test/smoke.sh depuis un pod client (python-ironicclient 6.3.0) sur un cluster kind.

Dernier résultat Vérifié (2026-10-31). Aucune machine ne démarre : IPA et active ne sont pas couverts.

Source : openkeel-docs/IRONIC-DESIGN.md

De bout en bout sur un lab

okadm install, lab et production

Le chart installé par okadm install --components ironic réussit le smoke test dans les deux modes de déploiement.

Exécution

okadm install en mode lab (kind, 3 nœuds) et en mode production (3 API, 2 conductors, Galera 3), puis smoke.sh sur chacun.

Dernier résultat Exécuté le 2026-11-02 ; la production sur kind a nécessité deux ajouts propres aux tests (contournement NetworkPolicy pour le DNS, automated_clean: false).

Source : openkeel-docs/IRONIC-DESIGN.md

Scénario

Serveur bare metal via Nova

openstack server create avec une flavor bare metal pilote Ironic via le Nova Go, et la suppression libère le nœud.

Exécution

openkeel-ironic/test/nova.sh sur un lab avec Nova et Ironic, Neutron flat et sushy-tools.

Dernier résultat Vérifié sur kind jusqu'à wait call-back ; machine réelle, IPA, config drive et active non vérifiés.

Source : openkeel-nova/docs/CONFORMANCE.md

Écarté de la réécriture

Ironic reste le Python amont dans un chart OpenKeel, déployé sans RabbitMQ, sans URL temporaires Swift ni scripts de démarrage Kolla.

Mécanique interne simplifiée

RPC RabbitMQ entre API et conductor

Pourquoi c'est écarté

Ironic n'a besoin de RabbitMQ pour rien d'autre ; json-rpc sur le port 8089 du conductor, avec des noms DNS par Pod issus du StatefulSet, fait le même travail.

Pourquoi la solution n'est pas affectée

L'API et le conductor se comportent comme en amont ; les notifications restent désactivées. JSON-RPC n'est pas encore chiffré, et une NetworkPolicy le limite à l'API.

Source : openkeel-docs/IRONIC-DESIGN.md

Mécanique interne simplifiée

URL temporaires Swift pour les images

Pourquoi c'est écarté

OpenKeel n'a pas de service Swift propre.

Pourquoi la solution n'est pas affectée

Les images et config drives sont servis par le serveur HTTP du conductor (image_download_source http, configdrive_use_object_store false) : le déploiement fonctionne donc toujours.

Source : openkeel-docs/IRONIC-DESIGN.md

Mécanique interne simplifiée

Scripts de démarrage Kolla et sudo

Repris par Kubernetes

Pourquoi c'est écarté

Les images Kolla sont épinglées par digest et leurs binaires s'exécutent directement, configurés depuis une ConfigMap, sans kolla_start ni sudo.

Pourquoi la solution n'est pas affectée

Même code Ironic ; l'API et le conductor tournent sans privilèges, avec une racine en lecture seule et sans capacités.

Source : openkeel-docs/IRONIC-DESIGN.md

Seul ce qui a été écarté par choix de conception figure ici ; le travail pas encore fait se trouve dans les Known gaps du docs/CONFORMANCE.md du module. Tous les modules

Interactions de Ironic

Vue « service » générée par la skill diagramme depuis le modèle d'OpenKeel.

Diagramme openkeel-ironic.svg Plein écran
Les 8 interactions du modèle
DeVersProtocoleQuoi
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

Spécifications