Schnittstellen externer City Tools
City Tools müssen als Docker-Images verpackt sein und in einer Registry liegen, die vom Internet erreichbar ist. Die Registry kann durch ein Passwort geschützt sein, welches beim Erstellen des externen City Tools angegeben werden muss.
Das City Tool muss einen HTTP-Server auf Port 3000 bereitstellen. Dieser muss die Endpunkte /livez und /readyz bereitstellen, um eine Liveness und Readiness Überwachung durch Kubernetes zu ermöglichen. In der einfachsten Implementierung geben diese Endpunkte einfach einen HTTP-Status von 200 (OK) zurück.
Der Container des City Tools muss mit einem Readonly-Filesystem und ohne Root-Rechte oder sonstige erweiterte Berechtigungen lauffähig sein. Dies dient der Sicherheit des Kubernetes-Clusters.
Um eine Überlastung des Clusters zu verhindern, ist der Container auf 400 mCPU gedrosselt und auf einen maximalen Arbeitsspeicher von 200 Mebibyte beschränkt.
Es werden folgende Environment Variablen zur Verfügung gestellt:
DB_HOSTder Hostname, unter dem die Postgres-Datenbank erreichbar istDB_PORTder Port, unter dem die Postgres-Datenbank erreichbar istDB_PASSWORDdas Passwort, unter dem die Postgres-Datenbank erreichbar istDB_DATABASEder Name des Postgres-Datenbank dieses City ToolsAUTH_KEYCLOAK_ISSUERder Issuer zur Integration in den OAuth2/OIDC-Flow der PlattformAUTH_KEYCLOAK_IDdie ClientID dieses City Tools, die im OAuth2/OIDC-Flow benutzt werden mussHOSTNAME(z.B.my-citytool.my-tenant.urbanstack.de) der Hostname, unter dem das City Tool erreichbar istRESOURCE_API_GRAPHQL(z.B.https://login.urbanstack.de/realms/udh/data-hub/graphql) die URL, unter der die GraphQL Resource API erreicht werden kann. Für die Authentifizierung gegen die API wird dasaccess_tokendes OAuth2/OIDC-Flows benötigt.
Von der Plattform bereitgestellt werden Postgres-Datenbank (eine Datenbank pro City Tool, kein Zugriff auf andere City Tools möglich) und ein public OAuth2 Client, der für die Authentifizierung im Frontend benutzt werden kann.
Außerdem wird unter /data eine schreibbare und persistente Datenablage bereitgestellt, die allerdings auf 5GiB limitiert ist.
Folgende Felder werden im access_token und id_token bereitgestellt:
name: Der vollständige name, z.B.Data Hub Adminemail: Die E-Mail des Nutzerstenants: Alle Mandanten, in denen der Benutzer Mitglied istadmin_tenants: Alle Mandanten, für die der Benutzer Admin-Rechte besitzt
Authentifizierung und Authorisierung sind Aufgabe des jeweiligen City Tools.