Moodle mit Kubernetes installieren: So gelingt Ihr skalierbares Setup!
Moodle ist eines der weltweit verbreitetsten Open-Source-Lernmanagementsysteme. Eine Moodle-Installation mit Kubernetes bietet insbesondere für größere und wachsende Plattformen entscheidende Vorteile. Durch automatische Skalierung, Self-Healing und eine flexible Infrastruktur eignet sich Kubernetes ideal für produktive Moodle-Umgebungen mit vielen Nutzerinnen und Nutzern.
Schritt 1: Voraussetzungen und passende Infrastruktur
Bevor Sie mit der Installation beginnen, benötigen Sie eine funktionierende Kubernetes-Umgebung sowie passende Ressourcen. Im Gegensatz zu einem Moodle-Install mit Docker oder einer Installation von Moodle über die grafische Oberfläche von Plesk ist das Setup mit Kubernetes deutlich komplexer, bietet dafür aber auch wesentlich mehr Möglichkeiten in Bezug auf Skalierung und Hochverfügbarkeit. Die Voraussetzungen hängen vom jeweiligen Anwendungsfall ab.
Test- und Entwicklungs-Setups
Wenn Sie Moodle zunächst ausprobieren oder eine kleinere Lernplattform betreiben möchten, reicht bereits ein kompaktes Kubernetes-Cluster aus. Häufig wird hierfür eine vereinfachte Distribution wie K3s verwendet, die sich auch auf einem einzelnen Server installieren lässt.
Solche Setups eignen sich besonders für erste Experimente oder für kleinere Projekte, bei denen nur wenige Nutzerinnen und Nutzer gleichzeitig auf die Plattform zugreifen. Auch für Entwicklungs- und Testumgebungen ist diese Variante ideal, da sie vergleichsweise wenig Ressourcen benötigt und schnell eingerichtet ist.
Als grobe Orientierung genügt hier ein Server mit 2 bis 4 vCores und 4 bis 8 GB RAM. Beim Speicherplatz sollten Sie ca. 80 bis 120 GB SSD einplanen, da neben der Anwendung selbst auch Datenbankinhalte, Kursmaterialien und Uploads gespeichert werden.
Moodle für produktive Umgebungen
Sobald Sie Moodle regelmäßig nutzen oder mehreren Nutzerinnen und Nutzern gleichzeitig Zugriff ermöglichen möchten, steigen die Anforderungen deutlich. In produktiven Umgebungen spielen vor allem Stabilität, Performance und Ausfallsicherheit eine zentrale Rolle.
Im Gegensatz zu einfachen Setups läuft Moodle hier nicht mehr nur auf einem einzelnen Server, sondern verteilt sich auf mehrere Maschinen, die sogenannten Nodes. Dadurch kann die Plattform Last besser verarbeiten und bleibt auch dann erreichbar, wenn einzelne Komponenten ausfallen.
Für solche Szenarien empfiehlt sich pro Node eine Ausstattung von 4 bis 8 vCores und 8 bis 16 GB RAM. Zusätzlich sollten mehrere Nodes eingeplant werden, um eine stabile und ausfallsichere Umgebung aufzubauen. Ein weiterer wichtiger Bestandteil ist ein Load Balancer, der eingehende Anfragen gleichmäßig auf die verfügbaren Instanzen verteilt. In Kombination mit einem sogenannten Ingress-Controller wird außerdem der Zugriff über eine Domain und HTTPS ermöglicht.
Große Plattformen
Wenn Moodle unternehmensweit oder in großen Bildungseinrichtungen eingesetzt wird, sind die Anforderungen nochmals höher. In solchen Fällen greifen oft Hunderte oder Tausende User gleichzeitig auf die Plattform zu und es werden große Mengen an Lernmaterialien verarbeitet.
Hier ist eine verteilte Infrastruktur mit mehreren leistungsstarken Nodes notwendig. Pro Node sollten Sie mindestens 8 vCores und 16 bis 32 GB RAM einplanen. Zusätzlich wird der Cluster um mehrere sogenannte Worker-Nodes erweitert, um die Last effizient zu verteilen. Ein entscheidender Punkt in solchen Setups ist die Datenbank. Statt sie direkt im Kubernetes-Cluster zu betreiben, empfiehlt es sich, eine externe, gemanagte Datenbanklösung zu nutzen. Diese ist in der Regel performanter, einfacher zu warten und besser abgesichert.
Darüber hinaus sind weitere Komponenten sinnvoll, um einen stabilen Betrieb sicherzustellen:
- Content Delivery Network, um statische Inhalte schneller auszuliefern
- Separate Speicherlösung für Moodle-Daten, um Skalierung zu erleichtern
- Monitoring-Tools wie Prometheus, um die Systemauslastung im Blick zu behalten
Übersichtstabelle: Anforderungen auf einen Blick
| Anwendungsgebiet | Empfohlene Konfiguration | Typische gleichzeitige User | Infrastruktur / Setup |
|---|---|---|---|
| Test / Entwicklung | 2–4 vCores, 4–8 GB RAM, 80–120 GB SSD | bis ca. 20 | Single-Node-Cluster (z. B. K3s), einfache Installation |
| Produktive Umgebung | 4–8 vCores pro Node, 8–16 GB RAM | ca. 50–300 | Mehrere Nodes, Load Balancer, Ingress, erste Skalierung |
| Große Plattform | 8+ vCores pro Node, 16–32 GB RAM | 300+ | Cluster mit mehreren Worker-Nodes, externe Datenbank, skalierbare Architektur |
Lassen Sie sich von den Vorteilen überzeugen. Probieren Sie Ihren Virtual Server ganz in Ruhe 30 Tage lang aus!
Schritt 2: Kubernetes-Cluster einrichten
Bevor Sie Moodle in Kubernetes installieren können, benötigen Sie zunächst einen funktionierenden Kubernetes-Cluster. Für Einsteigerinnen und Einsteiger eignet sich besonders K3s. K3s ist eine leichtgewichtige Kubernetes-Distribution, die sich schnell auf einem einzelnen Server installieren lässt. Verbinden Sie sich per SSH mit Ihrem Server und führen Sie folgenden Befehl aus, um K3s zu installieren:
curl -sfL https://get.k3s.io | sh -bashDie Installation dauert nur wenige Minuten. Anschließend wird der Kubernetes-Dienst automatisch gestartet. Um zu überprüfen, ob Ihr Cluster korrekt läuft, führen Sie folgenden Befehl aus:
kubectl get nodesbash
Wenn Ihr Server in der Liste mit dem Status „Ready“ erscheint, ist Ihr Kubernetes-Cluster erfolgreich eingerichtet.
Die Installation von K3s über das curl-Skript eignet sich vor allem für Test- und Entwicklungsumgebungen. In produktiven Szenarien empfiehlt es sich, die Installation kontrollierter durchzuführen, beispielsweise über Paketquellen, Infrastruktur-Tools oder automatisierte Deployment-Prozesse, um Sicherheit und Nachvollziehbarkeit zu gewährleisten.
Schritt 3: Helm installieren
Nachdem Ihr Kubernetes-Cluster läuft, benötigen Sie noch ein Tool, um Anwendungen wie Moodle einfach bereitzustellen. Hier kommt Helm ins Spiel. Helm ist ein Paketmanager für Kubernetes, mit dem Sie komplexe Anwendungen mit wenigen Befehlen installieren können. Installieren Sie zunächst Helm mit folgendem Befehl:
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bashbashNach der Installation können Sie überprüfen, ob Helm korrekt eingerichtet wurde, indem Sie sich die Version anzeigen lassen:
helm versionbash
Schritt 4: Namespace erstellen
In Kubernetes werden Anwendungen im Regelfall in sogenannten Namespaces organisiert. Dadurch bleiben Ressourcen sauber getrennt und besser überschaubar. Erstellen Sie nun mit dem untenstehenden Befehl einen eigenen Namespace für Moodle:
kubectl create namespace moodlebash
Schritt 5: Moodle konfigurieren
Bevor Sie Moodle installieren, sollten Sie einige grundlegende Einstellungen festlegen. Diese werden in einer Konfigurationsdatei gespeichert. Erstellen Sie dazu zunächst eine Datei mit dem Namen values.yaml:
nano values.yamlbashFügen Sie folgenden Inhalt ein und passen Sie die Werte nach Bedarf an:
global:
security:
allowInsecureImages: true
moodleUsername: admin
moodlePassword: securepassword
moodleEmail: admin@example.com
service:
type: ClusterIP
ingress:
enabled: true
hostname: moodle.example.com
persistence:
enabled: true
size: 10Gi
image:
repository: bitnamilegacy/moodle
volumePermissions:
image:
repository: bitnamilegacy/os-shell
metrics:
image:
repository: bitnamilegacy/apache-exporter
mariadb:
image:
repository: bitnamilegacy/mariadb
auth:
rootPassword: rootpassword
database: moodle
username: moodle
password: moodlepasswordyamlErsetzen Sie die Beispielpasswörter unbedingt durch sichere Kennwörter. Für produktive Umgebungen sollten Sie sensible Daten nicht direkt in dieser Datei speichern, sondern Kubernetes Secrets verwenden.
Bei Bitnami-Charts reicht es nicht immer aus, nur das Hauptimage der Anwendung anzupassen. Je nach aktivierten Funktionen können weitere Image-Referenzen betroffen sein, zum Beispiel Init-Container, Metrics-Exporter oder zusätzliche Hilfscontainer. Prüfen Sie deshalb vor der Installation mit helm show values, welche Image-Repositorys das verwendete Chart referenziert, und stellen Sie alle benötigten Images auf gültige Repositorys um.
Schritt 6: Moodle installieren
Nun können Sie Moodle installieren. Helm übernimmt dabei die komplette Einrichtung aller benötigten Komponenten im Hintergrund. Führen Sie für die Installation den folgenden Befehl aus:
helm install moodle oci://registry-1.docker.io/bitnamicharts/moodle -n moodle -f values.yamlbashDie hier verwendete Bitnami-Variante ist vor allem als Übergangslösung zu verstehen. Das betrifft nicht nur die Images aus dem Repository bitnamilegacy, sondern auch die bereits gepackten OCI-Helm-Charts unter docker.io/bitnamicharts: Sie bleiben zwar verfügbar, erhalten aber keine regulären Updates mehr. Für produktive Umgebungen sollten Sie deshalb langfristig auf aktuelle, unterstützte Container-Images, eine eigene gepflegte Image-Basis oder eine dauerhaft gewartete Deployment-Variante setzen.
Kubernetes erstellt nun automatisch alle notwendigen Bestandteile, darunter:
- Container (sogenannte Pods) für Moodle
- einen Service für den Zugriff
- persistenten Speicher für Daten
- eine Datenbank
Schritt 7: Status der Installation überprüfen
Nachdem Sie die Installation gestartet haben, sollten Sie überprüfen, ob alle Komponenten korrekt erstellt und gestartet wurden. Kubernetes benötigt in der Regel einen kurzen Moment, um alle Container bereitzustellen und zu initialisieren. Verwenden Sie dazu den folgenden Befehl:
kubectl get pods -n moodlebash
In der Ausgabe sehen Sie alle laufenden Pods Ihrer Moodle-Installation. Achten Sie darauf, dass der Status bei allen Einträgen „Running“ lautet. Sollte stattdessen „Pending“ angezeigt werden, ist die Installation noch nicht abgeschlossen. Sobald alle Pods erfolgreich gestartet sind, können Sie mit dem Zugriff auf Ihre Moodle-Instanz fortfahren.
Schritt 8: Zugriff auf Moodle
Für erste Tests können Sie auf Ihre Moodle-Installation zugreifen, ohne bereits eine Domain oder einen Ingress einzurichten. Stellen Sie dafür sicher, dass Ingress in Ihrer values.yaml zunächst deaktiviert ist:
ingress:
enabled: falseyamlLeiten Sie anschließend den lokalen Port 8080 an den Moodle-Service im Kubernetes-Cluster weiter:
kubectl port-forward svc/moodle 8080:80 -n moodlebashDieser Befehl sorgt dafür, dass Anfragen an den Port 8080 Ihres lokalen Rechners direkt an den Moodle-Service im Kubernetes-Cluster weitergeleitet werden. Öffnen Sie anschließend Ihren Browser und rufen Sie die Adresse http://localhost:8080 auf.
Nun erscheint die Moodle-Startseite, wo Sie sich einloggen können. Die Installation ist damit abgeschlossen. Melden Sie sich nun mit Ihrem Administrator-Konto an, dessen Zugangsdaten Sie in der values.yaml hinterlegt haben.
Danach gelangen Sie direkt zum Dashboard und können die Lernplattform Moodle nutzen, indem Sie Kurse erstellen und Inhalte hinzufügen.

