Migration mit Termindruck

Ingress NGINX wird nicht mehr gepflegt: So migrierst du auf die Gateway API

Für ingress-nginx erscheinen keine Releases und keine Fixes für Sicherheitslücken mehr. Wer den Controller weiterbetreibt, sammelt offene Schwachstellen genau an der Stelle, an der jeder Zugriff von außen ankommt. Die Umstellung auf die Gateway API ist trotzdem beherrschbar, weil ingress2gateway den Großteil der Objekte konvertiert und beide Controller wochenlang nebeneinander laufen können.

5 Kapitel mit allen Befehlen
Team plant eine Infrastruktur-Migration vor Notizwand und Architekturdiagramm
Seit 1997 am Markt Präsenz & Live-Online 4,9 aus 503 Google-Bewertungen Auch Inhouse für dein Team
Worum es geht

Wartungsende bei ingress-nginx: was das für deinen Cluster bedeutet

Am 11. November 2025 hat das Kubernetes-Projekt angekündigt, ingress-nginx einzustellen. Bis März 2026 lief die Wartung noch auf Best-Effort-Basis, seitdem gibt es weder neue Releases noch Korrekturen für Sicherheitslücken. Das Repository bleibt lesbar, die Images bleiben in der Registry, aber niemand ist mehr zuständig. Für dich heißt das konkret: Jede künftig gefundene Schwachstelle im Controller bleibt offen, solange du ihn betreibst. Das ist keine theoretische Sorge, denn dieser Controller nimmt den gesamten Verkehr von außen entgegen, bevor er irgendeine deiner Anwendungen erreicht.

Wie ernst das werden kann, hat der März 2025 gezeigt. Unter dem Namen IngressNightmare wurden mehrere Lücken im Admission-Controller von ingress-nginx veröffentlicht, die ohne Anmeldung Codeausführung im Controller-Pod erlaubten. Weil dieser Pod im Standardaufbau alle Secrets im Cluster lesen darf, war das faktisch eine Übernahme des gesamten Clusters. Damals gab es innerhalb weniger Tage gepatchte Versionen. Genau dieser Mechanismus fehlt jetzt. Für den nächsten Fund dieser Größenordnung gibt es keinen Patch-Pfad, sondern nur die Wahl zwischen Abschalten und Weiterbetrieb auf eigenes Risiko.

Der Umstieg ist mehr als ein Tausch des Helm-Charts. In gewachsenen Clustern steckt die halbe Betriebslogik in Annotationen: Rewrites, Zeitgrenzen, Ratenbegrenzung, externe Authentifizierung, Canary-Verteilung, dazu frei eingefügte NGINX-Konfigurationsschnipsel. Die Gateway API kennt für vieles davon standardisierte Konstrukte, für manches aber nur Erweiterungen der jeweiligen Implementierung. Über den Aufwand entscheidet deshalb die Bestandsaufnahme und nicht die Größe des Clusters. Sechzig schlichte Ingress-Objekte sind an einem Tag umgestellt, zwanzig Objekte mit eigenen Konfigurationsschnipseln können Wochen kosten.

Miniatur-Szene: alter Serverschrank links, leuchtende Cloud rechts, dazwischen eine Brücke mit Kisten

Sechs Schritte von ingress-nginx zur Gateway API

  1. 01 Ingress-Objekte und alle Annotationen vollständig inventarisieren
  2. 02 Implementierung auswählen und im Testcluster erproben
  3. 03 Mit ingress2gateway konvertieren, den Rest von Hand nacharbeiten
  4. 04 Gateway parallel zum alten Controller in Betrieb nehmen
  5. 05 Datenverkehr je Hostnamen über DNS schrittweise umschwenken
  6. 06 ingress-nginx erst nach der Beobachtungsphase abbauen
Was du mitnimmst

Die Gateway API und die Implementierungen, die sie umsetzen

Die Gateway API ist kein Produkt, sondern eine Schnittstelle. Du entscheidest getrennt davon, welche Implementierung sie in deinem Cluster ausführt, und diese zweite Entscheidung bindet dich deutlich stärker als die API selbst.

Was die Gateway API anders macht

