Skip to main content

Gateway Abstraction Layer (GAL) - Python Edition

Tests Docker Build PyPI version Python Version License Downloads

Gateway-Abstraktionsschicht - Provider-agnostisches API-Gateway-Konfigurations- und Transformationssystem in Python.

Definiere deine API-Gateway-Konfiguration einmal und deploye sie auf Envoy, Kong, APISIX, Traefik, Nginx, HAProxy oder anderen Gateways - ohne Vendor Lock-in.

Features

  • Einheitliche YAML-Konfiguration für mehrere API-Gateway-Provider
  • Unterstützung für 6 Provider: Envoy, Kong, APISIX, Traefik, Nginx, HAProxy
  • Automatische Payload-Transformationsgenerierung
  • REST- und gRPC-Service-Unterstützung
  • Default-Wert-Injektion
  • Berechnete Felder (UUIDs, Zeitstempel)
  • Feldvalidierung
  • Strukturiertes Logging mit konfigurierbaren Log-Levels
  • Reines Python - kein Go erforderlich!
  • CI/CD Ready - GitHub Actions Workflows integriert
  • Umfassende Tests - 464 Tests mit 89% Coverage
  • Traffic Management - Rate Limiting, Circuit Breaker, Health Checks & Load Balancing
  • Sicherheit - Authentication (Basic, API Key, JWT), Header-Manipulation, CORS
  • WebSocket-Unterstützung - Echtzeit bidirektionale Kommunikation (alle 6 Provider)
  • Body-Transformation - Request/Response Body-Manipulation mit dynamischen Feldern
  • Timeout & Retry - Verbindungs-/Lese-/Sende-Timeouts, automatische Wiederholungen mit exponentiellem Backoff
  • Logging & Observability - Strukturiertes Logging (JSON), Prometheus/OpenTelemetry-Metriken, Log-Sampling, benutzerdefinierte Felder
  • Config-Import (v1.3.0) - Importiere bestehende Envoy, Kong, APISIX, Traefik, Nginx, HAProxy Configs ins GAL-Format (gal import-config)
  • Compatibility Checker (v1.3.0) - Prüfe Provider-Kompatibilität und vergleiche Feature-Unterstützung (gal check-compatibility, gal compare-providers)
  • Migration Assistant (v1.3.0) - Interaktiver Migrations-Workflow mit Compatibility-Validierung und Migration Reports (gal migrate)

Installation

🐳 Docker (Empfohlen)

Von GitHub Container Registry (Fertig)

# Latest Version ziehen
docker pull ghcr.io/pt9912/x-gal:latest

# Direkt verwenden
docker run --rm ghcr.io/pt9912/x-gal:latest list-providers

# Mit Volume für Ausgabe
docker run --rm -v $(pwd)/generated:/app/generated \
  ghcr.io/pt9912/x-gal:latest \
  generate --config examples/gateway-config.yaml --provider envoy --output generated/envoy.yaml

# Spezifische Version
docker pull ghcr.io/pt9912/x-gal:v1.0.0

Lokal bauen

# Image bauen
docker build -t gal:latest .

# Verwenden
docker run --rm gal:latest list-providers

🐍 Python (Lokal)

# Repository klonen
git clone https://github.com/pt9912/x-gal.git
cd x-gal

# Virtuelle Umgebung erstellen
python3 -m venv venv
source venv/bin/activate  # Unter Windows: venv\Scripts\activate

# Abhängigkeiten installieren
pip install -e .         # Laufzeit-Abhängigkeiten
pip install -e .[dev]    # Mit Dev-Tools (pytest, black, flake8, isort)

# CLI ausführbar machen
chmod +x gal-cli.py

📦 PyPI (Empfohlen für Produktion)

# Stabile Version von PyPI installieren
pip install gal-gateway

# CLI verwenden
gal --help
gal --version

# Mit Entwicklungs-Tools
pip install gal-gateway[dev]

# Spezifische Version
pip install gal-gateway==1.0.0

# Pre-Release von TestPyPI (optional)
pip install --index-url https://test.pypi.org/simple/ \
            --extra-index-url https://pypi.org/simple/ \
            gal-gateway

PyPI-Links:

Schnellstart

🐳 Mit Docker

# Alle Provider generieren
docker run --rm -v $(pwd)/generated:/app/generated gal:latest \
  generate-all --config examples/gateway-config.yaml --output-dir generated

# Einzelnen Provider generieren
docker run --rm -v $(pwd)/generated:/app/generated gal:latest \
  generate --config examples/gateway-config.yaml --provider kong --output generated/kong.yaml

# Mit Docker Compose
docker-compose up gal-generate  # Generiert Envoy-Konfiguration
PROVIDER=kong docker-compose up gal-generate  # Generiert Kong-Konfiguration

🐍 Mit Python

