OpenKeel: die souveräne französische Cloud-Lösung mit europäischer Reichweite der inherent-Gruppe inherent entdecken

Komponenten · Netzwerk

Octavia (OVN)

Die Octavia-v2-API, bereitgestellt von neutron-api; OVN-Load-Balancer, standardmäßig aktiviert.

Go OVN-Load-Balanceropenkeel-ovn-octavia-provider

Das Modul

OpenKeel implementation in Go of OpenStack ovn-octavia-provider, generated from the reverse-specification of branch stable/2026.2 by the generate-go-from-spec skill. It is the OVN load-balancing back end of OpenKeel's Octavia API: each load balancer becomes rows of the OVN Northbound Load_Balancer table, with the same keys and statuses as the Python provider, so that clients, Neutron and existing OVN databases see no difference. What is reproduced and what differs is in docs/CONFORMANCE.md; the security checklist is in docs/SECURITY.md.

okadm install deploys it by default. The public Octavia v2 API lives in the neutron-api binary of openkeel-neutron, under /load-balancer, and Neutron is the only caller of the driver API. The provider sends status updates and reads objects back over HTTP, to Neutron's admin port. See docs/DEPLOYMENT.md.

client ──/load-balancer/v2/lbaas──> neutron-api ──HTTP, bearer token──> ovn-octavia-provider ──OVSDB──> OVN NB, SB
                                        ^                                    │  │  └──REST──> Neutron, Keystone
                                        └──/internal/lbaas :9878, token──────┘  │
                                                                                └────events, maintenance (OVSDB lock neutron_ovn_octavia_event_lock)

The Python shim and the octavia-driver-agent sidecar (off by default) stay in this project only to take over from a Python Octavia; they are not part of OpenKeel's normal path.

  • Go module: github.com/openkeel/openkeel-ovn-octavia-provider
  • Binaries: ovn-octavia-provider (driver API on port 9877, health and metrics on 9090) and octavia-ovn-db-sync-util
  • Python shim, to take over from a Python Octavia: shim/, entry point octavia.api.drivers = ovn
  • Configuration: YAML, see config/config.example.yaml
  • State: none of its own, the OVN NB database is the database, so there are no migrations
  • Development environment and tests: docs/GETTING-STARTED.md

Auszug aus openkeel-ovn-octavia-provider/README.md (auf Englisch).

REST-API

297 Operationen der Original-REST-API (Routen und Body-Aktionen) und ihr Status in OpenKeel. Bedient von neutron-api (openkeel-neutron, internal/lbaas).

  • 297Implementiert

Wie die Kompatibilität getestet wird

Der Go-Provider wird Schritt für Schritt neben dem echten Python-Provider auf demselben OVN ausgeführt und anschließend mit octavia-tempest-plugin und echtem Traffic im Lab geprüft.

Differenzieller Test

Differenzieller Vergleich mit dem Python-Provider

Dieselben 35 Schritte erzeugen mit dem Python- und dem Go-Provider auf einem echten OVN dieselben OVN-Zeilen und Statusaktualisierungen.

Ausführung

test/ovn/differential/record.py führt den Python-Treiber aus; TestDifferential spielt dieselben Schritte auf Go ab und vergleicht.

Letztes Ergebnis 35 / 35 Schritte identisch, abgesehen von einem bewussten Statusunterschied beim Health Monitor (2026-10-31).

Quelle: openkeel-ovn-octavia-provider/docs/CONFORMANCE.md

Unit- und Golden Tests

Unit-Tests und Vektoren

VIP-Framing-Vektoren, Ablehnungsmeldungen mit exaktem Text und Status sowie die Treiberlogik entsprechen dem Python-Provider.

Ausführung

go test ./... auf einem In-Memory-Northbound mit dem echten Schema, auch unter -race.

Letztes Ergebnis 96 bestanden, 0 fehlgeschlagen (2026-11-01); vips-Vektoren 57 / 57.

Quelle: openkeel-ovn-octavia-provider/docs/CONFORMANCE.md

Unit- und Golden Tests

Echtes OVN

Von ovn-northd erzeugte Flows und Service_Monitor-Zeilen, Monitor-Ereignisse, Lock und Synchronisierung verhalten sich wie erwartet.

Ausführung

make ovn-test gegen OVN 25.03 (Schema 7.11.0).

Letztes Ergebnis 6 bestanden.

Quelle: openkeel-ovn-octavia-provider/docs/CONFORMANCE.md