Statt eines Objekts gibt es drei mit klarer Rollenteilung: Die GatewayClass beschreibt die Implementierung, das Gateway gehört dem Plattformteam und definiert Ports, Hostnamen und Zertifikate, HTTPRoute und GRPCRoute gehören den Anwendungsteams. Pfad-Rewrites, Header-Manipulation und gewichtete Verteilung sind Teil des Standards und keine Annotation mehr. Über allowedRoutes steuerst du, welche Namespaces sich an ein Gateway hängen dürfen.

Envoy Gateway

Die neutrale Wahl ohne Bindung an ein Service Mesh und der kürzeste Weg für Teams, die schlicht Ersatz für ingress-nginx suchen. Envoy als Datenpfad ist in großen Umgebungen erprobt, die Zusatzobjekte für Zeitgrenzen, Ratenbegrenzung und externe Authentifizierung heißen SecurityPolicy, ClientTrafficPolicy und BackendTrafficPolicy. Rechne mit Einarbeitung in Envoy-Begriffe, dafür bleibt der Rest des Clusters unberührt.

Istio und Cilium

Beide lohnen sich, wenn du ohnehin in diese Richtung gehst. Istio setzt die Gateway API als bevorzugte Konfiguration ein und verbindet Nord-Süd- und Ost-West-Verkehr in einer Sprache, besonders schlank im Ambient-Modus ohne Sidecars. Cilium bringt die Gateway API direkt im CNI mit, also ohne zusätzlichen Datenpfad, koppelt sie dafür aber an deine CNI-Version und deren Aktualisierungsrhythmus.

Traefik und NGINX Gateway Fabric

Traefik unterstützt die Gateway API seit mehreren Hauptversionen und ist für Teams naheliegend, die Traefik bereits kennen. NGINX Gateway Fabric ist das von F5 gepflegte Projekt mit NGINX als Datenpfad und damit die vertrauteste Umgebung für alle, die aus ingress-nginx kommen. Der Funktionsumfang deckt den Standard ab, eigene Konfigurationsschnipsel lassen sich aber nicht eins zu eins übernehmen.

Die Angebote der Cloud-Anbieter

In AWS setzt der AWS Load Balancer Controller die Gateway API auf Application Load Balancer um, alternativ gibt es den Weg über VPC Lattice. In Azure übernimmt Application Gateway for Containers diese Rolle für AKS. Vorteil ist der Betrieb des Datenpfads beim Anbieter, Nachteil sind der kleinere Funktionsumfang und die Bindung an eine Plattform, die einen späteren Wechsel teuer macht.

Der Umstieg läuft im Parallelbetrieb

ingress-nginx und die neue Implementierung können wochenlang nebeneinander stehen, umgeschaltet wird je Hostnamen im DNS und nicht im Cluster. Damit ist der Rückweg ein Eintrag statt eines Wiederaufbaus. Zwischen der ersten umgeschalteten Anwendung und dem Abschalten des alten Controllers sollten mindestens zwei Wochen liegen, in denen du Fehlerraten vergleichst statt Gefühle.

Tutorial

Von der Bestandsaufnahme bis zur letzten HTTPRoute

Der Aufwand steckt nicht in der Zahl der Ingress-Objekte, sondern in den Annotationen daran, und die Wahl der Implementierung bindet dich stärker als die Gateway API selbst. Deshalb wird hier zuerst gezählt, was wirklich im Cluster liegt, dann die Implementierung festgelegt, dann konvertiert, dann parallel gefahren und erst zum Schluss abgebaut. Die Beispiele nutzen Envoy Gateway, mit einer anderen GatewayClass funktioniert derselbe Weg.

01

Schritt 1: Ingress-Bestand und Annotationen erfassen

Die Aufwandsschätzung steckt nicht in der Anzahl der Ingress-Objekte, sondern in den Annotationen daran. Hol dir beides in einem Durchgang aus dem Cluster, bevor du über Implementierungen nachdenkst.

Bestand sichern und Annotationen zählen
kubectl get ingress -A -o json > ingress-bestand.json

# Wie viele Objekte sind es ueberhaupt?
jq -r '.items[] | "\(.metadata.namespace)/\(.metadata.name)"' ingress-bestand.json | wc -l

# Welche nginx-Annotationen kommen wie oft vor?
jq -r '.items[].metadata.annotations // {} | keys[]' ingress-bestand.json \
  | grep '^nginx.ingress.kubernetes.io/' | sort | uniq -c | sort -rn