# Envoy-Konfiguration generieren
python gal-cli.py generate --config examples/gateway-config.yaml --provider envoy --output generated/envoy.yaml

# Oder das Convenience-Script verwenden
./generate-envoy.sh

# Für alle Provider generieren
python gal-cli.py generate-all --config examples/gateway-config.yaml

Konfigurationsbeispiel

Das Beispiel enthält:

  • 3 gRPC Services: user_service, order_service, notification_service
  • 2 REST Services: product_service, payment_service

Jeder mit Transformationsregeln für:

  • Standard-Werte
  • Berechnete Felder (UUID, Zeitstempel-Generierung)
  • Feldvalidierung

Unterstützte Provider

Provider Status Features
Envoy Vollständige Unterstützung mit Wasm/Lua
Kong Lua Plugins
APISIX Lua Scripts
Traefik Middleware
Nginx Open Source (ngx_http-Module)
HAProxy Erweiterte Load Balancing & ACLs

Projektstruktur

x-gal/
├── gal/
│   ├── __init__.py
│   ├── config.py              # Konfigurationsmodelle
│   ├── manager.py             # Haupt-Orchestrator
│   ├── provider.py            # Provider-Interface
│   ├── providers/
│   │   ├── __init__.py
│   │   ├── envoy.py
│   │   ├── kong.py
│   │   ├── apisix.py
│   │   ├── traefik.py
│   │   ├── nginx.py
│   │   └── haproxy.py
│   └── transformation/
│       ├── __init__.py
│       ├── engine.py
│       └── generators.py
├── gal-cli.py                 # CLI-Tool
├── examples/
│   └── gateway-config.yaml
├── tests/
└── docs/

CLI-Befehle

# Konfiguration generieren
python gal-cli.py generate --config CONFIG --provider PROVIDER --output FILE

# Konfiguration validieren
python gal-cli.py validate --config CONFIG

# Für alle Provider generieren
python gal-cli.py generate-all --config CONFIG --output-dir OUTPUT

# 🚀 Provider-Config zu GAL importieren (v1.3.0)
python gal-cli.py import-config --provider envoy --input envoy.yaml --output gal-config.yaml
python gal-cli.py import-config --provider kong --input kong.yaml --output gal-config.yaml
python gal-cli.py import-config --provider apisix --input apisix.yaml --output gal-config.yaml
python gal-cli.py import-config --provider traefik --input traefik.yaml --output gal-config.yaml
python gal-cli.py import-config --provider nginx --input nginx.conf --output gal-config.yaml
python gal-cli.py import-config --provider haproxy --input haproxy.cfg --output gal-config.yaml

# 🔍 Provider-Kompatibilität prüfen (v1.3.0)
# Einzelnen Provider prüfen
python gal-cli.py check-compatibility --config gal-config.yaml --target-provider envoy

# Alle Provider vergleichen
python gal-cli.py compare-providers --config gal-config.yaml

# Mit detaillierter Ausgabe
python gal-cli.py check-compatibility --config gal-config.yaml --target-provider traefik --verbose

# 🔀 Zwischen Providern migrieren (v1.3.0)
# Interaktiver Modus (Prompts für alle Parameter)
python gal-cli.py migrate

# Nicht-interaktiver Modus
python gal-cli.py migrate \
  --source-provider kong \
  --source-config kong.yaml \
  --target-provider envoy \
  --output-dir ./migration \
  --yes

# Konfigurationsinformationen anzeigen
python gal-cli.py info --config CONFIG

# Verfügbare Provider auflisten
python gal-cli.py list-providers

# Mit Logging (für Debugging)
python gal-cli.py --log-level debug generate --config CONFIG --provider envoy

# Log Levels: debug, info, warning (default), error
python gal-cli.py --log-level info generate-all --config CONFIG

Logging-Optionen

GAL unterstützt strukturiertes Logging mit verschiedenen Verbosity-Levels:

  • --log-level debug: Detaillierte Debug-Informationen (Parsing, Validierung, Generation)
  • --log-level info: Haupt-Operationen und Zusammenfassungen
  • --log-level warning: Warnungen und nicht-kritische Probleme (Standard)
  • --log-level error: Nur kritische Fehler

Beispiel:

# Debugging aktivieren
docker run --rm ghcr.io/pt9912/x-gal:latest \
  --log-level debug \
  generate --config examples/gateway-config.yaml --provider envoy

🐳 Docker Deployment

Image bauen

# Standard-Build
docker build -t gal:latest .

# Mit spezifischer Version
docker build -t gal:1.0.0 .

Docker Compose Services

# Standard CLI (interaktiv)
docker-compose up gal

# Development mit Live-Reload
docker-compose --profile dev up gal-dev

# Konfiguration generieren
docker-compose --profile generate up gal-generate

# Konfiguration validieren
CONFIG_FILE=examples/gateway-config.yaml docker-compose --profile validate up gal-validate

