Thema · TYPO3 Kubernetes

TYPO3 Kubernetes — TYPO3, das nicht am einzelnen Server klebt.

TYPO3 auf Kubernetes bedeutet: Cluster-Betrieb mit deklarativer Konfiguration, horizontale Skalierung der Frontend-Pods, getrennten Worker-Pools für Cron- und Indexer-Jobs, Multi-AZ-Failover und mTLS zwischen den Services. Das CMS bleibt TYPO3 — die Betriebsebene wird zur Plattform.

Warum TYPO3 auf Kubernetes — und wann es sich lohnt.

Ein einzelner LAMP-Server, ein gemieteter Managed-TYPO3-Slot bei einem Hoster, ein Docker-Container hinter NGINX — das trägt viele Mittelstand-Projekte. Bis irgendwann eine der drei Grenzen erreicht ist: das System muss eine Lastspitze überstehen (Pressemitteilung, Kampagne, Migrationswelle), die Compliance verlangt nachweisbare Trennung von Workloads und Daten, oder die nächste TYPO3-Major macht ein In-Place-Upgrade riskant.

Kubernetes löst genau diese drei Probleme — nicht durch mehr Komplexität, sondern durch deklarative Wiederholbarkeit. Jedes Deployment ist ein Git-Commit. Jeder Rollback ist eine Zeile. Jede Skalierung passiert, ohne dass jemand SSH öffnet. Wer das einmal sauber aufgebaut hat, betreibt TYPO3 fundamental anders — mit mehr Sicherheit, weniger Wochenend-Einsätzen und ohne den „ein Server, ein Mensch“-Bottleneck.

Wir betreiben TYPO3-Cluster auf Kubernetes seit über fünf Jahren produktiv — von Single-Tenant-Setups bis zu Multi-Site-Plattformen mit getrennten Worker-Pools. Aus den dabei gefundenen Schmerzpunkten sind unsere eigenen Open-Source-Extensions entstanden, die TYPO3 im Cluster sauberer und performanter laufen lassen, als es mit dem Core allein möglich ist.

Sechs Kernfähigkeiten, die ein TYPO3-Cluster mitbringt.

Diese sechs Bausteine entscheiden, ob ein TYPO3-Cluster wirklich trägt — oder ob er nur ein Kubernetes-Deployment auf dem Papier ist. Fünf davon adressieren die klassischen Betriebs-Stolperstellen, der sechste — reproduzierbare Deployments mit Rollback — ist die Disziplin, die das ganze System trotz Updates und Major-Wechseln stehen lässt.

Horizontale Skalierung

Mehrere TYPO3-Frontend-Pods bedienen Anfragen parallel. Ein Horizontal Pod Autoscaler reagiert auf CPU- oder Custom-Metriken und fährt zusätzliche Pods hoch, wenn eine Pressemitteilung viral geht oder eine Kampagne anspringt. Keine manuelle Server-Aufstockung mehr.

Persistent Storage für fileadmin und Uploads

TYPO3 schreibt Uploads in fileadmin — das geht im Cluster nicht ohne Shared Storage. PersistentVolumeClaims mit S3-kompatiblem Backend, CSI-Treiber oder ReadWriteMany-NFS sind die drei üblichen Wege. Wer das ignoriert, hat im ersten Pod-Restart ein leeres fileadmin.

Job-Scheduling für Cron und Indexer

TYPO3 hat Hintergrundjobs: Scheduler-Tasks, Solr-Indexierung, Sitemap-Generierung, Cache-Warming, Cleanup-Jobs. Auf Kubernetes laufen die als CronJob oder als separate Worker-Pods, getrennt von den Frontend-Pods. Ein Indexer-Lauf bringt das Frontend nicht mehr in die Knie.

Observability für TYPO3-Workloads

Prometheus-Metriken, strukturierte Logs in einem zentralen Stack (Loki, ELK), Traces über OpenTelemetry. Wer weiß, welcher Pod welchen 502-Fehler wann produziert hat, debuggt nicht mehr mit SSH und tail — sondern mit einer Query über die letzten 30 Tage.

Sicherheits-Defaults & mTLS-Mesh

