PoC-Deployment: Bank- und Händler-Mock (Scoped Mandate)

Stand: 2026-10-10. Beide Services laufen auf Google Cloud Run in Frankfurt (europe-west3), Projekt gen-lang-client-0501393793.

Rolle Öffentliche URL Cloud-Run-Service Quelle
Bank (Mandate Service) https://bank.s-you.me mandate-service tools/mock-bank
Händler (Merchant Service) https://shop.s-you.me merchant-service tools/mock-merchant
Dokumentation https://docs.s-you.me docs-site tools/docs-site (rendert docs/*.md, tools/DEPLOY.md, CHANGELOG.md, docs/openapi/*.yaml; Logo/Schriften von digitallabor.berlin beim Deploy geladen, nicht im Repo)

OpenAPI 3.1: Quelle docs/openapi/{mandate,merchant}-service.yaml. Die Deploy-Scripts von Bank und Händler kopieren die jeweilige Datei als openapi.yaml in den Build (gitignored, aber per .gcloudignore im Upload); die Services liefern sie unter /openapi.yaml und verweisen in der Discovery darauf. Nach einer Spec-Änderung: betroffenen Service und docs-site neu deployen.

Wichtige Einstiegspunkte:

Scripts

Script Zweck
mock-bank/deploy.sh Bank aus Quelle bauen und deployen (Cloud Build), prüft /health
mock-merchant/deploy.sh Händler deployen; legt beim ersten Lauf den Signing-Key im Secret Manager an
docs-site/deploy.sh Doku-Site: kopiert die Markdown-Quellen nach content/ (gitignored) und deployt; nach jeder Doku-Änderung erneut ausführen
mock-bank/allow-public.sh Org-Policy lockern und allUsers als Invoker setzen (einmalig je Service)
setup-lb.sh Globalen HTTPS-Load-Balancer mit Google-managed Zertifikaten anlegen — drei Hosts, idempotent (--status, --destroy)
mock-bank/smoke_test.py URL 24 Checks Flow B/C/D gegen eine laufende Bank
mock-merchant/smoke_test.py URL 20 Checks Katalog/Attestation/Fach-Scope gegen einen laufenden Händler

Smoke-Tests ohne venv:

uv run --python 3.12 --with 'cryptography==43.0.3' --with requests \
  python tools/mock-bank/smoke_test.py https://bank.s-you.me

DNS (Strato, Domain s-you.me)

Typ Name Wert Zweck
TXT @ google-site-verification=… Domain-Nachweis für Google Cloud — nicht löschen
A bank 35.190.87.101 Load-Balancer-IP (poc-lb-ip)
A shop 35.190.87.101 dieselbe IP; der LB routet per Host-Header
A docs 35.190.87.101 dieselbe IP; Zertifikat poc-cert-v2 deckt alle drei Hosts

www und die nackte Domain sind frei belegbar (z. B. Landingpage), die PoC-Services hängen nur an bank und shop.

Warum Load Balancer statt Domain-Mapping

Cloud-Run-Domain-Mappings sind in europe-west3 nicht erlaubt (HTTP 501 UNIMPLEMENTED, geprüft 2026-10-10). Statt die Services nach Belgien zu verschieben, sitzt ein globaler externer HTTPS-LB mit Serverless-NEGs davor. Das ist Googles empfohlener Produktionsweg, hält die Services in Frankfurt und bringt HTTP→HTTPS-Redirect und Zertifikatsverwaltung mit. Kosten: ca. 15 €/Monat für die Forwarding-Rule; setup-lb.sh --destroy baut alles wieder ab.

Betrieb