Auf diese Weise können Sie Ihre Installation schnell und unkompliziert testen, ohne zunächst eine Domain oder einen öffentlichen Zugriff einrichten zu müssen. Für den späteren produktiven Einsatz empfiehlt es sich jedoch, Moodle über eine eigene Domain und HTTPS bereitzustellen.
Stellen Sie hierfür sicher, dass Ihre Domain per DNS auf die IP-Adresse Ihres Servers zeigt und ein Ingress-Controller (z. B. NGINX oder Traefik) im Cluster installiert ist. Für HTTPS können Sie beispielsweise cert-manager mit Let’s Encrypt verwenden, um automatisch ein gültiges SSL-Zertifikat bereitzustellen.
Nach der Anpassung übernehmen Sie die Änderungen mit:
helm upgrade --install moodle oci://registry-1.docker.io/bitnamicharts/moodle -n moodle -f values.yamlbashDer Befehl helm upgrade --install eignet sich hier dazu, Konfigurationsänderungen aus der values.yaml anzuwenden, etwa für Ingress, Domain oder HTTPS. Er sollte jedoch nicht als vollständiges Moodle-Versionsupgrade verstanden werden. Für größere Moodle-Versionssprünge sollten Sie die offiziellen Moodle-Upgrade-Schritte beachten und vorab vollständige Backups von Datenbank, Moodle-Dateien und moodledata erstellen.
Anschließend ist Ihre Moodle-Instanz dauerhaft und sicher über Ihre Domain erreichbar.


