Installation der CIVITAS/CORE Urbanen Datenplattform auf der Pop-up Platform
Diese Anleitung beschreibt ausführlich die Installation der urbanen Datenplattform CIVITAS/CORE auf der Pop-up Platform. Es werden alle notwendigen Schritte und Voraussetzungen erklärt, um die Plattform erfolgreich einzurichten und zu konfigurieren.
Voraussetzungen
Anforderungen an den Speicherplatz
Stelle sicher, dass auf der /
-Partition auf dem Maas-Host mindestens 600 GB freier Speicherplatz zur Verfügung stehen. Falls nicht, kannst du die Partition vergrößern, indem du das logische Volumen (/dev/mapper/ubuntu--vg-ubuntu--lv
) ohne Neustart erweiterst und das Dateisystem auf die maximale verfügbare Größe vergrößerst. Nach der Erweiterung sollte mindestens 800 GB freier Speicherplatz verfügbar sein, da CIVITAS/CORE mindestens 600 GB benötigt.
Voraussetzungen auf der Entwicklungsumgebung (Entwicklungs-Rechner)
-
SSH-Verbindung sicherstellen:
- Vergewissere dich, dass du dich ohne Passwort mit dem Maas-Host verbinden kannst:
ssh ppp-admin@192.168.88.20
- Vergewissere dich, dass du dich ohne Passwort mit dem Maas-Host verbinden kannst:
-
Kubectl konfigurieren:
- Importiere den Kubernetes-Context der Pop-up Platform (
ppp
) in deine lokale Kubernetes-Konfiguration:ssh ppp-admin@192.168.88.20 microk8s config > ~/.kube/config
- Importiere den Kubernetes-Context der Pop-up Platform (
-
Python-Umgebung einrichten:
- Erstelle ein Conda-Environment mit Python 3.11:
conda create -n civitas-core python=3.11
- Aktiviere das Conda-Environment:
conda activate civitas-core
- Installiere Ansible im aktiven Virtual Environment:
pip install ansible-core
- Stelle sicher, dass das Ansible aus deinem Virtual Environment genutzt wird:
Der Pfad sollte auf das Virtual Environment zeigen, z.B.
which ansible
/opt/miniconda3/envs/civitas-core/bin/ansible
.
- Erstelle ein Conda-Environment mit Python 3.11:
-
Notwendige Python-Pakete installieren:
- Installiere die erforderlichen Python-Pakete:
pip install "ansible-core>=2.13" "openshift==0.12.1" "kubernetes==12.0.1" "ansible-lint>=5.0" "docker>=5.0" jmespath
- Installiere die erforderlichen Python-Pakete:
Voraussetzungen auf der Pop-up Platform
-
Verbindung zum Maas-Host herstellen:
- Verbinde dich per SSH mit dem Maas-Host:
ssh ppp-admin@192.168.88.20
- Verbinde dich per SSH mit dem Maas-Host:
-
MicroK8s vorbereiten:
- Aktiviere den Ingress-Controller:
microk8s enable ingress
- Aktiviere den Cert-Manager:
microk8s enable cert-manager
- Aktiviere den Ingress-Controller:
-
Ansible Galaxy Collections installieren:
- Installiere die notwendigen Ansible Collections:
ansible-galaxy collection install "kubernetes.core:>=2.2"
ansible-galaxy collection install community.grafana
ansible-galaxy collection install "community.mongodb:==1.3.2"
- Installiere die notwendigen Ansible Collections:
Reverse Proxy mit Traefik konfigurieren
Auf dem Platform-Droplet muss ein Reverse Proxy in Traefik konfiguriert werden, damit der Ingress der Pop-up Platform von außen erreichbar ist.
routers:
https-router:
rule: "HostRegexp(`{subdomain:[a-zA-Z0-9-]+}.a.example.com`)"
entryPoints:
- websecure
service: https-service
tls:
passthrough: true
http-router:
rule: "HostRegexp(`{subdomain:[a-zA-Z0-9-]+}.a.example.com`)"
entryPoints:
- web
service: http-service
services:
https-service:
loadBalancer:
servers:
- url: "https://localhost:6443"
passHostHeader: true
http-service:
loadBalancer:
servers:
- url: "http://localhost:6080"
passHostHeader: true
Installation von CIVITAS/CORE
Schritt 1: CIVITAS/CORE-Repository klonen
Klonen Sie das CIVITAS/CORE-Repository auf deinen Entwicklungsrechner und kopiere die Datei core_platform/default_inventory.yml
nach inventory.yml
.
Schritt 2: Änderungen in der inventory.yml
vornehmen
Ändere die inventory.yml
wie folgt:
-
Domain Name Anpassen:
- Ändere den Wert des
DOMAIN
-Feldes von"staging.example.com"
zu"udp.leipzig.platforming.io"
, um die spezifische Subdomain für deine Installation zu verwenden.
- Ändere den Wert des
-
Kubeconfig-Datei:
- Setze den Wert des
kubeconfig_file
-Feldes auf"config"
, um sicherzustellen, dass das richtige Kubernetes-Konfigurationsfile verwendet wird, das in deinem~/.kube
Verzeichnis liegt.
- Setze den Wert des
-
Python Interpreter:
- Aktualisiere den Pfad des
ansible_python_interpreter
, um auf den Python-Interpreter in deinem Civitas-Umfeld zu verweisen:/opt/miniconda3/envs/civitas-core/bin/python
.
- Aktualisiere den Pfad des
-
Kubernetes Context:
- Ändere das
context
-Feld von"k3s"
zu"microk8s"
, um sicherzustellen, dass der richtige Kubernetes-Context verwendet wird, der in deiner~/.kube/config
Datei definiert ist. Es ist wichtig, dass dieser Kontextname genau mit dem Namen des Contexts in deiner Konfigurationsdatei übereinstimmt.
- Ändere das
-
Ingress Controller:
- Ändere die Ingress-Klasse (
ingress_class
) von"nginx"
zu"public"
, um den korrekten Ingress-Controller für deine Umgebung zu verwenden.
- Ändere die Ingress-Klasse (
-
Storage Classes:
- Aktualisiere die Storage Class Werte für
rwo
,rwx
, undloc
von"default"
auf"nfs-csi"
, um sicherzustellen, dass das richtige Speichersystem verwendet wird.
- Aktualisiere die Storage Class Werte für
- Kubernetes Context: Das
context
-Feld muss exakt mit dem Namen des Contexts in deiner~/.kube/config
Datei übereinstimmen. - Passwörter: Passe die Passwörter entsprechend an (Master-Passwort benötigt mindestens 2 Sonderzeichen).
- Storage Configuration: Setze die Storage Class auf
nfs-csi
. - Replicas: Stelle sicher, dass alle Replicas im Sandbox-Modus auf 1 gesetzt sind.
Schritt 3: Ansible Playbook ausführen
Führe das Ansible Playbook aus:
ansible-playbook -l localhost core_platform/playbook.yml
Dies kann zwischen 5 Minuten und 45 Minuten Zeit in Anspruch nehmen.
Schritt 4: Troubleshooting
Falls APISIX nicht startet, kann es erforderlich sein, manuell die Rechte im Volume zu ändern:
-
Finde das PVC in Portainer (unter
data-apisix-etcd-0
im Namespacestaging-access-stack
). -
Ändere die Berechtigungen des entsprechenden Verzeichnisses:
sudo chmod 777 -R /srv/nfs/pvc-<id>/
Ersetze <id>
durch die spezifische ID deines PVCs.
Fazit
Mit dieser Anleitung solltest du in der Lage sein, die CIVITAS/CORE Urbane Datenplattform erfolgreich auf deiner Pop-up Platform zu installieren. Wir haben hiermit die technische Machbarkeit nachgewiesen und empfehlen anhand konkreter Use-Cases die weitere Nutzung zu erproben.