NetworkPolicies trennen Workloads voneinander, Pod Security Standards setzen Restricted als Default, ein Service Mesh (Linkerd oder Istio) verschlüsselt Service-zu-Service-Verbindungen mit mTLS. In unseren Setups läuft die Zertifikats-Verwaltung über cert-manager als Rotations-Layer, der je nach Plattform den passenden Issuer anbindet (private CA on-prem, Vault, AWS Private CA, Azure Key Vault) — dieselbe Linie ziehen wir bis in die Datenbank- und Cache-Verbindungen (Client-Zertifikate an MariaDB/Postgres und Redis/Valkey), nicht nur bis zum Pod-Sidecar. Secrets werden über externe Stores (SOPS+age, Vault, KMS) eingespielt, nicht ins Image gebacken.

Reproduzierbare Deployments & Rollback

Reproduzierbare Deployments und sauberes Rollback gibt es auch ohne Kubernetes — klassische DevOps-Pipelines mit Ansible, Capistrano oder Deployer leisten das ebenfalls. Was ein Cluster spezifisch beisteuert: Rolling Updates und Readiness-Probes als Plattform-Primitive, deklarative Helm-/Kustomize-Pakete als einzige Wahrheit, ephemere Pods, die Stateless-Disziplin erzwingen, Persistent-Volume-Snapshots als Restore-Anker, Dev/Staging/Prod-Parität über dieselben Manifests. Die Disziplin ist nicht neu — der Cluster macht sie nur unausweichlich.

Verwandte Architekturen, mit denen TYPO3 Kubernetes kombiniert wird.

Wo TYPO3-Cluster typischerweise andocken — oder von welchen Architekturen aus es sich lohnt, Richtung Kubernetes zu bewegen.

TYPO3 (klassisch)

Bestehende TYPO3-Installationen auf LAMP oder Managed-Hosting sind der typische Ausgangspunkt. Der Cluster-Weg bedeutet nicht, das CMS auszutauschen — sondern die Betriebsumgebung. TYPO3 selbst bleibt 1:1.

TYPO3 bei Moselwal
TYPO3 (klassisch)

Docker / Compose

Wer schon mit Docker-Containern arbeitet, hat die Hauptarbeit — ein lauffähiges TYPO3-Image — erledigt. Der Schritt zu Kubernetes ist dann vor allem die Migration der Compose-Datei in Manifests oder einen Helm-Chart.

OpenShift

Red Hat OpenShift ist eine Kubernetes-Distribution mit stärker eingebauten Security-Defaults (SCC, SELinux) und integrierter CI/CD. Für Mittelstandskunden, die ohnehin RHEL und Red-Hat-Subscription haben, oft der pragmatischere Cluster-Einstieg.

OpenShift vs. Kubernetes
OpenShift

Managed Kubernetes (EKS, AKS, GKE, IONOS)

Wer den Cluster nicht selbst betreiben will, lässt Control Plane und Worker bei einem Hyperscaler oder europäischen Anbieter laufen. Für Mittelstand-Setups oft mit europäischem Anbieter (IONOS, OVHcloud, STACKIT) wegen Datenstandort und Vertragsrecht sinnvoll.

Bare-Metal-Kubernetes

Eigene Hardware im eigenen Rechenzentrum, Kubernetes-Cluster mit kubeadm oder Talos. Für Unternehmen mit besonders hohen Souveränitätsanforderungen oder bereits vorhandenem Rechenzentrum — mehr operativer Aufwand, dafür volle Kontrolle bis zum Blech.

AI-Ready Plattformen

AI-Ready CMS und Cluster-Betrieb adressieren unterschiedliche Achsen — Sichtbarkeit in generativer Suche und Agent-Kompatibilität auf der einen Seite, Last, Verfügbarkeit und Mandantentrennung auf der anderen. Wer nur AI-ready bauen will, braucht keinen Cluster; AI-Ready CMS läuft auch auf einem einzelnen Server. Wo beide Anforderungen beim gleichen Mandanten zusammenkommen, profitiert die KI-Schicht vom selben Disziplin-Set wie der Cluster (Deployments, Restore-Tests, Multi-Site-Trennung) — das ist die natürliche Klammer, keine technische Voraussetzung.

AI-Ready CMS
AI-Ready Plattformen

Verwandte Open-Source-Pakete für TYPO3 im Cluster.

