Files
ai-disclosure-standard/docs/COMMERCIAL-DEPLOYMENT.md
jbergner 4e2c648ede
Some checks failed
release-tag / release-image (push) Has been cancelled
2.0.0 Production-RC
2026-07-24 07:23:59 +02:00

2.9 KiB

Commercial Deployment

Diese Datei beschreibt die technische Härtung der offiziellen, lizenzierten Distribution. Sie ist keine Vertrags- oder Lizenzvorlage.

Runtime-Secrets

Bevorzugt werden Datei-Secrets:

LICENSE_TOKEN_FILE=/run/secrets/license/token
BULK_API_KEY_FILE=/run/secrets/bulk/key

statt Secrets direkt in Prozesslisten, Compose-Dateien oder Git-Repositories zu hinterlegen.

Lizenzmodi

  • offline: vollständig lokale Signaturprüfung;
  • hybrid: zentrale Prüfung mit signiertem Lease-Cache und Offline-Grace-Periode;
  • online: aktuelle zentrale Prüfung erforderlich.

Für hochverfügbare Publisher-Installationen ist hybrid meist der geeignetste technische Kompromiss. Für einen streng kontrollierten, zentral widerrufbaren Dienst kann online sinnvoll sein.

Full-/API-Container

Ein lizenziertes Full-Deployment kann beispielsweise setzen:

REQUIRE_LICENSE=true
LICENSE_MODE=hybrid
WHITE_LABEL=true

WHITE_LABEL=true wirkt nur mit der Capability white_label.

Bulk

Der Bulk-Dienst sollte separat skaliert werden. Er benötigt:

bulk_api

und sollte mit BULK_REQUIRE_API_KEY=true betrieben werden. Das mitgelieferte Dockerfile.bulk erzwingt diese Defaults bereits.

Kubernetes

deploy/kubernetes-bulk.yaml enthält:

  • 3 Replikate;
  • Rolling Update ohne geplante Unterbrechung;
  • PodDisruptionBudget;
  • HPA;
  • Topology Spread;
  • non-root;
  • read-only root filesystem;
  • seccomp RuntimeDefault;
  • keine Linux-Capabilities;
  • deaktiviertes ServiceAccount-Token;
  • Lizenz- und API-Key-Secrets als Dateien;
  • internen ClusterIP-Service;
  • keinen öffentlichen Ingress.

CORS

API_ALLOWED_ORIGIN=* ist für offen konsumierbare Badge-/Manifest-APIs bequem. Für interne kommerzielle APIs kann CORS vollständig deaktiviert werden:

API_ALLOWED_ORIGIN=

oder auf einen kontrollierten Origin beschränkt werden.

Observability

  • X-Request-ID wird übernommen oder erzeugt;
  • Requests werden strukturiert als JSON protokolliert;
  • /metrics liefert Prometheus-Metriken;
  • /healthz ist reine Liveness;
  • /readyz berücksichtigt bei Bulk die Lizenz-Capability und die notwendige API-Key-Konfiguration.

Supply Chain

Die GitHub-Actions-Vorlage baut Full- und Bulk-Images für amd64/arm64, erzeugt BuildKit-Provenance und SBOMs und signiert den veröffentlichten Multi-Arch-Digest keyless mit Sigstore/Cosign über GitHub OIDC. Produktive Deployments sollten freigegebene Digests statt ausschließlich latest verwenden und die Signatur vor dem Rollout prüfen. Siehe SUPPLY-CHAIN.md.

Getrennte Bulk-Topologie

In einer professionellen Topologie sollte der interne Bulk-Dienst BASE_URL für seine eigene Instanz-/Domainbindung verwenden und OUTPUT_BASE_URL auf die öffentlich erreichbare Deklarationsinstanz setzen. So bleiben erzeugte Links gültig, obwohl SERVICE_MODE=bulk selbst keine HTML-Deklarationen oder Badge-Endpunkte bereitstellt.