Tempest

octavia-tempest-plugin, Provider ovn

Die Upstream-API- und Szenariotests von Octavia bestehen mit den Einstellungen des Upstream-OVN-Jobs über die API in neutron-api.

Ausführung

octavia-tempest-plugin mit provider=ovn auf dem Lab-Profil dataplane, echte Keystone-Tokens.

Letztes Ergebnis API 82 bestanden, 0 fehlgeschlagen; Szenario 22 bestanden, 0 fehlgeschlagen (2026-11-01). Traffic-Tests (56) nicht ausgeführt.

Quelle: openkeel-neutron/docs/CONFORMANCE.md

End-to-End in einem Lab

Echter Traffic mit echten Gästen

VIPs aus einem anderen Subnetz und über eine Floating IP erreichbar, Member mit Floating IPs, OVN-Health-Checks entfernen einen gestoppten Gast.

Ausführung

openkeel-lab/scripts/dataplane-test.sh (78 Prüfungen) mit dem Go-Neutron.

Letztes Ergebnis Bestanden (2026-11-01).

Quelle: openkeel-ovn-octavia-provider/docs/CONFORMANCE.md

Client-Vertrag

Shim in einem echten octavia-api

Der Übernahmepfad: der Go-Provider hinter einem echten Python-octavia-api und Driver Agent.

Ausführung

Socket-Framing nur gegen einen Platzhalter getestet.

Letztes Ergebnis Nicht ausgeführt.

Quelle: openkeel-ovn-octavia-provider/docs/CONFORMANCE.md

Im Rewrite ausgelassen

Der OVN-Provider wird zu einem Go-Dienst, den die Octavia-API in neutron-api über HTTP aufruft, ohne Laden von Python-Treibern, Driver Agent oder Neutron-Sync-Plugin.

Vereinfachte interne Mechanik

Laden von Python-Providern und Driver Agent

Warum es ausgelassen wurde

neutron-api ist der einzige Aufrufer: Er ruft den Treiber über HTTP auf und empfängt die Statusmeldungen auf seinem Admin-Port statt über die Unix-Sockets des Driver Agents.

Warum die Lösung nicht beeinträchtigt ist

Load Balancer erreichen ACTIVE über die öffentliche Octavia-API. Ein kleiner Python-Shim existiert nur, um von einem Python-Octavia zu übernehmen.

Quelle: openkeel-ovn-octavia-provider/docs/CONFORMANCE.md

Vereinfachte interne Mechanik

Octavia-Plugin von neutron-ovn-db-sync-util

Warum es ausgelassen wurde

Das Plugin gehört zum Python-Werkzeug von Neutron, das OpenKeel nicht ausliefert.

Warum die Lösung nicht beeinträchtigt ist

octavia-ovn-db-sync-util übernimmt die Reparatur der OVN-Load-Balancer-Zeilen.

Quelle: openkeel-ovn-octavia-provider/docs/CONFORMANCE.md

Upstream veraltet oder ungenutzt

Veraltete keystoneauth-Endpoint-Optionen

Warum es ausgelassen wurde

endpoint, endpoint_type und ca_certificates_file sind upstream veraltet; service_auth mit Secret-Dateien ersetzt sie.

Warum die Lösung nicht beeinträchtigt ist

Nur Konfiguration; der Provider erreicht Neutron auf dieselbe Weise.

Quelle: openkeel-ovn-octavia-provider/docs/CONFORMANCE.md

Hier ist nur aufgeführt, was bewusst ausgelassen wurde; noch nicht erledigte Arbeit steht in den Known gaps der docs/CONFORMANCE.md des Moduls. Alle Module

Octavia (OVN)-Interaktionen

Dienstansicht, vom Diagramm-Skill aus dem OpenKeel-Modell generiert.

Diagramm openkeel-ovn-octavia-provider.svg Vollbild
Die 5 Interaktionen des Modells
VonNachProtokollWas
Neutron serverOVN Octavia providerREST-APIOctavia driver API (:9877)
OVN Octavia providerNeutron serverREST-API/internal/lbaas status updates, ports, subnets
OVN Octavia providerKeystoneREST-APIservice token
OVN Octavia providerOVN Northbound DBOVSDBLoad_Balancer rows; events, maintenance (OVSDB lock)
OVN Octavia providerOVN Southbound DBOVSDBreads chassis, port bindings

Spezifikationen