Vom Compose Stack zu Kubernetes: Migration in klaren Schritten

Die Migration von Docker Compose Stacks zu Kubernetes ist ein logischer Schritt, wenn Anwendungen wachsen, hochverfügbar werden sollen oder komplexere Orchestrierungsfunktionen benötigt werden. Kubernetes bietet erweiterte Features wie Self-Healing, automatische Skalierung, Namespaces und integrierte Netzwerk-Policies. In diesem Tutorial führen wir Sie Schritt für Schritt durch den Prozess der Migration, erläutern wichtige Konzepte und zeigen, wie Sie Ihre Compose-Stacks in Kubernetes-Ressourcen überführen.

Vorbereitung: Compose Stack analysieren

Bevor Sie mit der Migration beginnen, sollten Sie den bestehenden Docker Compose Stack genau analysieren. Ziel ist es, alle Services, Netzwerke, Volumes und Umgebungsvariablen zu erfassen.

Checkliste für die Analyse

  • Liste aller Services mit docker-compose ps.
  • Verwendete Images und Tags.
  • Umgebungsvariablen und .env-Dateien.
  • Netzwerke und Ports (ports: Mapping).
  • Persistente Volumes und Bind Mounts.
  • Abhängigkeiten zwischen Services (depends_on).

Kubernetes-Grundlagen verstehen

Für die Migration ist es wichtig, die entsprechenden Kubernetes-Ressourcen zu kennen, die Compose-Konzepte ersetzen:

Compose vs. Kubernetes

  • Service: Container in Compose → Pod/Deployment in Kubernetes.
  • Replica: replicas:replicas in Deployment.
  • Volumes: Compose Volumes → PersistentVolume + PersistentVolumeClaim.
  • Netzwerk: Compose Networks → Kubernetes Services und Ingress.
  • Umgebungsvariablen: environment:env in Deployment.

Schritt 1: Deployments erstellen

Jeder Compose-Service wird zu einem Deployment in Kubernetes. Deployments ermöglichen Rolling Updates, Skalierung und Self-Healing.

Beispiel Deployment für einen Web-Service

apiVersion: apps/v1
kind: Deployment
metadata:
  name: webapp
spec:
  replicas: 3
  selector:
    matchLabels:
      app: webapp
  template:
    metadata:
      labels:
        app: webapp
    spec:
      containers:
        - name: webapp
          image: myregistry/webapp:latest
          ports:
            - containerPort: 80
          env:
            - name: DATABASE_URL
              value: "postgres://user:pass@db:5432/appdb"

Schritt 2: Services definieren

In Kubernetes sorgen Services dafür, dass Pods unter einem stabilen DNS-Namen erreichbar sind. Dies ersetzt Compose-Netzwerke und Port-Mappings.

Beispiel ClusterIP Service

apiVersion: v1
kind: Service
metadata:
  name: webapp
spec:
  selector:
    app: webapp
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
  type: ClusterIP

Schritt 3: Persistente Volumes einrichten

Persistente Daten wie Datenbanken benötigen PVs und PVCs in Kubernetes.

Beispiel für PostgreSQL Volume

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pgdata
spec:
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: /mnt/data/postgres

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pgdata-claim
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi

Schritt 4: Secrets und ConfigMaps

Passwörter und Konfigurationswerte werden in Kubernetes über Secrets und ConfigMaps verwaltet.

Beispiel Secret für Datenbankpasswort

apiVersion: v1
kind: Secret
metadata:
  name: db-secret
type: Opaque
data:
  POSTGRES_PASSWORD: cGFzc3dvcmQ=  # base64 encoded

Schritt 5: Ingress und externe Zugriffe

Ports und Load Balancer in Compose werden durch Services und optional Ingress-Ressourcen ersetzt.

Beispiel Ingress

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: webapp-ingress
spec:
  rules:
    - host: webapp.example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: webapp
                port:
                  number: 80

Schritt 6: Migration testen

Vor der produktiven Nutzung sollten alle Deployments in einer Testumgebung geprüft werden:

  • Pode Logs prüfen: kubectl logs podname
  • Status von Deployments prüfen: kubectl get deployments
  • Services testen: kubectl get svc und curl auf ClusterIP oder Ingress

Tipps für reibungslose Migration

  • Schrittweise migrieren: nicht alle Services gleichzeitig.
  • Persistente Daten vor Migration sichern.
  • Namespaces nutzen, um alte Compose-Stacks parallel laufen zu lassen.
  • RBAC einrichten, um Berechtigungen zu kontrollieren.
  • CI/CD Pipelines anpassen: kubectl apply -f statt docker-compose up.

Mit dieser strukturierten Vorgehensweise gelingt die Migration von Docker Compose Stacks zu Kubernetes effizient und risikoarm. So profitieren Teams von den erweiterten Orchestrierungsfunktionen, ohne bestehende Workflows abrupt ändern zu müssen.

Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3

Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.

Meine Leistungen umfassen:

  • Professionelle Konfiguration von Routern und Switches

  • Einrichtung von VLANs, Trunks, Routing, DHCP, NAT, ACLs und weiteren Netzwerkfunktionen

  • Erstellung von Topologien und Simulationen in Cisco Packet Tracer

  • Aufbau, Analyse und Fehlerbehebung von Netzwerk-Labs in GNS3 und EVE-NG

  • Automatisierung von Netzwerkkonfigurationen mit Python, Netmiko, Paramiko, NAPALM und Ansible

  • Erstellung von Skripten für wiederkehrende Netzwerkaufgaben

  • Dokumentation der Konfigurationen und Bereitstellung nachvollziehbarer Lösungswege

  • Konfigurations-Backups, Optimierung bestehender Setups und technisches Troubleshooting

Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.

Related Articles