Veröffentlicht am

Kubernetes Vendor Lock-in vermeiden: Exit-Strategie

Teilen:
Authors

Managed Service ohne Vendor Lock-in: So wechseln Sie jederzeit den Kubernetes-Anbieter

TL;DR

  • Managed Kubernetes erzeugt weniger Lock-in als Eigenentwicklung -- vorausgesetzt, Sie achten auf portable Konfigurationen und saubere Vertraege
  • Exit-Klauseln gehoeren in jeden Managed-Service-Vertrag: Maximale Kuendigungsfrist 3 Monate, Datenherausgabe innerhalb von 30 Tagen, Uebergabe-Support inklusive
  • Portable Manifests (Kustomize oder Helm) und Infrastructure-as-Code (Terraform) machen einen Anbieterwechsel in 4-8 Wochen moeglich statt in 6-12 Monaten
  • Dokumentationspflicht fuer den Anbieter ist der wichtigste Hebel: Wer seine Umgebung nicht dokumentiert, kann sie nicht portieren
  • Die Exit-Option ist auch dann wertvoll, wenn Sie sie nie nutzen -- sie staerkt Ihre Verhandlungsposition bei Vertragsverlaengerungen

Warum Lock-in bei Managed Services ein anderes Problem ist

Wenn IT-Leiter ueber Vendor Lock-in sprechen, denken sie meistens an Cloud-Provider: AWS, Azure, Google. Aber es gibt eine zweite Art von Abhaengigkeit, die weniger offensichtlich ist: die Abhaengigkeit vom Managed-Service-Anbieter, der Ihren Kubernetes-Cluster betreibt.

Die gute Nachricht: Kubernetes selbst ist ein offener Standard. Ein Deployment-Manifest, das bei Anbieter A laeuft, laeuft auch bei Anbieter B. Die schlechte Nachricht: Die Art, wie ein Managed-Service-Anbieter Ihren Cluster konfiguriert, dokumentiert und betreibt, kann trotzdem Abhaengigkeit erzeugen -- wenn Sie nicht von Anfang an gegensteuern.

Dieser Artikel zeigt Ihnen, wie Sie einen Managed Service nutzen und gleichzeitig jederzeit wechselbereit bleiben.


Wo Lock-in bei Managed Kubernetes entsteht

Die drei Ebenen der Abhaengigkeit

EbeneBeispielLock-in-RisikoGegenmassnahme
Vertragliche EbeneKuendigungsfrist 12 Monate, keine Exit-KlauselHochVertrag vor Unterschrift pruefen
Technische EbeneProprietaere Tools, undokumentierte KonfigurationMittelPortable Standards fordern
Wissens-EbeneNur der Anbieter kennt die ArchitekturHochDokumentationspflicht vereinbaren

Die meisten Unternehmen scheitern bei einem Anbieterwechsel nicht an der Technik, sondern an der Wissens-Ebene: Niemand weiss, wie der Cluster konfiguriert ist, welche Custom Resources existieren und warum bestimmte Netzwerkregeln gesetzt sind.


Vertragliche Absicherung: Was in jeden Managed-Service-Vertrag gehoert

Exit-Klauseln Checkliste

Vertragliche Exit-Absicherung:
├── Kuendigungsfrist
│   ├── Maximal 3 Monate zum Quartalsende
│   ├── Keine automatische Verlaengerung um mehr als 12 Monate
│   └── Sonderkuendigungsrecht bei SLA-Verletzung
├── Datenherausgabe
│   ├── Alle Kubernetes-Manifests innerhalb von 14 Tagen
│   ├── Alle Applikationsdaten innerhalb von 30 Tagen
│   ├── Alle Monitoring-Daten der letzten 12 Monate
│   ├── Format: Standard-YAML, SQL-Dumps, kein proprietaeres Format
│   └── Kosten fuer Datenherausgabe: im Vertrag gedeckelt
├── Uebergabe-Support
│   ├── 40 Stunden technischer Support fuer Transition
│   ├── Architektur-Dokumentation aktuell zum Zeitpunkt der Kuendigung
│   ├── Gemeinsame Uebergabe-Sessions mit neuem Anbieter
│   └── Parallelbetrieb fuer mindestens 4 Wochen moeglich
└── Geistiges Eigentum
    ├── Alle Custom-Entwicklungen gehoeren Ihnen
    ├── Kein Anspruch des Anbieters auf Ihre Konfigurationen
    └── Terraform-Module und Helm-Charts sind Ihr Eigentum