# Die teuren Faelle zuerst: frei eingefuegte Konfigurationsschnipsel
jq -r '.items[]
  | select(.metadata.annotations["nginx.ingress.kubernetes.io/configuration-snippet"]
        or .metadata.annotations["nginx.ingress.kubernetes.io/server-snippet"])
  | "\(.metadata.namespace)/\(.metadata.name)"' ingress-bestand.json

Die Datei ingress-bestand.json ist gleichzeitig dein Rollback-Material und die Eingabe für den Konverter. Leg sie in die Versionsverwaltung, bevor du irgendetwas änderst.

Was aus welcher Annotation wird

Annotation in ingress-nginxEntsprechung in der Gateway APIAufwand
rewrite-targetFilter URLRewrite mit ReplacePrefixMatchgering, aber die Pfadlogik musst du neu denken
canary und canary-weightMehrere backendRefs mit weight in einer Regelgering, das Ergebnis ist sauberer als vorher
ssl-redirect, force-ssl-redirectEigene HTTPRoute am HTTP-Listener mit RequestRedirectgering, dafür wird die Umleitung sichtbar
proxy-body-size, proxy-read-timeoutImplementierungsspezifisch, etwa ClientTrafficPolicy und BackendTrafficPolicymittel, bindet dich an die gewählte Implementierung
auth-url, auth-signinExtensionRef-Filter der Implementierung, etwa SecurityPolicymittel bis hoch, je nach Authentifizierungsverfahren
configuration-snippet, server-snippetKein Gegenstück im Standard, muss fachlich neu gebaut werdenhoch, hier steckt die eigentliche Projektarbeit
02

Schritt 2: Die Implementierung auswählen

Die Gateway API ist überall gleich, alles darüber hinaus nicht. Weil Zeitgrenzen, Ratenbegrenzung und Authentifizierung über eigene Objekte je Implementierung laufen, entscheidest du hier über die nächsten Jahre Betrieb.

Die brauchbare Reihenfolge lautet: zuerst prüfen, was ohnehin im Cluster läuft, dann den Funktionsbedarf aus der Annotationstabelle dagegenhalten, erst danach Produkte vergleichen. Wer bereits ein Mesh betreibt, spart sich mit dessen Gateway-Implementierung eine zweite Konfigurationssprache. Wer Cilium als CNI einsetzt, bekommt die Gateway API ohne zusätzlichen Datenpfad. Und wer den Cluster beim Anbieter betreibt, sollte die Managed-Variante ernsthaft prüfen, weil Updates des Datenpfads dann nicht mehr dein Problem sind. Wie diese Abwägung grundsätzlich ausgeht, haben wir unter managed Kubernetes oder selbst betreiben aufgeschrieben.

Fünf Fragen, die die Wahl entscheiden

  • Läuft schon ein Service Mesh? Dann ist dessen Gateway-Implementierung der kürzeste Weg, weil Nord-Süd- und Ost-West-Verkehr dieselbe Sprache sprechen.
  • Welche Zusatzfunktionen brauchst du wirklich? Externe Authentifizierung, Ratenbegrenzung und mTLS zum Backend sind die üblichen Ausschlusskriterien.
  • Wer betreibt den Datenpfad? Beim Anbieter gehostet bedeutet weniger Arbeit und weniger Freiheit, selbst betrieben genau umgekehrt.
  • Wie ist der Stand der Konformitätsberichte? Nicht jede Implementierung erfüllt den vollen Standardumfang, prüfe besonders Session-Persistenz, BackendTLSPolicy und GRPCRoute.
  • Wie sieht der Ausstieg aus? Routen sind portabel, die Policy-Objekte darum herum sind es nicht. Halte den Anteil implementierungsspezifischer Objekte klein.
03

Schritt 3: Mit ingress2gateway konvertieren

Der Konverter aus dem Kubernetes-Projekt nimmt dir die stumpfe Arbeit ab und liefert HTTPRoutes samt passendem Gateway. Was er nicht kann, sagt er dir allerdings nur begrenzt.

Gateway-API-Ressourcen und Implementierung installieren
# CRDs des Standardkanals einspielen
kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.5.0/standard-install.yaml
kubectl get crd | grep gateway.networking.k8s.io

