← Zur Uebersicht

Gemeinsame Infrastruktur

Das Projekt verwendet für lokale Infrastruktur die projektübergreifende Umgebung unter ../../shared/enterprise-infrastructure/. Dort laufen gemeinsame Dienste nur einmal für alle Lernprojekte:

Lokaler Start

cd ../../shared/enterprise-infrastructure
docker compose up -d
docker compose --profile postgres --profile keycloak --profile kafka --profile observability up -d

Podman-Nutzer verwenden dieselben Compose-Dateien mit podman compose:

podman compose up -d
podman compose --profile postgres --profile keycloak --profile kafka --profile observability up -d

Traefik und Jenkins benoetigen fuer die automatische Container-Erkennung einen Docker-API-kompatiblen Runtime-Socket. shared/enterprise-infrastructure parametrisiert dessen Hostpfad ueber CONTAINER_ENGINE_SOCKET; auf der Windows-Podman-Machine muss dieser Socket einmal real aktiviert und fuer den Compose-Provider erreichbar gemacht werden.

Die modernen Dockerfiles sind Buildah-/Podman-kompatibel. In Jenkins wird der Parameter CONTAINER_RUNTIME auf podman oder docker gesetzt.

Für einen lokal auf dem Host gestarteten modernen Reactor werden typischerweise folgende Umgebungsvariablen gesetzt:

NOVARIS_KAFKA_BOOTSTRAP_SERVERS=localhost:9095
NOVARIS_OIDC_ISSUER_URI=http://keycloak.localhost/realms/novaris
NOVARIS_CORS_ALLOWED_ORIGIN=http://localhost:5173

Der Browser verwendet dieselbe öffentliche Keycloak-Adresse. Containerisierte Backends müssen für den Issuer/JWK-Zugriff die in shared/enterprise-infrastructure/README.md beschriebene Trennung zwischen Browser-Adresse und internem Container-Namen beachten.

Namensräume und Jenkins

Die modernen Kafka-Topics verwenden bereits das Projektpräfix novaris.. Dieses Präfix ist bei der gemeinsamen Kafka-Instanz verbindlich, weil Kafka dort nur über Konvention und nicht über eine harte Projektgrenze isoliert wird. Ein zusätzlicher projektlokaler Kafka- oder Keycloak- Container wird nicht benötigt.

Jenkins wird zentral aus shared/enterprise-infrastructure/jenkins/casc.yaml verwaltet. Das projektspezifische Jenkinsfile bleibt die Pipeline-Definition; der Job selbst sollte im zentralen Jenkins einmalig auf dieses Repository und den jeweiligen Jenkinsfile-Pfad zeigen.

Die gemeinsame Infrastruktur ist bewusst nicht in diesem Repository dupliziert. Ihre Version, Startprofile und Netzwerkverträge bleiben im Repository shared/enterprise-infrastructure dokumentiert.

⌂ Cockpit