Diese Punkte sind verhandelbar. Ein serioeser Anbieter wird keine dieser Forderungen ablehnen. Wenn doch, ist das ein Warnsignal.


Technische Portabilitaet: So bleibt Ihre Konfiguration wechselbar

Kustomize fuer portable Deployments

Kustomize trennt Ihre Basis-Konfiguration von anbieterspezifischen Anpassungen. Die Basis laeuft ueberall, die Overlays passen sich an.

# base/deployment.yaml
# Diese Datei ist bei jedem Anbieter identisch
apiVersion: apps/v1
kind: Deployment
metadata:
  name: ihre-applikation
spec:
  replicas: 3
  selector:
    matchLabels:
      app: ihre-applikation
  template:
    metadata:
      labels:
        app: ihre-applikation
    spec:
      containers:
      - name: app
        image: ihre-applikation:latest
        ports:
        - containerPort: 8080
        resources:
          requests:
            memory: "256Mi"
            cpu: "250m"
          limits:
            memory: "512Mi"
            cpu: "500m"
        readinessProbe:
          httpGet:
            path: /health
            port: 8080
          initialDelaySeconds: 10
          periodSeconds: 5
---
# base/service.yaml
apiVersion: v1
kind: Service
metadata:
  name: ihre-applikation
spec:
  selector:
    app: ihre-applikation
  ports:
  - port: 80
    targetPort: 8080
---
# base/kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- deployment.yaml
- service.yaml
# overlays/anbieter-a/kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
bases:
- ../../base
patchesStrategicMerge:
- ingress-patch.yaml
namespace: production

# overlays/anbieter-b/kustomization.yaml
# Identische Struktur, andere Ingress-Konfiguration
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
bases:
- ../../base
patchesStrategicMerge:
- ingress-patch.yaml
namespace: production

Der Wechsel von Anbieter A zu Anbieter B bedeutet: kustomize build overlays/anbieter-b/ | kubectl apply -f -. Die Basis-Manifests aendern sich nicht.


Terraform fuer Cloud-Infrastruktur-Portabilitaet

Wenn Ihr Managed-Service-Anbieter auf einem Cloud-Provider aufsetzt (EKS, AKS, GKE), sollte die Infrastruktur-Provisionierung per Terraform erfolgen. Das macht einen Wechsel des Cloud-Providers planbar.

# main.tf -- Cloud-Provider als Variable
variable "cloud_provider" {
  description = "Welcher Cloud-Provider soll genutzt werden"
  type        = string
  default     = "hetzner"
  validation {
    condition     = contains(["aws", "azure", "hetzner"], var.cloud_provider)
    error_message = "Unterstuetzte Provider: aws, azure, hetzner"
  }
}

module "kubernetes_cluster" {
  source = "./modules/${var.cloud_provider}"

  cluster_name       = "production"
  kubernetes_version = "1.30"
  node_count         = 3
  node_size          = "medium"
  region             = "eu-central-1"
}

# Unabhaengig vom Provider: Gleiche Outputs
output "kubeconfig" {
  value     = module.kubernetes_cluster.kubeconfig
  sensitive = true
}

output "cluster_endpoint" {
  value = module.kubernetes_cluster.endpoint
}

Entscheidend ist: Die Terraform-Module gehoeren Ihnen, nicht dem Anbieter. Das muss vertraglich geregelt sein.


Dokumentationspflicht: Der wichtigste Hebel gegen Lock-in

Was Ihr Anbieter dokumentieren muss

Undokumentierte Infrastruktur ist der groesste Lock-in-Faktor. Fordern Sie vom ersten Tag an eine lebende Dokumentation, die bei jedem Architektur-Change aktualisiert wird.