# Envoy Gateway als Implementierung, Version bewusst festnageln
helm install eg oci://docker.io/envoyproxy/gateway-helm \
  --version <geprueft-und-eingetragen> \
  -n envoy-gateway-system --create-namespace
kubectl -n envoy-gateway-system rollout status deploy/envoy-gateway

# Welche GatewayClass steht jetzt bereit?
kubectl get gatewayclass

Trage bei --version die Version ein, die du im Testcluster geprüft hast. Ohne Angabe zieht Helm die jeweils neueste, und dein Testcluster und dein Produktivcluster laufen dann garantiert auseinander.

Ingress-Objekte in HTTPRoutes übersetzen
go install github.com/kubernetes-sigs/ingress2gateway@latest

# Trockenlauf gegen den laufenden Cluster, ein Namespace nach dem anderen
ingress2gateway print --namespace shop --providers ingress-nginx > shop-gateway.yaml

# Alternativ gegen die vorher gesicherte Datei
ingress2gateway print --input-file ingress-bestand.yaml --providers ingress-nginx

# Ergebnis pruefen, bevor irgendetwas angewendet wird
grep -c 'kind: HTTPRoute' shop-gateway.yaml
kubectl apply --dry-run=server -f shop-gateway.yaml

Arbeite bewusst je Namespace statt mit --all-namespaces. Das Ergebnis lässt sich so noch lesen, und du kannst Team für Team umstellen statt den ganzen Cluster an einem Abend.

04

Schritt 4: Parallel betreiben und je Hostnamen umschalten

Der alte Controller bleibt vorerst stehen. Beide Wege existieren gleichzeitig, und die Umschaltung passiert im DNS, nicht im Cluster. Damit ist der Rollback ein Eintrag statt eines Wiederaufbaus.

Leg ein geteiltes Gateway in einem eigenen Plattform-Namespace an und gib Anwendungsteams über allowedRoutes Zugriff darauf. Die Anwendungsteams pflegen ihre HTTPRoutes weiter im eigenen Namespace, brauchen aber keine Rechte am Gateway und keine Zertifikate. Das ist die eigentliche Verbesserung gegenüber Ingress, wo jede Änderung an Zertifikaten oder Listener-Verhalten in denselben Objekten landete wie die Routen der Anwendung. Wichtig ist die Reihenfolge: Erst steht das Gateway mit gültigem Zertifikat, dann hängen sich die Routen an, dann erst wandert der Datenverkehr.

gateway-infra/gateway.yaml und shop/httproute.yaml
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
  name: extern
  namespace: gateway-infra
spec:
  gatewayClassName: envoy
  listeners:
    - name: https
      protocol: HTTPS
      port: 443
      hostname: "*.example.de"
      tls:
        mode: Terminate
        certificateRefs:
          - kind: Secret
            name: wildcard-example-de
      allowedRoutes:
        namespaces:
          from: Selector
          selector:
            matchLabels:
              gateway-zugriff: "ja"
---
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  name: shop
  namespace: shop
spec:
  parentRefs:
    - name: extern
      namespace: gateway-infra
  hostnames:
    - shop.example.de
  rules:
    - matches:
        - path:
            type: PathPrefix
            value: /api
      filters:
        - type: URLRewrite
          urlRewrite:
            path:
              type: ReplacePrefixMatch
              replacePrefixMatch: /
      backendRefs:
        - name: shop-api
          port: 8080

Liegt das Zertifikats-Secret in einem anderen Namespace als das Gateway, brauchst du zusätzlich ein ReferenceGrant. Ohne das bleibt der Listener im Zustand ResolvedRefs=False, und zwar lautlos.

Vor dem Umschalten eines Hostnamens

  • DNS-TTL mindestens 24 Stunden vorher auf 60 Sekunden senkenMit einer TTL von einer Stunde dauert dein Rollback eine Stunde, egal wie schnell du das Problem erkennst.
  • Statusbedingungen von Gateway und HTTPRoute prüfen, nicht nur die PodsEin laufender Proxy-Pod bedeutet nicht, dass die Route angenommen wurde. Abgelehnte Routen erscheinen ausschließlich in den Statusbedingungen.
  • Weitergabe der Client-IP testenexternalTrafficPolicy und Proxy-Protokoll verhalten sich anders als beim alten Controller. Sonst protokollierst du plötzlich Knoten-Adressen, und IP-Sperrlisten laufen ins Leere.
  • Einmal mit echter Last fahren, nicht nur mit einem curl-AufrufVerbindungsgrenzen, Keep-Alive und Zeitgrenzen kippen erst unter Last. Ein einzelner erfolgreicher Aufruf sagt darüber nichts aus.
  • Umschaltung in ein Zeitfenster legen, in dem das Team erreichbar istFehler zeigen sich häufig erst nach Minuten, etwa bei langlebigen Verbindungen oder WebSockets. Nachts um drei sieht sie niemand.