Diese eigenen Pakete adressieren die typischen Cluster-Stolperstellen — von Shared Storage bis Secret-Handling — und sind aus fünf Jahren TYPO3-Cluster-Betrieb entstanden. Sie machen den Cluster-Betrieb performanter und einfacher, als es mit dem TYPO3-Core allein möglich wäre: weniger Workarounds in der Konfiguration, weniger Eigenbau-Glue-Code, weniger Sonderfälle im Patch-Management.

cluster-file-backend

Speicher-Backend für TYPO3 fileadmin im Cluster — löst genau das Persistent-Storage-Problem, das jeder Kubernetes-Einsatz mitbringt.

Zum Paket
cluster-file-backend

frankenphp

Moderner PHP-Runtime mit Worker-Mode, hervorragend für Container-Betrieb im Cluster — weniger Startup-Cost, bessere Auslastung der Pods.

Zum Paket
frankenphp

keyvalue-store

Redis/Valkey-Integration für TYPO3 — zentraler Cache und Session-Storage im Cluster, ohne den jeder Pod sein eigenes Caching nachbaut.

Zum Paket
keyvalue-store

typo3-config

Fluent Config-API für Caching, Logging, Secrets, TLS/mTLS — saubere, reproduzierbare TYPO3-Konfiguration für Multi-Pod-Setups.

Zum Paket
typo3-config

secret-resolver

Secrets aus externen Stores einbinden — keine Secrets im Image, keine Secrets im Git, kompatibel mit SOPS, Vault und Kubernetes-Secrets.

Zum Paket
secret-resolver

Häufige Fragen zu TYPO3 auf Kubernetes.

Die Fragen, die in technischen Erstgesprächen immer kommen — zu Aufwand, Risiken und Abgrenzung.

Brauche ich für eine kleine TYPO3-Seite wirklich Kubernetes?+

Nein. Für eine 50-Seiten-Broschüre-Website mit einer Redakteurin reicht in der Regel ein gutes Managed-TYPO3-Hosting. Kubernetes wird ab einem der drei Punkte interessant: regelmäßige Lastspitzen, mehrere Redaktions-Mandanten in einem Setup, oder Compliance-Anforderungen, die nachweisbare Trennung verlangen.

Was macht TYPO3-Cluster-Betrieb anders als andere Web-Apps?+

Drei Eigenheiten: fileadmin braucht Shared Storage, Scheduler-Jobs dürfen nicht parallel auf denselben Pods laufen (sonst Doppelversand), und der Install-Tool-Endpoint muss netzwerkseitig hart geschnitten werden. Wer einen TYPO3-Cluster wie eine x-beliebige PHP-App betreibt, baut sich Folge-Bugs ein.

Wie hoch ist der initiale Aufwand?+

Für eine Standard-TYPO3-Site auf einen sauberen Cluster: meist 4–8 Wochen, inklusive Helm-Chart, Persistent Storage, CI/CD-Pipeline, Monitoring-Stack und Rollback-Drills. Wer das ad-hoc macht, ist schneller; wer es nachhaltig macht — also so, dass die zweite Site in einem Bruchteil der Zeit hochgezogen wird — investiert einmal mehr.

Sind die Kosten höher als bei klassischem Hosting?+

Bei einer einzigen Site oft ja. Bei drei und mehr Sites, die sich Cluster, Monitoring und CI/CD teilen, kippt das Verhältnis. Plus: weniger Personenstunden für Routine-Updates, schnelleres Rollback bei Fehlern, geringeres Ausfall-Risiko — das läuft im klassischen TCO selten in der Hosting-Rechnung mit.

Welche TYPO3-Versionen lassen sich auf Kubernetes betreiben?+

Praktisch alle ab TYPO3 9 LTS, vernünftig ab 11 LTS, empfohlen 12/13 LTS. Bei älteren Versionen wird der Container-Build und das Storage-Setup aufwändiger, weil viele Setups noch direkte Filesystem-Annahmen treffen. Ein Upgrade-Pfad parallel zur Cluster-Migration ist oft die saubere Lösung.

Wie sieht der Einstieg mit Moselwal aus?+