DokumentInhaltUpdate-Frequenz
Cluster-ArchitekturNode-Typen, Netzwerk-Topologie, Storage-Klassen, Ingress-SetupBei jeder Aenderung
Deployment-InventarAlle Deployments, StatefulSets, CronJobs mit VersionenWoechentlich (automatisiert)
Secret-ManagementWie Secrets verwaltet werden (Vault, Sealed Secrets, etc.)Bei jeder Aenderung
Backup-KonzeptWas wird gesichert, wohin, wie oft, wie stellt man wieder herQuartalsweise Review
Netzwerk-RegelnAlle NetworkPolicies, Ingress-Regeln, DNS-KonfigurationBei jeder Aenderung
Monitoring-SetupWelche Metriken, welche Alerts, welche DashboardsBei jeder Aenderung
RunbooksHandlungsanweisungen fuer alle bekannten IncidentsFortlaufend
ZugangsdatenWo liegen Credentials, wer hat Zugriff, wie rotiert manQuartalsweise Review

Automatisiertes Inventar

Verlassen Sie sich nicht auf manuell gepflegte Wiki-Seiten. Fordern Sie automatisierte Inventar-Exports:

Monatlicher Cluster-Export (automatisiert):
├── kubectl get all --all-namespaces -o yaml
├── kubectl get networkpolicies --all-namespaces -o yaml
├── kubectl get ingress --all-namespaces -o yaml
├── kubectl get pv,pvc --all-namespaces -o yaml
├── helm list --all-namespaces -o yaml
├── kubectl get nodes -o yaml
└── Terraform State Backup

Dieser Export geht in Ihr eigenes Git-Repository, nicht in das des Anbieters. So haben Sie jederzeit einen vollstaendigen Snapshot Ihrer Infrastruktur.


Vergleich: Lock-in-Risiko nach Anbieter-Typ

KriteriumHyperscaler direkt (AWS/Azure)Managed Service SpezialistFreelancer / Berater
Technisches Lock-inHoch (proprietaere Services)Niedrig (Standard-Tools)Niedrig (aber undokumentiert)
Vertragliches Lock-inMittel (Standard-AGB)VerhandelbarKeines
Wissens-Lock-inNiedrig (grosse Community)Mittel (abhaengig von Doku)Sehr hoch (Einzelperson)
Exit-Kosten75.000-500.000 EUR15.000-40.000 EUR30.000-100.000 EUR
Exit-Dauer6-18 Monate4-8 Wochen2-6 Monate
PortabilitaetErfordert RefactoringConfig-AenderungNeuaufbau moeglich

Der ueberraschende Punkt: Freelancer und Einzelberater erzeugen oft das hoechste Lock-in. Nicht wegen proprietaerer Technik, sondern weil alles Wissen in einer Person steckt. Wenn der Freelancer nicht verfuegbar ist, steht niemand bereit, der den Cluster versteht. Details zur Entscheidung finden Sie im Vergleich Managed Service vs. Inhouse.


Der Anbieterwechsel in der Praxis

Realistischer Zeitplan fuer einen Transition

Woche 1-2: Vorbereitung
├── Vollstaendigen Cluster-Export erstellen
├── Terraform State und alle Module sichern
├── Helm-Charts und Kustomize-Overlays exportieren
├── Neuen Anbieter evaluieren und beauftragen
└── Transition-Team bilden (Ihre IT + alter Anbieter + neuer Anbieter)

Woche 3-4: Paralleler Aufbau
├── Neuen Cluster bei neuem Anbieter aufsetzen
├── Basis-Infrastruktur deployen (Ingress, Monitoring, Logging)
├── Kustomize-Overlays fuer neuen Anbieter erstellen
├── Test-Deployments durchfuehren
└── Daten-Migration vorbereiten

Woche 5-6: Migration
├── DNS-TTL auf 5 Minuten reduzieren
├── Datenbanken migrieren (Dump/Restore oder Replikation)
├── Applikationen auf neuem Cluster deployen
├── Parallelbetrieb: beide Cluster aktiv
└── Traffic schrittweise umleiten (10%, 50%, 100%)

Woche 7-8: Nachbereitung
├── Alten Cluster herunterfahren (nach 2 Wochen Monitoring)
├── Dokumentation fuer neuen Anbieter finalisieren
├── Monitoring und Alerting verifizieren
└── Backup und Disaster Recovery testen

