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:→replicasin Deployment. - Volumes: Compose Volumes → PersistentVolume + PersistentVolumeClaim.
- Netzwerk: Compose Networks → Kubernetes Services und Ingress.
- Umgebungsvariablen:
environment:→envin 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 svcundcurlauf 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 -fstattdocker-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.