Erstgespräch zu aktueller Infrastruktur, Last-Profil und Compliance-Anforderungen. Daraus eine konkrete Cluster-Skizze: welcher Provider, welche Storage-Strategie, welche CI/CD-Pipeline, welche Monitoring-Bausteine. Umsetzung iterativ — erst Staging, dann Produktion, mit Rollback-Drill vor Go-Live.

Wie hängt TYPO3-Cluster-Betrieb mit AI-Ready Plattformen zusammen?+

Nicht zwangsläufig — beide Themen adressieren unterschiedliche Achsen. AI-Ready CMS heißt: strukturierte Content-Delivery, retrieval-/agent-kompatible Endpoints, sauberes Datenmodell. Das funktioniert auch auf einem einzelnen Server. Cluster-Betrieb heißt: Last, Verfügbarkeit, Mandantentrennung, reproduzierbare Deployments. Beide treffen sich dort, wo derselbe Mandant erstens in generativer Suche sichtbar sein und zweitens Lastspitzen oder Verfügbarkeits-Anforderungen abfedern muss. Dann zahlt die Cluster-Disziplin in die KI-Use-Cases ein — sie ist aber nicht der Grund, AI-ready zu werden, und kein Muss dafür.

Welche Open-Source-Bausteine setzen Sie konkret im Cluster ein?+

Aus unserem eigenen Stack: cluster-file-backend für Shared Storage von fileadmin (S3-kompatibel oder Object Storage), frankenphp als PHP-Runtime im Worker-Mode (weniger Startup-Cost pro Pod), keyvalue-store für Redis/Valkey-Cache und Session-Sharing, typo3-config als Fluent-Config-API für Caching, Logging und TLS/mTLS, secret-resolver für SOPS-/Vault-/KMS-Anbindung. Alles offen unter MIT, alles in unserer eigenen Plattform produktiv — keine Black-Box-Lieferung. Details in der Sektion „Verwandte Open-Source-Pakete“ weiter oben.

Was bleibt in TYPO3 stateful, was lässt sich stateless betreiben?+

Stateless: Frontend-Pods, Scheduler-Worker, Indexer-Pods, FrankenPHP-Workers — die können Sie beliebig hochskalieren, neu rollen und wegwerfen. Stateful: die Datenbank (MariaDB/MySQL/Postgres im StatefulSet oder als managed Service), der File-Storage (S3/Object-Store oder ReadWriteMany-Volume), der Session-/Cache-Store (Redis/Valkey), der Solr- oder OpenSearch-Index. Faustregel: alles, was Daten persistiert, wandert außerhalb des Application-Deployments — dann lässt sich der Pod-Pool wirklich stateless betreiben.

Wie binden Sie Object Storage (S3, MinIO) an TYPO3-fileadmin an, ohne dass Renditions bei jedem Pod-Restart neu erzeugt werden?+

Zwei Pfade. Erstens: FAL-Driver mit S3-kompatiblem Backend (über unsere cluster-file-backend-Extension oder einen S3-FAL-Driver), der fileadmin und Processed-Files im Bucket hält — Renditions landen ebenfalls dort und bleiben über Pod-Restarts hinweg erhalten. Zweitens für Bestands-Setups, die nicht migriert werden: ReadWriteMany-Volume (NFS oder CephFS) mit gemeinsamem Processed-File-Pfad. Wichtig in beiden Pfaden: ein CDN davor (CloudFront, Fastly oder europäische Alternative), damit der Bucket nicht zur Render-Maschine wird, und identische ProcessedFileRepository-Konfiguration in jedem Pod, damit dieselben Cache-Keys gebildet werden.

Wo läuft das Session-Handling in einem Multi-Pod-TYPO3 — Cookies, Sticky Sessions oder zentraler Redis?+

Im Frontend bleibt TYPO3-Session-Handling über Cookies und FE-User-Hash zustandsarm genug, dass jeder Pod sie auflösen kann. Sobald Warenkörbe, mehrstufige Formulare oder authentifizierte Sessions ins Spiel kommen, gehört der Session-Store in ein zentrales Backend — Redis oder Valkey über die keyvalue-store-Extension, mit AUTH und TLS zwischen Pod und Store. Sticky Sessions am Ingress sind eine Krücke, die im ersten Pod-Reschedule kippt; wir empfehlen sie nicht. Das Backend-Session-Handling läuft über den separaten Worker-Pool und sollte sich denselben Store teilen.

