7 · Verteilungssicht¶
Die Verteilungssicht beschreibt, wo die Bausteine der ODI physisch laufen, welche Managed Services sie nutzen und wie neue Versionen automatisch in den Cluster gelangen.
Das Diagramm zeigt den IONOS Managed Kubernetes-Cluster mit seinen Namespaces als innere Knoten, die externen Managed Services (PostgreSQL, S3, NFS) rechts davon, den Ingress/TLS-Layer oben und die GitOps-Kette von openCode über die Container-Registry bis zum Cluster.
Infrastruktur bei IONOS¶
Die ODI läuft vollständig in der IONOS Cloud. Für alle Umgebungen (Stage und Produktion) stellt IONOS folgende Managed Services bereit, die kein eigenes Betriebswissen erfordern:
| Managed Service | Verwendung |
|---|---|
| Managed Kubernetes | Laufzeitumgebung für alle Container-Workloads; Stage und Produktion sind je eigene Cluster mit eigenem Node-Pool |
| Managed PostgreSQL | Persistenz für CKAN-Datenkatalog, Keycloak, FROST-Server (Sensordaten), GeoServer/PostGIS; Stage nutzt eine eigene Instanz (getrennt von Produktion) |
| Managed S3-Objektspeicher | Dateispeicher für hochgeladene Datensätze (CSV, Parquet, JSON) und generierte Diagramm-Iframes (Visualization-Backend); Stage nutzt eigene Buckets |
| NFS-Fileservice | Gemeinsam genutzter Dateispeicher für GeoServer-Daten und Triple-Store-Persistenz |
Die Produktionsdomäne ist odi.schleswig-holstein.de, die Stage-Domäne odi-stage.schleswig-holstein.de. Alle Endpunkte sind über HTTPS erreichbar; TLS-Zertifikate stellt cert-manager mit Let's Encrypt aus.
Kubernetes-Namespaces¶
Der Cluster ist in thematische Namespaces aufgeteilt, die jeweils einem fachlichen Stack entsprechen:
| Namespace | Deployments (Auswahl) | Persistenz |
|---|---|---|
odi-staging |
staging-backend, frictionless-backend, metadata-service, ckan-service, ckan-harvester | – (zustandslos; Katalog im CKAN-Namespace) |
odi-schema-repo |
schema-backend, schema-staging-frontend, Redis | Redis-PVC |
odi-udp |
GeoServer, PostGIS, UDP-Manager, Masterportal, masterportal-service | Managed PostgreSQL (PostGIS), NFS |
odi-triple-* |
triple-converter-worker, Apache Jena Fuseki, sparql-frontend | NFS / PVC (TDB-Daten) |
odi-dynamic-data |
FROST-Server, frost-proxy, sensorthings-backend, sensorthings-webapp, MQTT-Broker | Managed PostgreSQL |
odi-visualization |
visualization-backend, visualization-frontend | Managed S3 |
odi-ckan |
CKAN (oder Piveau), CKAN-Plugins | Managed PostgreSQL, Managed S3 |
keycloak |
Keycloak | Managed PostgreSQL |
ingress-nginx |
NGINX Ingress Controller | – |
cert-manager |
cert-manager, Let's Encrypt-Solver | – |
flux-system |
Flux-Controller (source-controller, kustomize-controller, image-automation-controller) | – |
monitoring |
Grafana, Loki, Promtail, VictoriaMetrics | PVC |
GitOps-Deployment mit FluxCD¶
Der gesamte Deployment-Prozess ist automatisiert. Nach einem git push auf main in einem Service-Repository läuft folgende Kette ab – ohne manuellen Deploy-Schritt:
- GitLab CI (
odi-ci-templates) startet die Pipeline:bump-versionerhöht das-dev-N-Suffix und committet zurück;build-imagebaut das Docker-Image mit Kaniko und pusht es in die Stage-Container-Registry (odi-container-registry-stage.cr.de-fra.ionos.com). - Flux
ImageRepositoryscannt die Stage-Registry alle 5 Minuten auf neue Image-Tags. - Flux
ImagePolicywählt den neuesten Tag, der dem Muster^\d+\.\d+\.\d+-dev-\d+$entspricht. - Flux
ImageUpdateAutomationschreibt den neuen Tag in das Deployment-Manifest zurück und committet die Änderung ins Repositoryodi-kubernetes-stage. - Flux
Kustomizationerkennt die Manifest-Änderung und wendet sie sofort auf den Cluster an (prune: true).
Die Produktion verwendet denselben Mechanismus mit festen Release-Tags (keine -dev-N-Suffixe) und dem Produktions-Kubernetes-Repository odi-kubernetes-prod.
Netzwerk und Absicherung¶
- Ingress: NGINX Ingress Controller routet eingehenden HTTPS-Traffic zu den jeweiligen Services. Der geplante Traefik API-Gateway (noch im Aufbau) soll zukünftig API-Management-Funktionen (Rate-Limiting, Routing) übernehmen.
- TLS: cert-manager stellt Let's Encrypt-Zertifikate für alle
*.odi.schleswig-holstein.de-Subdomains aus und erneuert sie automatisch. - Secrets: Keycloak-Credentials, Registry-Pull-Secrets, Datenbankpasswörter und S3-Zugangsdaten werden out-of-band per
kubectlerzeugt und sind nie im Git. Skripte und Vorlage liegen im Kubernetes-Repo untersecrets/. - Observability: Promtail sammelt Container-Logs und schickt sie an Loki. Grafana visualisiert Logs und Metriken (VictoriaMetrics). Alerting und On-Call-Prozesse sind Betriebssache von Dataport.
Details zu Stage und Produktion als gespiegelte Umgebungen beschreibt Umgebungen: Stage & Produktion. Den CI/CD-Ablauf im Detail erklärt CI/CD- & Flux-Pipeline.