05

Schritt 5: Beobachten, zurückrollen können, abbauen

Zwischen der ersten umgeschalteten Anwendung und dem Abschalten von ingress-nginx liegen mindestens zwei Wochen. In dieser Zeit vergleichst du Fehlerraten statt Gefühle.

Die Beobachtungsphase hat zwei Zwecke. Erstens fallen Randfälle auf, die im Test nie vorkommen: hartnäckige Clients mit alten TLS-Versionen, sehr große Uploads, Weiterleitungsketten aus einer anderen Zeit. Zweitens sammelst du die Zahlen, mit denen du den Abbau begründest. Nebenbei sinkt die Rechnung, denn jedes zusätzliche Gateway kostet in der Cloud einen eigenen Load Balancer. Wie sich solche Nebenkosten im Cluster insgesamt eindämmen lassen, steht unter Kubernetes-Kosten senken.

Fehlerraten vergleichen und erst dann abbauen
# Status der neuen Objekte, das ist die Wahrheit
kubectl -n gateway-infra get gateway extern -o jsonpath='{.status.conditions[*].type}{"\n"}'
kubectl -n shop get httproute shop -o jsonpath='{.status.parents[*].conditions[*].reason}{"\n"}'

# Zugriffe im neuen Datenpfad mitlesen
kubectl -n envoy-gateway-system logs -f --tail=50 \
  -l gateway.envoyproxy.io/owning-gateway-name=extern

# Serverfehler alt gegen neu, gleiches Zeitfenster
kubectl -n ingress-nginx logs --since=1h -l app.kubernetes.io/name=ingress-nginx | grep -c ' 5[0-9][0-9] '

# Erst wenn beides ruhig ist: alten Controller entfernen
kubectl get ingress -A          # sollte leer sein
helm -n ingress-nginx uninstall ingress-nginx

Solange noch ein einziges Ingress-Objekt existiert, ist der Abbau verfrüht. Die Ausgabe von kubectl get ingress -A ist das einzige belastbare Abbruchkriterium.

Wissen prüfen

Teste dich und finde deinen Weg

Bevor du einen Kurs buchst, lohnt sich eine ehrliche Standortbestimmung. Die Tests sind kostenlos und ohne Anmeldung.

Gut zu wissen

Häufige Fragen zu Kubernetes und der Gateway API

Noch etwas offen? Wir sind ohne Warteschleife für dich da.