Umgebungsvariablen

  • PROVIDER: Gateway-Provider (envoy, kong, apisix, traefik, nginx, haproxy)
  • CONFIG_FILE: Pfad zur Konfigurationsdatei
  • OUTPUT_DIR: Ausgabeverzeichnis für generierte Configs

Dokumentation

Grundlagen

Feature-Guides

Provider-Guides

Roadmap & Changelog

  • Roadmap - Geplante Features und Releases
  • v1.1.0 Plan - v1.1.0 Implementierungsplan (100% abgeschlossen)
  • v1.2.0 Plan - v1.2.0 Implementierungsplan (✅ 100% abgeschlossen - 6/6 Features)
  • Changelog

Tests & Entwicklung

Tests ausführen

# Alle Tests
pytest

# Mit Coverage
pytest --cov=gal --cov-report=term-missing

# Spezifische Test-Datei
pytest tests/test_providers.py -v

# Mit Logging
pytest -v --log-cli-level=DEBUG

Test-Suite

  • 385 Tests mit 89% Code-Coverage
  • Unit-Tests für alle Module
  • Provider-spezifische Tests (Envoy, Kong, APISIX, Traefik, Nginx, HAProxy)
  • CLI-Tests mit Click CliRunner
  • End-to-End-Workflow-Tests
  • Deployment-Tests (mit Mocking)
  • Praxisnahe Szenario-Tests
  • Feature-Tests (Rate Limiting, Auth, Headers, CORS, Circuit Breaker, Health Checks, WebSocket, Body-Transformation, Timeout & Retry, Logging & Observability)

Code-Qualität

# Formatierung mit black
black .

# Import-Sortierung mit isort
isort .

# Linting mit flake8
flake8 .

CI/CD

Das Projekt verwendet GitHub Actions für kontinuierliche Integration:

Workflows

  1. Tests (.github/workflows/test.yml)

    • Läuft auf Python 3.10, 3.11, 3.12
    • Automatische Tests bei jedem Push/PR
    • Code-Qualitätsprüfungen
    • Coverage-Berichte
  2. Docker Build (.github/workflows/docker-build.yml)

    • Automatischer Build und Push zu ghcr.io
    • Multi-Plattform-Unterstützung (amd64, arm64)
    • Intelligentes Tagging (semver, branch, sha)
  3. Release (.github/workflows/release.yml)

    • Automatische Releases bei Git Tags
    • Changelog-Generierung
    • Package-Erstellung
    • GitHub Release-Erstellung

Release erstellen

# Version Tag erstellen
git tag v1.0.1
git push origin v1.0.1

# GitHub Actions erstellt automatisch:
# - GitHub Release mit Changelog
# - Docker Images auf ghcr.io
# - Distribution Packages

Mitwirken

Beiträge sind willkommen! Bitte:

  1. Fork das Repository
  2. Erstelle einen Feature Branch (git checkout -b feature/amazing-feature)
  3. Committe deine Änderungen (git commit -m 'Add amazing feature')
  4. Pushe zum Branch (git push origin feature/amazing-feature)
  5. Öffne einen Pull Request

Richtlinien

  • Schreibe Tests für neue Features
  • Befolge den bestehenden Code-Stil
  • Aktualisiere die Dokumentation
  • Füge Eintrag im CHANGELOG.md hinzu

Lizenz

MIT - siehe LICENSE für Details.

Autor

Dietmar Burkard - Gateway Abstraction Layer


⭐ Wenn dir dieses Projekt gefällt, gib ihm einen Stern auf GitHub!

Release files for gal-gateway 1.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for gal-gateway 1.3.0
File Size Uploaded
gal_gateway-1.3.0.tar.gz 405.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for gal-gateway 1.3.0
File Interpreter ABI Platform
gal_gateway-1.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 492.3 kB

Release files / gal_gateway-1.3.0.tar.gz

Download URL gal_gateway-1.3.0.tar.gz
Size 405.3 kB
Tags Source
SHA-256 checksum
How to use checksums
f488a24c76447cbb34fb0e8c48b7408a48a3e119e7188891d1863307835906c8
BLAKE2b-256 checksum
How to use checksums
e0511077cdc7f5e5cda75fed409cac443fb0f3eb6673af8c74f455d8a8387fc7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.12

Release files / gal_gateway-1.3.0-py3-none-any.whl

Download URL gal_gateway-1.3.0-py3-none-any.whl
Size 87.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
67e44050adec6fd9f0a341bc364ee9362c64c4cc6315f206bced3743166d1701
BLAKE2b-256 checksum
How to use checksums
e9f7c6b14507828b780dae356924e6ac129436c311413110f8bb6c005772c8cc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.12

Release history Release notifications | RSS feed

This release

1.3.0 This release

2 release files

1.2.0

2 release files

1.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page