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

Komponenten · Dienste und Orchestrierung

EC2-API

EC2-Query-API (97 Aktionen), SigV2- und SigV4-Signaturen von Keystone geprüft: AWS CLI, boto3, Terraform.

Go Nova, Neutron, Cinderopenkeel-ec2-api

Das Modul

OpenKeel implementation in Go of OpenStack ec2-api (ec2-api), generated from the reverse-specification of branch 17.0.0 by the generate-go-from-spec skill. It replaces the Python service without its clients noticing: the same EC2 Query API (97 actions of ec2-api 17.0.0, SigV2 and SigV4 verified by Keystone ec2tokens), the same XML documents and error codes, the same EC2 identifiers and the same ec2api database. What is reproduced and what differs is in docs/CONFORMANCE.md; the security checklist is in docs/SECURITY.md.

  • Clients: the AWS CLI and boto3, Terraform's AWS provider with a custom endpoint, euca2ools/boto2
  • Backends: Nova, Neutron (with VPNaaS for the VPN actions), Cinder and Glance, called with the caller's token; the EC2 IDs and tags are in MariaDB (items, tags). Not included: ec2-api-metadata (Nova's metadata service or cloud-init serves instances) and ec2-api-s3 (Swift s3api) — docs/CONFORMANCE.md D9, D10
  • Go module: github.com/openkeel/openkeel-ec2-api
  • Binary: ec2-api (API on port 8788, health and metrics on 9090)
  • Configuration: YAML, see config/config.example.yaml
  • Setting up a development environment, the database and the tests: docs/GETTING-STARTED.md
  • Database schema, migrations and upgrades: docs/DATABASE.md

Auszug aus openkeel-ec2-api/README.md (auf Englisch).

API-Aktionen

100 Aktionen der Original-API und ihr Status in OpenKeel.

  • 100Implementiert

Wie die Kompatibilität getestet wird

Die eingestellte ec2-api wird gegen ihr aufgezeichnetes Verhalten und vor allem gegen die echten AWS-Clients geprüft: die AWS CLI und den AWS-Provider von Terraform.

Replay aufgezeichneter Austausche

Aufgezeichnete Validierungsfehler und Sonden

Aufgezeichnete Fehleraustausche liefern denselben Status, EC2-Code und dieselbe Meldung; Dispatcher-Sonden vergleichen Klartextfehler und Antwortwurzeln.

Ausführung

test/e2e/exchanges_test.go und test/e2e/probes_test.go.

Letztes Ergebnis 40 / 40 identisch; Sonden: 9 bytegleich, 6 bewusst abweichend (2026-11-02).

Quelle: openkeel-ec2-api/docs/CONFORMANCE.md

Szenario

Szenario aller Aktionsfamilien

Jede Aktionsfamilie läuft, und die Antwortstrukturen werden mit den aus Python aufgezeichneten verglichen.

Ausführung

test/e2e/scenario_test.go.

Letztes Ergebnis 97 / 97 Aktionen bestanden; 93 Antwortstrukturen geprüft, kein unerklärtes Element (2026-11-02).

Quelle: openkeel-ec2-api/docs/CONFORMANCE.md

Client-Vertrag

AWS CLI v2

Die echte AWS CLI funktioniert für 42 Aktionen, wobei SigV4 mit dem Algorithmus von keystoneclient verifiziert wird.

Ausführung

test/awscli (Build-Tag awscli), AWS CLI v2 2.18.

Letztes Ergebnis Bestanden (2026-11-02).

Quelle: openkeel-ec2-api/docs/CONFORMANCE.md

Client-Vertrag

Terraform-AWS-Provider

Terraform legt ein VPC, ein Subnetz, ein Gateway, Routen, eine Sicherheitsgruppe, ein Schlüsselpaar, eine Instanz, eine EIP und ein Volume an, plant danach keine Änderungen und baut alles wieder ab.

Ausführung

test/terraform (Build-Tag terraform), Terraform 1.5.4 und hashicorp/aws 5.100.0, auf MariaDB.

Letztes Ergebnis Bestanden auf MariaDB (2026-11-02).

Quelle: openkeel-ec2-api/docs/CONFORMANCE.md

Nebenläufigkeit auf Galera

Nebenläufigkeit auf MariaDB Galera

Ein Standard-VPC und eine EC2-ID pro Server bei nebenläufigen Anfragen auf drei Knoten; Tag-Schreibvorgänge konvergieren.

Ausführung

test/galera (Build-Tag galera) auf einem Cluster mit 3 Knoten.

Letztes Ergebnis Bestanden, 3 Durchläufe, kein 5xx (2026-11-02).

Quelle: openkeel-ec2-api/docs/CONFORMANCE.md

Tempest

ec2api-tempest-plugin

Das Upstream-Tempest-Plugin des Projekts.

Ausführung

Zusammen mit dem Projekt upstream eingestellt.

Letztes Ergebnis Nicht ausgeführt.

Quelle: openkeel-ec2-api/docs/CONFORMANCE.md

Im Rewrite ausgelassen

Die EC2-API (upstream 2024 eingestellt) behält ihre Aktionen, verzichtet aber auf ihren eigenen S3-Server und Metadatendienst, die die Plattform bereits bereitstellt.

Von der Cloud-Native-Plattform übernommen

ec2-api-s3-Server

Übernommen von Rook-Ceph RGW

Warum es ausgelassen wurde

Der Python-S3-Server ist nicht authentifiziert; Objektspeicher mit S3 kommt von der Plattform.

Warum die Lösung nicht beeinträchtigt ist

S3-Clients nutzen den RGW-Endpoint mit EC2-Zugangsdaten von Keystone (okadm --ceph-s3).

Quelle: openkeel-ec2-api/docs/CONFORMANCE.md

Von der Cloud-Native-Plattform übernommen

ec2-api-metadata-Dienst

Übernommen von KubeVirt (cloud-init)

Warum es ausgelassen wurde

Instanzen erhalten ihre Metadaten über die Datasources OpenStack und NoCloud von cloud-init (Config Drive).

Warum die Lösung nicht beeinträchtigt ist

Gäste starten und konfigurieren sich wie gewohnt; nur die EC2-Kennungen (i-, ami-, r-) fehlen in ihren Metadaten.

Quelle: openkeel-ec2-api/docs/CONFORMANCE.md

Vereinfachte interne Mechanik

Dateisperre pro Host für das Standard-VPC

Warum es ausgelassen wurde

Mehrere Repliken und Multi-Writer-Galera erfordern eine clusterweite Sperre: eine Datenbankzeile mit Ablaufzeit.

Warum die Lösung nicht beeinträchtigt ist

Standard-VPCs werden weiterhin einmal pro Projekt angelegt, jetzt sicher über Repliken hinweg.

Quelle: openkeel-ec2-api/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

EC2-API-Interaktionen

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

Diagramm openkeel-ec2-api.svg Vollbild
Die 5 Interaktionen des Modells
VonNachProtokollWas
EC2 APIKeystoneREST-APIec2tokens (SigV4)
EC2 APINova APIREST-APIinstances
EC2 APINeutron serverREST-APIVPC, subnets, security groups
EC2 APICinder APIREST-APIvolumes, snapshots
EC2 APIGlanceREST-APIAMIs

Spezifikationen