Wann ist Redis oder Valkey im Cluster zwingend, wann reicht der lokale TYPO3-Cache?+

Wir setzen Redis oder Valkey praktisch immer ein, sobald TYPO3 unter realer Last steht — unabhängig davon, ob ein oder mehrere Pods laufen. Der primäre Grund ist Datenbank-Entlastung und Cache-Speed: die typo3_cache_*-Tabellen werden in MySQL oder Postgres schnell zur spürbaren Last, weil jeder Cache-Read als SQL-Query läuft statt aus dem RAM zu kommen. Ein In-Memory-Store nimmt diesen Druck weg und beschleunigt die Cache-Wege deutlich. Im Multi-Pod-Setup kommt der zweite Grund hinzu: ein zentraler Cache-Store ist sauberer als ein File-Cache auf ReadWriteMany-Volume, weil Invalidierungen atomar greifen statt über Filesystem-Locks zu laufen. Valkey ist seit dem Redis-Lizenzwechsel auf SSPL die Default-Wahl — protokollkompatibel, BSD-3-Clause-lizenziert, bei europäischen Anbietern als Managed Service verfügbar.

Wie läuft mTLS in einem TYPO3-Kubernetes-Cluster konkret — Service Mesh, Datenbank, Cache, Ingress?+

Wir verdrahten mTLS auf vier Ebenen, weil jede einzelne sonst die schwächste Stelle wäre:

  • Pod-zu-Pod über ein Service Mesh — Linkerd in den meisten Setups (leichter Sidecar, mTLS by Default), Istio wenn die Plattform bereits dort steht. Identität kommt aus dem ServiceAccount, nicht aus der Pod-IP.
  • Pod-zu-Datenbank mit Client-Zertifikaten an MariaDB oder Postgres. Kein Passwort über den Draht, Identität über das Zertifikat — sobald der Zertifikats-Workload weg ist, ist auch die Verbindung weg.
  • Pod-zu-Cache mit TLS plus Client-Auth an Redis/Valkey. AUTH alleine reicht uns nicht; das Zertifikat schiebt die Identität in dieselbe Schicht wie alle anderen Verbindungen.
  • Ingress-zu-Origin auf der Reverse-Proxy-Strecke (z. B. Caddy zu FrankenPHP). HTTPS am Edge ist Standard, aber zwischen Ingress-Controller und Pod laufen viele Setups noch Klartext — das schließen wir konsequent.

Zertifikate kommen aus einer internen CA, orchestriert über cert-manager, der je nach Plattform den passenden Issuer anspricht — private CA on-prem, HashiCorp Vault, AWS Private CA, Azure Key Vault. Automatische Rotation typisch alle 24 Stunden. Die typo3-config-Extension nimmt die Zertifikate aus dem Pod-Volume und mountet sie sauber an die TLS-Endpunkte der Datenbank- und Cache-Verbindungen, sodass TYPO3 selbst nichts davon mitbekommen muss außer dem Pfad.

Vorteile: keine Klartext-Credentials im Image, keine Pod-Identität über IP-Adressen, NIS-2- und Branchen-Compliance-Argument auf der Verschlüsselungs-Achse fast geschenkt. Preis: Observability wird teurer (Mesh-Sidecar bringt Latenz und Tracing-Overhead), Debugging braucht mTLS-bewusste Tools (linkerd tap, istioctl proxy-config). Wer einmal mit Klartext-Pod-Traffic gelebt hat, will nicht zurück.

Wie testet man Backups eines TYPO3-Clusters wirklich — Restore-Drill, RPO und RTO?+

Backup ohne dokumentierten Restore-Drill ist eine Hoffnung. Praxis: tägliche Datenbank-Dumps plus Persistent-Volume-Snapshots (Velero deckt beides Kubernetes-nativ ab), wöchentliche Object-Storage-Versionierung, vierteljährlicher Restore-Drill in ein isoliertes Namespace mit Smoke-Test. Dokumentiertes RPO (typisch 1 Stunde für Standard-Setups, 15 Minuten für E-Commerce) und RTO (4 Stunden Standard, 1 Stunde für kritische). Wer den Restore nicht einmal pro Quartal probt, weiß im Ernstfall nicht, ob er funktioniert — und das ist genau der Ernstfall.

