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.
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.
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.
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.
frankenphp
Moderner PHP-Runtime mit Worker-Mode, hervorragend für Container-Betrieb im Cluster — weniger Startup-Cost, bessere Auslastung der Pods.
keyvalue-store
Redis/Valkey-Integration für TYPO3 — zentraler Cache und Session-Storage im Cluster, ohne den jeder Pod sein eigenes Caching nachbaut.
typo3-config
Fluent Config-API für Caching, Logging, Secrets, TLS/mTLS — saubere, reproduzierbare TYPO3-Konfiguration für Multi-Pod-Setups.
secret-resolver
Secrets aus externen Stores einbinden — keine Secrets im Image, keine Secrets im Git, kompatibel mit SOPS, Vault und Kubernetes-Secrets.
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.
AUTHalleine 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.
Trägt Ihr TYPO3-Betrieb die nächste Lastspitze?
Erstgespräch zum aktuellen Setup, zu Last-Profil und Risiken — ohne Verkaufs-Deck.
Erste Einschätzung innerhalb von zwei Werktagen.

