OpenKeel implementation in Go of OpenStack keystone (keystone-api), generated from the reverse-specification of branch stable/2026.2 by the generate-go-from-spec skill. It replaces the Python service without its clients noticing: same routes, status codes, error bodies, microversions and policies. What is reproduced and what differs is in docs/CONFORMANCE.md; the security checklist is in docs/SECURITY.md.
Go module: github.com/openkeel/openkeel-keystone
Binaries: keystone-api (API on port 5000, health and metrics on 9090) and keystone-customers (the controller of the OpenKeelCustomer resources, below)
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-keystone/README.md (auf Englisch).
REST-API
259 Operationen der Original-REST-API (Routen und Body-Aktionen) und ihr Status in OpenKeel.
Die aufgezeichneten Unit-Test-Austausche von Python-Keystone werden gegen den Go-Dienst wiedergegeben; das Go-Keystone wird zudem von Skyline, den CLIs und allen anderen Diensten im Lab genutzt.
Replay aufgezeichneter Austausche
E2E-Replay der aufgezeichneten Austausche
Die aus den Tests von Python-Keystone aufgezeichneten Austausche liefern vom Go-Dienst denselben Status und Body.
Ausführung
make e2e; Bericht in test/e2e/report.json, akzeptierte Unterschiede in test/e2e/known-differences.txt.
Letztes Ergebnis 7345 / 8896 Anfragen identisch im letzten Bericht (1489 Dateien).
Quelle: openkeel-keystone/test/e2e/report.json
Unit- und Golden Tests
Unit-Tests und portierte s3tokens-Vektoren
Unit-Tests, einschließlich der von Hand portierten EC2- und S3-Signaturvektoren aus test_contrib_s3_core.
Ausführung
make test (vet und Race-Detektor); internal/keystone/ec2sign_test.go, internal/api/s3tokens_test.go.
Quelle: openkeel-keystone/docs/CONFORMANCE.md
Client-Vertrag
Skyline gegen das Go-Keystone
Anmeldung, Profil, Policies, Projektwechsel, Regionen, Domänen, Endpoints, Text bei falschem Passwort und Abmeldung funktionieren wie gegen Python.
Ausführung
Live-Durchlauf von openkeel-skyline gegen ein mit MariaDB befülltes Go-Keystone.
Letztes Ergebnis System-Admin-Policies: 1 817 / 1 860 erlaubt, wie Python gegen seinen Fake.
Quelle: openkeel-skyline/docs/CONFORMANCE.md
End-to-End in einem Lab
Smoke Test des Labs
Admin-Tokens mit Projekt- und System-Scope und ein Katalog mit allen erwarteten Diensten, genutzt von den Prüfungen der anderen Dienste.
Ausführung
make lab-smoke führt labctl smoke im Lab-Cluster aus.
Quelle: openkeel-lab/README.md
Im Rewrite ausgelassen
Keystone behält seine API und verzichtet auf die oslo-Service-Infrastruktur und das Benachrichtigungsformat basic; das Auditing erfolgt stattdessen mit CADF-Ereignissen.
Vereinfachte interne Mechanik
Benachrichtigungsformat basic
Warum es ausgelassen wurde
Nur CADF, der Upstream-Standard, ist implementiert; Ereignisse laufen über den Audit-Emitter (JSON auf stdout, oslo.messaging, wenn aktiviert).
Warum die Lösung nicht beeinträchtigt ist
Die Einstellung basic protokolliert eine Warnung, und CADF wird gesendet. Kein OpenKeel-Dienst nutzt die basic-Payloads von Keystone.
Quelle: openkeel-keystone/docs/CONFORMANCE.md
Von der Cloud-Native-Plattform übernommen
Logging in Dateien, osprofiler, Healthcheck, CORS
Übernommen von Kubernetes-Probes, OpenTelemetry, Ingress
Warum es ausgelassen wurde
Logs gehen als JSON auf stdout, Traces an OpenTelemetry, der Zustand an Kubernetes-Probes und CORS an den Ingress.
Warum die Lösung nicht beeinträchtigt ist
Betreiber nutzen die Werkzeuge des Clusters; die Identity-API bleibt unverändert.
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
Keystone-Interaktionen
Dienstansicht, vom Diagramm-Skill aus dem OpenKeel-Modell generiert.