[email protected]

Anleitung · Kubernetes

Docker Compose zu Kubernetes migrieren mit Kompose

Hinweis zum Inhalt: Versionen, Befehle und Preise können sich ändern. Bitte prüfen Sie kritische Schritte vor dem produktiven Einsatz eigenständig. Dieser Leitfaden ersetzt keine individuelle Fach-, Rechts- oder Steuerberatung.

WZ-IT unterstützt Sie mit dem passenden Angebot: Docker Compose zu Kubernetes migrieren mit Kompose.

Kompose kann eine Compose-Datei in Kubernetes-Ressourcen übersetzen. Damit entsteht ein Ausgangspunkt, keine abgenommene Produktionsumgebung (Kubernetes-Anleitung). Entscheidend bleiben Daten, Abhängigkeiten und der kontrollierte Wechsel des Traffics. Dieser Artikel führt an einem Beispiel mit Webanwendung und PostgreSQL durch Erfassung, Konvertierung, Nachbearbeitung der Manifeste, Datenübernahme und Umschaltung. Stand: Oktober 2026.

Inhaltsverzeichnis

1. Anwendung und Zielcluster erfassen

Erfassen Sie Images, Ports, Umgebungsvariablen, Volumes und externe Dienste. Prüfen Sie zuerst, ob Kubernetes statt Compose oder Coolify zum Betrieb passt. Voraussetzung für diesen Ablauf: erreichbarer Zielcluster, passender kubectl-Kontext, Namespace und ein dokumentierter Rückweg zur bisherigen Umgebung.

Als Beispiel dient diese compose.yaml mit einer Webanwendung und einer Datenbank (Image-Namen und Werte sind Platzhalter):

services:
  web:
    image: registry.example.com/shop:1.4.2
    ports:
      - "8080:8080"
    environment:
      DB_HOST: db
      DB_NAME: shop
    depends_on:
      - db
  db:
    image: postgres:16
    environment:
      POSTGRES_DB: shop
      POSTGRES_USER: shop
      POSTGRES_PASSWORD_FILE: /run/secrets/db_password
    volumes:
      - db-data:/var/lib/postgresql/data
volumes:
  db-data:
Compose-Bestand Im Kubernetes-Ziel prüfen
Ports Service und gegebenenfalls externer Zugang (Ingress)
Volumes PVC, StorageClass, Zugriffsmodus und Datenübernahme
environment und env_file ConfigMap oder Secret nach Inhalt
depends_on Wiederholungslogik und Bereitschaft der Anwendung
Lokaler Image-Build Veröffentlichbares Image und Registry-Zugriff
Secrets-Dateien Kubernetes-Secret, getrennt von den Manifesten

Die Kompose-Konversionsmatrix dokumentiert unterstützte und nicht unterstützte Compose-Felder. Eine semantische Eins-zu-eins-Übertragung ist nicht vorauszusetzen.

2. Kompose ausführen und Manifeste überarbeiten

Installieren Sie Kompose nach der offiziellen Installationsanleitung. Arbeiten Sie auf einer Kopie ohne produktive Zugangsdaten:

mkdir k8s-output
kompose convert -f compose.yaml -o k8s-output/

Kompose erzeugt je Service ein Deployment, je veröffentlichtem Port einen Service und je Volume eine PersistentVolumeClaim. Bei Volumes setzt es die Strategie Recreate. Unterstriche in Servicenamen werden zu Bindestrichen, weil Kubernetes sie nicht akzeptiert. Die Kompose-Anleitung nennt Optionen, die das Ergebnis steuern:

Option Wirkung
--controller statefulset StatefulSet oder DaemonSet statt Deployment
--volumes Volume-Typ: persistentVolumeClaim, emptyDir, hostPath oder configMap
--build, --push-image Image bauen und in eine Registry übertragen
-f mehrfach Mehrere Compose-Dateien zusammenführen
Label kompose.service.expose Ingress mit Domain erzeugen
Label kompose.service.type Service-Typ (nodeport, clusterip, loadbalancer, headless)
Label kompose.volume.size Größe der PVC, etwa 10Gi