Wie sieht ein Multi-Region-TYPO3-Setup aus, wenn der Datenbank-Write-Pfad in einer Region bleiben muss?+

Standard-Muster: eine Primary-Region mit Schreib-Datenbank und Editorial-Backend, eine oder mehrere Read-Regions mit Read-Replicas oder geografisch verteilten Frontend-Pods, die ausschließlich lesen. CDN davor (CloudFlare, Fastly oder europäische Anbieter wie OVHcloud), damit Cache-Hits regional terminieren. File-Storage entweder zentral mit CDN-Pull-Through oder über Cross-Region-Replication des Object-Stores. Editorial-Schreibvorgänge erzeugen Cache-Tag-Invalidierungen, die über die CDN-API in alle Regionen ausgerollt werden. Failover auf eine andere Region heisst Promotion eines Replicas zur Primary, nicht Multi-Master — das vermeidet Konfliktfelder im TYPO3-Datenmodell.

Wie läuft eine Cluster-Migration zwischen zwei Providern (z. B. von IONOS zu STACKIT) ohne Downtime?+

Vier Phasen. Erstens: am Ziel-Provider den Cluster aufbauen, dieselben Helm-Charts deployen, Test-Domain dranhängen, Smoke-Tests. Zweitens: Datenbank-Replikation aufsetzen (Primary alt → Replica neu, asynchron oder semi-synchron), File-Storage spiegeln (Object-Store-Replication oder rsync-Sync-Phase). Drittens: kurze Wartungsphase, Datenbank-Schwenk auf den neuen Primary, DNS auf neuen Ingress umstellen — oft 5 bis 15 Minuten Hard-Cutover. Viertens: der alte Cluster bleibt zwei Wochen als Rollback-Anker stehen, dann Abriss. Mit container-basierten Charts und ordentlichem Provider-Reset ist das ein zwei- bis vierwöchiges Projekt, nicht ein Quartal.

Was bedeutet GitOps für TYPO3-Cluster konkret — ArgoCD oder Flux, Helm-Charts, Secret-Workflows?+

GitOps heißt: der Cluster-Zustand ist im Git-Repository, ein Controller (ArgoCD oder Flux) reconcilet ihn permanent gegen den Live-Cluster. Für TYPO3 bedeutet das: Helm-Chart-Repository plus values-Files pro Stage (dev/staging/prod) im Repo, Secrets verschlüsselt über SOPS+age oder External Secrets aus Vault/KMS gezogen — nie im Klartext, nie im Image. Jede Änderung läuft über Pull Request mit Code-Review, jedes Rollback ist ein Git-Revert. Wir setzen ArgoCD in den meisten Setups ein, Flux dort, wo der Operator bereits etabliert ist; die Wahl ist meist Team-Präferenz, nicht technisch zwingend.

Wie geht man mit AI-Crawlern (GPTBot, ClaudeBot, PerplexityBot) um, ohne dass sie den Cluster durcheinanderbringen?+

Drei Hebel. Erstens llms.txt und robots.txt mit klaren Crawl-Budgets und Pfad-Whitelists — das adressiert die Bots, die sich an Regeln halten. Zweitens Ingress-seitiges Rate-Limiting pro User-Agent (NGINX limit_req mit User-Agent-Schlüssel, Traefik-Middleware oder Caddy-Rate-Limit), damit ein durchgedrehter Crawler den Frontend-Pool nicht zieht. Drittens ein separater Worker-Pool nur für identifizierten AI-Crawler-Traffic über Header-basiertes Routing — dann bleibt der Frontend-Pool für menschliche User unberührt, und der Crawler-Pool lässt sich separat skalieren oder bei Bedarf abklemmen. Bei sensiblen Pfaden (Install-Tool, Admin-Endpoints, interne Routen) sowieso 404/403 unabhängig vom User-Agent.

Nächster Schritt

Trägt Ihr TYPO3-Betrieb die nächste Lastspitze?

Erstgespräch zum aktuellen Setup, zu Last-Profil und Risiken — ohne Verkaufs-Deck.

Cluster-Skizze anfragen

Erste Einschätzung innerhalb von zwei Werktagen.