FYI. This blog is translated by machine. Please ignore any spelling and grammar errors; sorry for such inconvenience. We appreciate your understanding and support.
Versuchen Sie, TYPO3 auf Kubernetes zu installieren, wissen aber nicht, wo Sie anfangen sollen? Sie sind nicht allein! Egal, ob Sie Entwickler, Systemadministrator sind oder einfach nur cloudbasierte Lösungen für Ihre TYPO3-Website erkunden, die Einrichtung auf Kubernetes mag zunächst knifflig erscheinen.
Aber keine Sorge - dieser Leitfaden ist hier, um zu helfen. Wir führen Sie Schritt für Schritt durch den gesamten Prozess, um sicherzustellen, dass Sie TYPO3 mit Kubernetes reibungslos und selbstbewusst installieren können. Am Ende haben Sie eine TYPO3-Website, die in einem Kubernetes-Cluster läuft - bereit zum Skalieren, Aktualisieren und professionellen Arbeiten.
Warten Sie! Bevor Sie weitermachen, überlegen Sie, ob Sie Ihre TYPO3-Website auf einer anderen Plattform starten oder hosten möchten. Wir empfehlen Ihnen, unsere TYPO3-Installations-Serie unten zu überprüfen, um schrittweise Anleitungen für verschiedene Plattformen zu erhalten.
- So installieren Sie TYPO3 auf AWS
- 7 Schritte zur Installation von TYPO3 auf Google Cloud
- Installieren Sie TYPO3 mit DDEV
- TYPO3 & Azure Cloud - 7 Schritte zur Installation & Konfiguration
- So installieren Sie TYPO3 mit Docker
Lassen Sie uns eintauchen und eine leistungsstarke, sichere TYPO3-Umgebung auf Kubernetes aufbauen - auf die richtige Art und Weise.
Was ist Kubernetes?
Bevor wir mit dem Setup beginnen, werfen wir einen kurzen Blick darauf, was Kubernetes eigentlich ist.
Kubernetes (oft verkürzt als K8s) ist eine kostenlose, Open-Source-Plattform, die entwickelt wurde, um die Bereitstellung, Skalierung und Verwaltung von Software in Containern zu automatisieren. Denken Sie an das System, das Ihre Apps ordnungsgemäß am Laufen hält - egal wie groß sie werden oder wie oft sie aktualisiert werden müssen.
Wenn Sie TYPO3 mit Kubernetes installieren, erhalten Sie leistungsstarke Funktionen wie:
- Hohe Verfügbarkeit: Ihre TYPO3-Website kann online bleiben, auch wenn etwas schief geht.
- Automatische Skalierung: Mehr Traffic? Kubernetes fügt mehr Ressourcen hinzu.
- Rolling Updates: Aktualisieren Sie TYPO3 ohne Ausfallzeiten.
Einfach ausgedrückt hilft Kubernetes dabei, Ihre Anwendungen reibungslos auszuführen - damit Sie sich nicht um die unordentliche Arbeit im Hintergrund kümmern müssen.
Was ist TYPO3?
TYPO3 ist ein kostenloses, Open-Source Content Management System (CMS), das Unternehmen und Organisationen dabei unterstützt, ihre Websites zu erstellen, zu verwalten und zu erweitern. Es wurde 1997 von Kasper Skårhøj gegründet und ist seitdem zu einer der beliebtesten CMS-Plattformen geworden - insbesondere in Europa.
TYPO3 ist in PHP geschrieben und verwendet TypoScript, eine leistungsstarke Konfigurationssprache, die fortschrittliche Anpassungsmöglichkeiten und Flexibilität bietet. Sie benötigen keine spezielle Software - TYPO3 läuft in Ihrem Browser und gibt Inhalte mit Standard-HTML und JavaScript aus.
Ob Sie eine kleine Unternehmenswebsite, ein Universitätsportal oder eine große Unternehmenswebsite betreiben, TYPO3 kann Ihren Anforderungen gerecht werden.
Stellen Sie sich ein Unternehmens-CMS vor, das sich mit Ihrem Projekt weiterentwickelt, ohne dabei an Komplexität zuzunehmen. Das ist TYPO3 für Sie! Es ist eine Open-Source-Powerhouse, das sich besonders auszeichnet durch:
Hier sind die Hauptgründe, warum TYPO3-Entwickler, Vermarkter und Agenturen TYPO3 für seine:
- Modularität: Lassen Sie Ihre Website genau das tun, was Sie brauchen. Nicht mehr, nicht weniger.
- Sicherheit & Stabilität: Regelmäßige LTS (Langzeitunterstützung) -Versionen helfen Ihnen, jahrelang sicher zu bleiben.
- Skalierbarkeit: Von einer winzigen lokalen Website bis zu einer riesigen globalen Plattform kann TYPO3 damit umgehen.
- Gemeinschaftlich getriebene Entwicklung: Genießen Sie eine lebhafte globale Gemeinschaft, die TYPO3 kontinuierlich verfeinert und weiterentwickelt.
Wussten Sie schon? TYPO3 betreibt über 500.000+ aktive Websites weltweit!
Erfahren Sie mehr über TYPO3-Fakten.
Warum TYPO3 verwenden?
TYPO3 bietet erweiterte Funktionen wie granulare Benutzerrollen, Multi-Site-Verwaltung und ein starkes Ökosystem von Erweiterungen. Es ist perfekt für Unternehmen und Agenturen, die Skalierbarkeit und langfristige Unterstützung benötigen.
Warum TYPO3 auf Kubernetes ausführen?
- Skalierbarkeit & Hohe Verfügbarkeit: Starten Sie zusätzliche Pods (Container-Replikate), um Verkehrsspitzen oder Ausfälle zu bewältigen.
- Rolling Updates & Rollbacks: Implementieren Sie neue TYPO3-Versionen mit minimaler Ausfallzeit und einfacher Rücknahme bei Bedarf.
- Ressourceneffizienz: Nutzen Sie Cluster-Ressourcen effektiver, indem Sie Container über Knoten planen.
- Ökosystem-Integrationen: Kubernetes arbeitet mit zahlreichen Add-Ons zusammen (z. B. Ingress-Controller, Service-Meshes, Anbieter für persistente Speicher).
Für wen ist dieser Leitfaden gedacht?
- Fortgeschrittene Entwickler oder Systemadministratoren, die mit Docker/Containern vertraut sind.
- Projekte, die mit einem höheren Verkehrsaufkommen rechnen oder eine robuste Betriebszeit benötigen.
Kurzfassung der Anforderungen für TYPO3 auf Kubernetes
1. Kubernetes-Cluster
Sie benötigen einen funktionierenden Kubernetes (K8s)-Cluster. Dies kann eingerichtet werden mit:
- Lokalen Tools wie Minikube oder Kind für Tests und Entwicklung
- Verwalteten Cloud-Anbietern wie Google Kubernetes Engine (GKE), Amazon EKS, Azure AKS oder DigitalOcean Kubernetes für die Produktion
2. Container-Runtime
Ein Container-Runtime wie Docker oder containerd muss installiert und von Ihrer Kubernetes-Umgebung unterstützt werden. Die meisten verwalteten Cluster enthalten dies standardmäßig.
3. TYPO3 Docker-Image
Verwenden Sie ein TYPO3 Docker-Image, das die erforderlichen Komponenten wie enthält:
PHP
Apache oder Nginx
TYPO3-Kern
Erforderliche TYPO3-Erweiterungen
Sie können offizielle Images verwenden oder ein benutzerdefiniertes erstellen, das auf die Anforderungen Ihres Projekts zugeschnitten ist.
4. Persistenter Speicher (PVCs)
TYPO3 benötigt persistenten Speicher für:
Hochgeladene Assets (Bilder, Dokumente)
Erweiterungsdateien
Konfigurations- und temporäre Dateien
Konfigurieren Sie PersistentVolumeClaims (PVCs) in Ihrer Kubernetes-Umgebung, um sicherzustellen, dass diese Daten über Bereitstellungen hinweg erhalten bleiben.
5. Datenbank (MySQL oder MariaDB)
TYPO3 benötigt eine Datenbank, um zu funktionieren. Sie können eine MySQL- oder MariaDB-Datenbank innerhalb des Clusters bereitstellen oder einen externen verwalteten Dienst verwenden. Stellen Sie sicher, dass die Datenbank über Folgendes verfügt:
Richtige Anmeldeinformationen und Benutzerberechtigungen
Persistenter Speicher
Sicheren Zugriff von TYPO3-Pods
6. Ingress-Controller
Installieren Sie einen Ingress-Controller wie NGINX Ingress oder Traefik, um Ihre TYPO3-Anwendung ins Internet zu bringen. Dies ermöglicht den Zugriff über einen Domainnamen und unterstützt die SSL-Konfiguration.
7. PHP-Konfiguration und Umgebungsvariablen
Stellen Sie sicher, dass die PHP-Umgebung für TYPO3 optimiert ist, einschließlich:
Speicherlimits (256M oder höher)
Maximale Dateigröße für den Upload
Ausführungszeitlimits
Verwenden Sie ConfigMaps und Secrets, um TYPO3-spezifische Einstellungen und sensible Umgebungsvariablen wie Datenbankanmeldeinformationen, TYPO3-Kontext und SMTP-Einstellungen zu verwalten.
8. E-Mail-Konfiguration
TYPO3 verwendet E-Mails für Benachrichtigungen, Passwortwiederherstellung und mehr. Richten Sie einen E-Mail-Transportdienst (SMTP) ein, indem Sie interne oder Drittanbieter wie SendGrid oder Mailgun verwenden.
9. Überwachung und Protokollierung
Um die Sichtbarkeit in Ihrer TYPO3-Instanz aufrechtzuerhalten, konfigurieren Sie:
Überwachungstools wie Prometheus und Grafana
Protokollierungslösungen wie den ELK-Stack oder Loki
Gesundheitsprüfungen und Pod-Protokolle über
kubectl
oder ein Kubernetes-Dashboard
10. Helm (Optional, aber nützlich)
Helm ist ein Paketmanager für Kubernetes, der die Bereitstellung vereinfacht. Helm-Charts können die Installation von TYPO3, Datenbanken, Ingress und anderen Abhängigkeiten automatisieren.
TYPO3 Versionen & Support-Roadmap.
Vor dem Eintauchen beachten Sie die Veröffentlichungszyklen von TYPO3:
- LTS (Langzeitunterstützung): In der Regel drei Jahre Updates pro Hauptversion.
- ELTS (Erweiterte LTS): Bezahlte Option, wenn Sie zusätzliche Zeit über die Standard-LTS hinaus benötigen.
Wenn Sie auf einer derzeit unterstützten LTS-Version bleiben, erhalten Sie wichtige Sicherheitspatches und Funktionsverbesserungen.
TYPO3 Version & PHP-Kompatibilität für Composer-Installation
1. PHP & TYPO3 Kompatibilität
TYPO3 Version | PHP Versionen | Status |
9 ELTS | 7.2–7.4 | Aktive ELTS |
10 ELTS | 7.2–7.4 | Aktive ELTS |
11 ELTS | 7.4, 8.0 | Aktive ELTS |
12 LTS | 8.1–8.4 | Aktive ELTS |
13 LTS | 8.2–8.4 | Aktive ELTS |
2. Systemanforderungen
- Webserver: Apache oder Nginx
- Datenbank: MariaDB/MySQL empfohlen
- Composer: Empfohlen für ein reibungsloseres TYPO3-Erlebnis
Überprüfen Sie immer die offiziellen Systemanforderungen von TYPO3, um sicherzustellen, dass Sie auf dem neuesten Stand sind.
Verständnis der TYPO3-Architektur auf Kubernetes
Das Ausführen von TYPO3 in Kubernetes beinhaltet typischerweise:
- Ein Deployment für den Web + PHP Container(s), der den TYPO3-Code ausführt.
- Ein Service (Typ: ClusterIP oder LoadBalancer), um die TYPO3-Pod(s) intern oder extern freizugeben.
- Ein PersistentVolume (oder PersistentVolumeClaim) zur Speicherung von Datei-Uploads und anderen persistenten Daten.
- Eine Datenbank, entweder innerhalb des Clusters (MariaDB Deployment/StatefulSet) oder ein externer/verwalteter DB-Dienst (z. B. AWS RDS, Azure Database, Cloud SQL).
Architektur von Kubernetes & TYPO3.
Diagrammerklärung:
- Der Verkehr gelangt über einen Ingress oder einen Service, der mit einem LoadBalancer konfiguriert ist (in einer Cloud-Umgebung), in den Cluster.
- Die TYPO3-Pods führen den Webserver + PHP-FPM aus. Sie teilen sich ein Persistent Volume für Benutzeruploads, Bilder usw.
- Ein separates MariaDB-Deployment oder eine externe Datenbank hostet die Daten, die in der Regel auch von einem persistenten Volume unterstützt werden.
Wie man TYPO3 auf Kubernetes installiert.
Im Folgenden werden wir eine einfache lokale oder Cloud-basierte Einrichtung mit YAML-Manifesten skizzieren. Passen Sie sie bei Bedarf für Ihre Umgebung an (Minikube, EKS, GKE, AKS usw.).
Schritt 1. Voraussetzungen
- Docker zum Erstellen Ihres TYPO3-Images (wenn Sie Anpassungen vornehmen).
- Ein Kubernetes-Cluster (lokal mit Minikube oder einem Cloud-Anbieter).
- kubectl CLI verbunden mit Ihrem Cluster.
Schnelltipp: Möchten Sie TYPO3 mit Docker installieren? Lesen Sie diese Anleitung.
(Optional) Erwägen Sie die Verwendung von Helm für die Verpackung, aber wir bleiben bei reinem Kubernetes-YAML für Klarheit.
Schritt 2. Erstellen Sie ein TYPO3 Docker-Image.
Wenn Sie bereits ein Docker-Image haben, das TYPO3 + PHP + Nginx/Apache enthält, überspringen Sie diesen Schritt. Andernfalls:
# Example Dockerfile
FROM php:8.1-apache
RUN apt-get update && apt-get install -y \
libxml2-dev libzip-dev libpng-dev libjpeg-dev mariadb-client \
&& docker-php-ext-install mysqli gd zip xml mbstring
# Copy your TYPO3 code into /var/www/html or mount it as a volume
COPY . /var/www/html
RUN chown -R www-data:www-data /var/www/html
// Build & push (if hosting externally):
docker build -t your-registry/typo3:latest .
docker push your-registry/typo3:latest
# mariadb-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: mariadb
spec:
replicas: 1
selector:
matchLabels:
app: mariadb
template:
metadata:
labels:
app: mariadb
spec:
containers:
- name: mariadb
image: mariadb:10.5
env:
- name: MYSQL_ROOT_PASSWORD
value: supersecret
- name: MYSQL_DATABASE
value: typo3db
- name: MYSQL_USER
value: typo3user
- name: MYSQL_PASSWORD
value: supersecret
volumeMounts:
- name: db-pv
mountPath: /var/lib/mysql
volumes:
- name: db-pv
persistentVolumeClaim:
claimName: mariadb-pvc
Option B: Verwenden Sie eine externe oder verwaltete DB (z. B. Amazon RDS, Azure Database für MySQL usw.). In diesem Fall überspringen Sie das Bereitstellen von MariaDB im Cluster. Konfigurieren Sie einfach Ihre TYPO3-Umgebung so, dass sie auf den externen DB-Host und die Anmeldeinformationen verweist.
# mariadb-service.yaml
apiVersion: v1
kind: Service
metadata:
name: mariadb-service
spec:
selector:
app: mariadb
ports:
- port: 3306
name: mysql
// You’ll need a matching PersistentVolumeClaim:
# mariadb-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mariadb-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
Schritt 4. TYPO3 Bereitstellung & Service.
Unten ist ein Beispiel für die Verwendung von Nginx + PHP-FPM in einem einzelnen Container (oder einem auf Apache basierenden Image), um es einfacher zu halten. Passen Sie den Namen des Container-Images an, je nachdem, was Sie erstellt haben oder welches vorhandene Image Sie bevorzugen.
# typo3-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: typo3
spec:
replicas: 2
selector:
matchLabels:
app: typo3
template:
metadata:
labels:
app: typo3
spec:
containers:
- name: typo3
image: your-registry/typo3:latest
ports:
- containerPort: 80
env:
- name: TYPO3_DB_HOST
value: mariadb-service
- name: TYPO3_DB_NAME
value: typo3db
- name: TYPO3_DB_USER
value: typo3user
- name: TYPO3_DB_PASS
value: supersecret
volumeMounts:
- name: typo3-files
mountPath: /var/www/html/public/fileadmin
volumes:
- name: typo3-files
persistentVolumeClaim:
claimName: typo3-pvc
# typo3-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: typo3-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 2Gi
Schritt 5. Eingang (Optional)
Wenn Sie eine externe Domain oder einen LoadBalancer möchten, konfigurieren Sie ein Ingress oder einen Service vom Typ LoadBalancer. Zum Beispiel:
# typo3-ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: typo3-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
spec:
rules:
- host: your-typo3.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: typo3-service
port:
number: 80
Hinweis: Sie benötigen einen Ingress-Controller (z. B. Nginx Ingress), der in Ihrem Cluster installiert ist, damit dies funktioniert.
kubectl apply -f mariadb-pvc.yaml
kubectl apply -f mariadb-deployment.yaml
kubectl apply -f mariadb-service.yaml
kubectl apply -f typo3-pvc.yaml
kubectl apply -f typo3-deployment.yaml
kubectl apply -f typo3-service.yaml
# (Optional) Ingress
kubectl apply -f typo3-ingress.yaml
Check the status:
kubectl get pods
kubectl get svc
kubectl get ingress
Schritt 7. Abschließen von TYPO3.
Sobald die Pods ausgeführt werden:
- Zugriff auf den Service/Ingress: Gehen Sie zur Domain oder zur externen IP-Adresse.
- Installationsassistent: Wenn Ihr Image nicht bereits eine vorab konfigurierte LocalConfiguration.php enthält, sehen Sie den TYPO3-Installationsassistenten. Geben Sie den DB-Host (mariadb-service), den DB-Namen, Benutzer und Passwort ein.
- Vollständig: Melden Sie sich im Backend an und verwalten Sie Ihre TYPO3-Website wie gewohnt.
Wie man den TYPO3-Installationsassistenten startet.
Sobald alle Serverkonfigurationen abgeschlossen sind, ist es an der Zeit, das Setup über den TYPO3-Installationsassistenten abzuschließen. Dieser benutzerfreundliche, schrittweise Assistent hilft Ihnen, den Installationsprozess direkt in Ihrem Browser abzuschließen.
DevOps-Tipps für den Betrieb von TYPO3 auf Kubernetes.
- Verwenden Sie ein benutzerdefiniertes Docker-Image - Erstellen Sie ein auf Ihr Projekt zugeschnittenes TYPO3-Image mit der richtigen PHP-Version, Erweiterungen und Konfiguration. Halten Sie es schlank und versionskontrolliert.
- Nutzen Sie Helm-Charts - Verwenden Sie Helm, um Ihre TYPO3-Anwendung, Datenbank und Ingress-Einstellungen zu paketieren. Dies vereinfacht Bereitstellung und Rollback über verschiedene Umgebungen hinweg.
- Implementieren Sie GitOps-Praktiken - Verwalten Sie TYPO3 Kubernetes-Bereitstellungen mithilfe von GitOps-Tools wie Argo CD oder Flux. Dies gewährleistet Versionskontrolle, Rückverfolgbarkeit und automatische Synchronisierung.
- Optimieren Sie den persistenten Speicher - Verwenden Sie PersistentVolumeClaims für die Ordner fileadmin, uploads und typo3temp. Wählen Sie eine schnelle und zuverlässige Speicherklassen für Leistung.
- Externalisieren Sie Konfiguration mit ConfigMaps und Secrets - Speichern Sie Umgebungsvariablen, TYPO3-Kontext und Anmeldeinformationen sicher mithilfe von Kubernetes ConfigMaps und Secrets.
- Aktivieren Sie das horizontale Pod-Autoscaling - Skalieren Sie TYPO3-Pods automatisch basierend auf CPU- oder Speicherauslastung, um Verkehrsspitzen ohne manuelle Eingriffe zu bewältigen.
- Verwenden Sie Readiness- und Liveness-Probes - Definieren Sie Probes, um die Gesundheit von TYPO3 zu überprüfen und zu verhindern, dass Verkehr zu fehlerhaften Containern geleitet wird.
- Zentrales Logging und Monitoring - Integrieren Sie Tools wie Prometheus, Grafana, Loki oder das ELK-Stack für eine bessere Beobachtbarkeit von TYPO3-Containern, PHP-Fehlern und Datenbankleistung.
Abschluss.
Das Ausführen von TYPO3 auf Kubernetes bietet eine robuste, skalierbare Grundlage für Ihr CMS. Durch die Aufteilung des Web-Frontends, der PHP-Laufzeitumgebung und der Datenbank erhalten Sie eine größere Kontrolle über die Ressourcenzuweisung, Updates und Widerstandsfähigkeit. Obwohl Kubernetes eine steilere Lernkurve als einfachere Single-VM- oder Docker-Compose-Setups hat, zahlt es sich durch fortgeschrittene Funktionen wie Rolling Updates, automatische Skalierung und Multi-Cluster-Bereitstellungen aus.
Fröhliches TYPO3ing auf Kubernetes!
FAQ
Many prefer splitting these into separate containers for best-practice microservices. Our example lumps them for simplicity, but you can have one container for Nginx and another for PHP-FPM and link them in the same Pod.
Store them in Kubernetes Secrets rather than hardcoding in YAML. Then reference via env variables in your Deployment.
It can be done for small setups. For production or large-scale environments, consider an external/managed database service for reliability and performance.
Absolutely. Update your Docker image or Deployment definition, and Kubernetes will handle rolling updates. If something goes wrong, you can easily roll back.
Use a storage solution that supports ReadWriteMany (e.g., NFS, GlusterFS, or cloud file storage). That ensures all Pods can read/write to the same volume simultaneously.
Update your Docker image with the new TYPO3 version, push it to your registry, then modify the image tag in your Deployment’s YAML. K8s handles the rolling update.
Enable the Horizontal Pod Autoscaler (HPA) to scale up/down your TYPO3 deployment based on CPU or custom metrics. This is particularly beneficial for high-traffic sites.
Logs typically go to stdout/stderr. Use kubectl logs <pod> or a logging system (e.g., EFK stack—Elasticsearch, Fluentd, Kibana) for central log management.
Helm can simplify packaging and versioning. You might find existing charts for TYPO3 or create your own for a more streamlined workflow.
Point your domain’s DNS to the Ingress Controller’s external IP or LoadBalancer. Then specify that domain in the Ingress resource’s host.
Sanjay Chauhan
CTO - T3Planet & NITSANSanjay Chauhan, Mitbegründer von NITSAN (Preisgekrönte TYPO3 Agentur ) und Pionier von T3Planet, dem ersten TYPO3 Shop weltweit. Ein wahrer TYPO3-Fanatiker seit 2010. Mit meinem umfangreichen technischen Wissen und…
More From Author