Gesamtaufwand: 4-8 Wochen, davon 2 Wochen Parallelbetrieb. Das ist realistisch, wenn die Dokumentation stimmt und portable Konfigurationen existieren. Ohne beides: 4-6 Monate.


Multi-Cloud als Versicherung

Wann Multi-Cloud sinnvoll ist

Multi-Cloud bedeutet nicht, dass Sie alles doppelt betreiben. Es bedeutet, dass Sie wechselbereit sind. Fuer die meisten Mittelstaendler reicht folgende Strategie:

StrategieAufwandFuer wen
Portable Config (Kustomize/Helm + Terraform)Gering (einmalig 2-3 Tage Setup)Jedes Unternehmen
Regelmaessiger Portabilitaets-TestMittel (1 Tag pro Quartal)Unternehmen mit kritischen Workloads
Aktiver ParallelbetriebHoch (doppelte Kosten)Nur bei regulatorischer Anforderung

Die erste Stufe ist Pflicht. Die zweite Stufe empfehlen wir Unternehmen, die Verfuegbarkeitsanforderungen ueber 99.9% haben. Die dritte Stufe brauchen die wenigsten -- sie ist teuer und komplex. Hintergruende zur Cloud-Exit-Planung finden Sie unter Kubernetes Vendor Lock-in vermeiden: Cloud-Exit-Strategie.


Checkliste: Vor Vertragsunterschrift pruefen

Bevor Sie einen Managed-Service-Vertrag unterschreiben, gehen Sie diese Punkte durch:

Vertrag und Exit:
[ ] Kuendigungsfrist maximal 3 Monate
[ ] Datenherausgabe innerhalb von 30 Tagen geregelt
[ ] Uebergabe-Support (mindestens 40 Stunden) inklusive
[ ] Keine automatische Verlaengerung ueber 12 Monate
[ ] Sonderkuendigungsrecht bei SLA-Verletzung

Technische Portabilitaet:
[ ] Standard-Kubernetes (keine proprietaeren Erweiterungen)
[ ] Kustomize oder Helm fuer Deployments
[ ] Terraform oder Pulumi fuer Infrastruktur
[ ] Container-Images in Ihrer eigenen Registry
[ ] Git-Repository mit allen Manifests gehoert Ihnen

Dokumentation:
[ ] Architektur-Dokumentation vertraglich zugesichert
[ ] Monatlicher automatisierter Cluster-Export
[ ] Runbooks fuer alle Standard-Operationen
[ ] Zugangsdaten und Credentials unter Ihrer Kontrolle

Unabhaengigkeit:
[ ] Monitoring-Daten auch ohne Anbieter zugaenglich
[ ] Backup-Daten auf Ihrem eigenen Storage
[ ] DNS-Eintraege unter Ihrer Domain-Verwaltung
[ ] TLS-Zertifikate unter Ihrer Kontrolle

Eine detaillierte Anleitung fuer den gesamten Outsourcing-Prozess finden Sie in unserer Checkliste fuer die Auslagerung des Kubernetes-Betriebs.


Fazit: Lock-in vermeiden ist Verhandlungssache

Vendor Lock-in bei Managed Kubernetes ist kein technisches Problem. Kubernetes selbst ist portabel. Lock-in entsteht durch schlechte Vertraege, fehlende Dokumentation und proprietaere Sonderwege.

Die drei wichtigsten Massnahmen:

  1. Vertragliche Exit-Klauseln vor der Unterschrift verhandeln, nicht erst bei der Kuendigung
  2. Portable Konfigurationen von Anfang an nutzen (Kustomize, Helm, Terraform)
  3. Dokumentationspflicht im Vertrag verankern und quartalsweise pruefen

Wenn Sie diese drei Punkte umsetzen, koennen Sie jederzeit wechseln. Und genau dieses Wissen macht den Wechsel in den meisten Faellen ueberfluessig: Wer gehen kann, wird besser behandelt.


Weiterfuehrende Artikel

Kubernetes-Beratung gesucht?

Wir helfen deutschen Unternehmen bei der Kubernetes-Implementierung, Migration und Optimierung. DSGVO-konform und praxiserprobt.

📖 Verwandte Artikel

Weitere interessante Beiträge zu ähnlichen Themen