Zum Hauptinhalt springen

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)

  1. SSH-Verbindung sicherstellen:

    • Vergewissere dich, dass du dich ohne Passwort mit dem Maas-Host verbinden kannst:
      ssh ppp-admin@192.168.88.20
  2. 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
  3. 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:
      which ansible
      Der Pfad sollte auf das Virtual Environment zeigen, z.B. /opt/miniconda3/envs/civitas-core/bin/ansible.
  4. 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

Voraussetzungen auf der Pop-up Platform

  1. Verbindung zum Maas-Host herstellen:

    • Verbinde dich per SSH mit dem Maas-Host:
      ssh ppp-admin@192.168.88.20
  2. MicroK8s vorbereiten:

  3. 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"

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:

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. Ingress Controller:

    • Ändere die Ingress-Klasse (ingress_class) von "nginx" zu "public", um den korrekten Ingress-Controller für deine Umgebung zu verwenden.
  6. Storage Classes:

    • Aktualisiere die Storage Class Werte für rwo, rwx, und loc von "default" auf "nfs-csi", um sicherzustellen, dass das richtige Speichersystem verwendet wird.
info
  • 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:

  1. Finde das PVC in Portainer (unter data-apisix-etcd-0 im Namespace staging-access-stack).

  2. Ä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.