Lesen Sie jede Warnung und jedes erzeugte Objekt. Für das Beispiel sind mindestens diese Anpassungen nötig:

  • Datenbank als StatefulSet führen oder bewusst als Deployment mit einer Replik belassen und dokumentieren.
  • Ressourcen setzen: requests und limits für CPU und Speicher je Container.
  • Probes ergänzen: Liveness-, Readiness- und Startup-Probes. Readiness steuert die Bereitschaft für Traffic; eine ungeeignete Liveness-Prüfung kann Neustarts verursachen.
  • Zugangsdaten aus Secrets beziehen statt aus Klartext-Variablen im Manifest.
  • Ingress ergänzen, wenn die Anwendung extern erreichbar sein soll.

Beispiel für Probes am Webcontainer:

readinessProbe:
  httpGet:
    path: /healthz
    port: 8080
  initialDelaySeconds: 5
  periodSeconds: 10
livenessProbe:
  httpGet:
    path: /healthz
    port: 8080
  initialDelaySeconds: 30
  periodSeconds: 20

Ein erfolgreich konvertiertes YAML beweist keine erreichbare Anwendung.

3. Daten und Secrets getrennt migrieren

Ein PVC überträgt keine vorhandenen Daten. Wählen Sie ein zum Datenbanksystem passendes Sicherungs- und Wiederherstellungsverfahren, prüfen Sie die Zielversion und planen Sie eine Schreibsperre oder ausdrücklich unterstützte Replikation. Bestätigen Sie den Wiederherstellungsweg vor der Umschaltung (Persistent Volumes).

Für das PostgreSQL-Beispiel, bei gestoppter Anwendung und gleicher Hauptversion:

# Auf dem Compose-Host: Dump im Custom-Format
docker compose exec -T db pg_dump -U shop -Fc shop > shop.dump

# In den Datenbank-Pod kopieren und wiederherstellen
kubectl -n migration-check cp shop.dump db-0:/tmp/shop.dump
kubectl -n migration-check exec db-0 -- pg_restore -U shop -d shop --clean --if-exists /tmp/shop.dump

Danach Zeilenzahlen wichtiger Tabellen und einen Anwendungstest gegen Quelle und Ziel vergleichen.

Kubernetes-Secrets sind keine automatische Verschlüsselungslösung: Base64-Kodierung schützt keine Zugangsdaten. Prüfen Sie Verschlüsselung im Ruhezustand und minimale Zugriffsrechte (Secrets). Legen Sie echte Werte nicht in das Beispielverzeichnis oder in Git. Ein Secret aus einer lokalen Datei, die nicht versioniert wird:

kubectl -n migration-check create secret generic db-credentials --from-env-file=.env.k8s

4. Abnehmen und kontrolliert umschalten

Prüfen Sie vor jeder Anwendung den aktuellen Kontext. Ersetzen Sie migration-check durch den vorgesehenen, bereits angelegten Test-Namespace. Die serverseitige Trockenprüfung ändert keine Ressourcen; das anschließende Apply schon (kubectl apply).

kubectl config current-context
kubectl apply --dry-run=server -n migration-check -f k8s-output/
# Erst nach Review im vorgesehenen Test-Namespace anwenden:
kubectl apply -n migration-check -f k8s-output/
kubectl get pods,svc,pvc -n migration-check
kubectl rollout status deployment/web -n migration-check

Nehmen Sie Anmeldung, Schreib- und Lesevorgänge, Neustart, Persistenz und Backup-Restore ab. Dokumentieren Sie Umschaltpunkt und Abbruchkriterien:

Schritt Prüfung
Vor der Umschaltung DNS-TTL gesenkt, Schreibsperre am alten System, letzter Dump übernommen
Umschaltung DNS oder Load Balancer auf das neue System, Anwendungstest sofort danach
Beobachtung Fehlerrate, Probes, Speicherverbrauch, Datenbankverbindungen
Rückweg Altes System unverändert halten, bis neue Schreibzugriffe abgesichert sind

Nach Schreibzugriffen auf dem neuen System ist Rückkehr nicht nur eine DNS-Änderung: Datenstände müssen zusammenpassen. WZ-IT ordnet diesen Weg in die Anwendungsmodernisierung ein.

Wann Kompose nicht passt

Kompose ist ein Übersetzer, keine Plattformentscheidung. Prüfen Sie Alternativen, wenn die Compose-Datei viele nicht unterstützte Felder nutzt, Builds im Compose-Kontext hängen, mehrere Umgebungen mit Varianten gepflegt werden müssen (dann Helm oder Kustomize) oder wenn die Anwendung ohne Kubernetes-Funktionen wie Skalierung und Rollouts auskommt. In dem Fall bleibt Compose oder Coolify die einfachere Wahl, und die Frage, ob Sie Kubernetes überhaupt brauchen, beantwortet Brauchen wir Kubernetes?.

Weiterlesen

Zum passenden Angebot: Docker Compose zu Kubernetes migrieren mit Kompose.

Quellen

Lieber betreiben lassen?

Sie möchten Kubernetes nicht selbst betreiben? WZ-IT übernimmt Einrichtung, Betrieb und Wartung - datenschutzorientiert aus Deutschland.

Anfrage

Kubernetes planen, übernehmen oder betreiben

Wir planen und betreiben Kubernetes auf Bare Metal, Proxmox und europäischen Cloud-Plattformen samt Netzwerk, GitOps, Observability und Backup.

  • Direkt mit Timo und Robin - kein Vertrieb, kein Sales-Pitch
  • Fachliche Einschätzung Ihrer Situation
  • Konkrete nächste Schritte für Infrastruktur, Software oder KI

Das Gespräch ist unverbindlich und kostenlos.

WZ-IT hat uns professionell mit der Bereitstellung und Einrichtung von NetBird begleitet. Neben der technischen Umsetzung haben wir auch eine fundierte Beratung zur Anbindung unserer Kubernetes-Cluster erhalten. Die Empfehlungen waren konkret und direkt umsetzbar. Die Zusammenarbeit war durchgehend zuverlässig, schnell und auf Augenhöhe. Wir können WZ-IT uneingeschränkt empfehlen.
Kai ClaußEntwicklungsleiter, SweetConnect GmbH
Timo und Robin, Gründer von WZ-IT

Kubernetes planen, übernehmen oder betreiben

WZ-IT hat uns professionell mit der Bereitstellung und Einrichtung von NetBird begleitet. Neben der technischen Umsetzung haben wir auch eine fundierte Beratung zur Anbindung unserer Kubernetes-Cluster erhalten. Die Empfehlungen waren konkret und direkt umsetzbar. Die Zusammenarbeit war durchgehend zuverlässig, schnell und auf Augenhöhe. Wir können WZ-IT uneingeschränkt empfehlen.
Kai ClaußEntwicklungsleiter, SweetConnect GmbH

Häufig gestellte Fragen

Antworten auf die wichtigsten Fragen

Unternehmen weltweit vertrauen WZ-IT

  • Stadtwerke Brühl
  • DGHO e.V.
  • ABCO Water Systems
  • Golem.de
  • EVADXB
  • nextGYM
  • AInergy
  • ml&s
  • Odiseo Solutions
  • Annota
  • ARGE
  • SweetConnect GmbH
  • Aphy AG
  • CORGOS
  • Rekorder
  • SolidProof
  • Yonju
  • Keymate
  • Paritel
  • Mr. Clipart
  • Millenium
  • Negosh
  • Führerscheinmacher
  • Boese VA
Kundenstimmen ansehen