Frag uns direkt
Kann ich ingress-nginx einfach weiterbetreiben?
Technisch ja, der Controller läuft weiter und die Images bleiben abrufbar. Nur bekommst du für neue Schwachstellen keine Korrekturen mehr, und zwar an der exponiertesten Stelle deines Clusters. Wie IngressNightmare im März 2025 gezeigt hat, reicht dort eine einzige Lücke für eine Cluster-Übernahme. Wenn du kurzfristig nicht migrieren kannst, reduziere wenigstens die Angriffsfläche: Admission-Webhook abschalten oder streng einschränken, Rechte des Controller-Dienstkontos beschneiden und den Zugriff auf das Controller-Netz begrenzen. Das ist eine Übergangslösung mit Verfallsdatum, kein Zielzustand.
Was ist der Unterschied zwischen Ingress und Gateway API?
Ingress kennt ein Objekt für alles, weshalb jede zusätzliche Funktion über herstellerspezifische Annotationen kam. Die Gateway API teilt dieselbe Aufgabe auf mehrere Objekte mit klaren Zuständigkeiten: GatewayClass für die Implementierung, Gateway für Ports, Hostnamen und Zertifikate, HTTPRoute und GRPCRoute für die Anwendungen. Dinge, die vorher Annotationen waren, etwa Pfad-Rewrites, Header-Manipulation und gewichtete Verteilung, sind jetzt Teil des Standards. Praktisch bedeutet das: Das Plattformteam verwaltet den Netzrand, die Anwendungsteams verwalten ihre Routen, und niemand muss dafür Rechte am fremden Objekt bekommen.
Nimmt mir ingress2gateway die ganze Arbeit ab?
Den Großteil der stumpfen Arbeit ja. Hostnamen, Pfade, Backends, TLS-Verweise und einige bekannte Annotationen übersetzt das Werkzeug zuverlässig in Gateway und HTTPRoutes. Nicht übersetzt werden externe Authentifizierung, Ratenbegrenzung, eigene Fehlerseiten und alle frei eingefügten NGINX-Schnipsel, und darauf weist die Ausgabe nicht deutlich hin. Rechne deshalb mit zwei Phasen: Konvertierung in Minuten, Nacharbeit an den Sonderfällen in Tagen. Die Liste der Sonderfälle hast du bereits, wenn du die Annotationen wie in Schritt 1 gezählt hast.
Brauche ich für die Gateway API ein Service Mesh?
Nein. Envoy Gateway, Traefik, NGINX Gateway Fabric und die Angebote der Cloud-Anbieter setzen die Gateway API ohne Mesh um. Ein Mesh lohnt sich, wenn du zusätzlich den Verkehr zwischen den Diensten im Cluster verschlüsseln, autorisieren und beobachten willst. Diese Entscheidung solltest du getrennt und später treffen. Beides gleichzeitig einzuführen bedeutet, zwei neue Fehlerquellen in einem Wartungsfenster in Betrieb zu nehmen, und im Störungsfall weißt du nicht, welche davon gerade zuschlägt.
Wie lange dauert eine Migration realistisch?
Der Aufwand hängt fast ausschließlich an den Annotationen. Ein Cluster mit einfachen Ingress-Objekten ohne Sonderfunktionen ist in ein bis zwei Tagen umgestellt, inklusive Testcluster. Kommen externe Authentifizierung, Ratenbegrenzung oder eigene NGINX-Schnipsel dazu, rechne je betroffener Anwendung mit einem halben bis ganzen Tag Nacharbeit plus Test. Dazu kommt die Beobachtungsphase von zwei Wochen, in der beide Wege parallel laufen. Für einen mittelgroßen Cluster mit dreißig Anwendungen ist ein Zeitraum von vier bis sechs Wochen eine belastbare Planungsgröße.

Zuletzt geprüft am 26. Juli 2026.

Das sagen Teilnehmer

Echte Stimmen aus unseren IT-Kursen

Der Kursinhalt entsprach voll meinen Erwartungen, die richtige Mischung aus Theorie und Praxis.
Rückmeldung aus dem Kurs „Kubernetes Grundkurs“
Erwartungen wurden erfüllt. Angekündigte Themen in hinreichender Tiefe bearbeitet. Zudem gutes Zeitmanagement.
Rückmeldung aus dem Kurs „Source Code Management und CI / CD (DO4)“
Persönlich für dich da

Deine Ansprechpartner

Du bist dir nicht sicher, welcher Kurs oder welches Level zu dir passt? Wir beraten dich persönlich und kostenlos.

Yves Hoppe

Yves Hoppe

Weiterbildung & Beratung

Hilft dir, aus dem Cloud-Programm den passenden Kurs oder Lernpfad zu finden.

Norbert Jansen

Norbert Jansen

Beratung & Inhouse

Plant mit dir Inhouse-Trainings, die exakt auf eure Systemlandschaft und Distributionen zugeschnitten sind.

Nächster Schritt

Die Umstellung einmal begleitet durchspielen

In der Kubernetes Gateway API Schulung gehst du den kompletten Weg an einem echten Cluster durch: Bestandsaufnahme, Konvertierung mit ingress2gateway, Parallelbetrieb und die Sonderfälle, an denen der Konverter aussteigt. Die Kurse laufen wahlweise Live-Online oder in Präsenz, auf Wunsch auch als Inhouse-Termin mit deinen eigenen Ingress-Objekten als Übungsmaterial. Sag uns, wie euer Cluster aussieht, dann sortieren wir gemeinsam die passende Reihenfolge.