Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Ingress2gateway: Der einfache Weg von Kubernetes Ingress zur Gateway API

By Chimbu ChinnaduraiMar 31, 20254 min read

Diese Seite ist auch in English, Español, Français, Italiano, 日本語 und Português verfügbar.

Kubernetes Ingress ist seit jeher die klassische Methode, um Services außerhalb des Clusters bereitzustellen – mit Routing, TLS-Terminierung und Load Balancing. Mit zunehmend komplexeren Netzwerkanforderungen in Kubernetes stößt Ingress jedoch an seine Grenzen, vor allem in mandantenfähigen Umgebungen, bei feingranularer Traffic-Steuerung und in puncto Erweiterbarkeit.

Genau hier setzt die Gateway API an. Konzipiert als Nachfolger von Ingress, bringt sie umfangreichere Funktionen, mehr Flexibilität und einen Kubernetes-nativen Ansatz für die Steuerung von externem Traffic mit. Sie führt zentrale Konzepte ein – etwa rollenbasierten Zugriff auf Netzwerkressourcen, eine standardisierte Definition von Traffic-Policies sowie Unterstützung für Service-Mesh-Patterns.

Welche Lösung am besten passt, hängt von den konkreten Projektanforderungen ab. Die Gateway API eignet sich besonders für komplexes Routing und strenge Sicherheitsanforderungen, während Ingress bei klassischen Kubernetes-nativen Szenarien punktet. In diesem Blogbeitrag stellen wir das Tool ingress2gateway vor und zeigen, wie es die Migration von Ingress zur Gateway API erleichtert.

Was ist **ingress2gateway?**

Das Tool Ingress2gateway wurde entwickelt, um den Umstieg von Kubernetes-Ingress-Ressourcen auf die leistungsfähigere und ausdrucksstärkere Gateway API zu vereinfachen. Es bietet einen robusten, automatisierten Konvertierungsprozess für eine reibungslose Migration mit minimalen Auswirkungen auf den Betrieb.

Wichtigste Funktionen und Möglichkeiten:

✅ Automatische Konvertierung

  • Analysiert vorhandene Ingress-Ressourcen intelligent und erzeugt äquivalente Gateway-API-Konfigurationen, einschließlich Gateway-, HTTPRoute- und BackendPolicy-Ressourcen.
  • Verarbeitet komplexe Ingress-Regeln, Annotationen und Konfigurationen und überführt sie in die passenden Gateway-API-Spezifikationen.

✅ Erhält Routing-Regeln:

  • Bildet URL-Pfade, Hostnamen und Backend-Services aus Ingress-Regeln präzise auf HTTPRoute-Regeln ab.
  • Sorgt dafür, dass das Routing-Verhalten nach der Migration konsistent bleibt und unerwartete Ausfälle vermieden werden.
  • Unterstützt diverse Routing-Funktionen wie Path Matching (Prefix, Exact, Regex), Hostname-Matching und Header-basiertes Routing.

✅ Unterstützt verschiedene Ingress-Controller

✅ Ermöglicht eine schrittweise Migration:

  • Erlaubt die schrittweise Einführung der Gateway API durch selektive Konvertierung einzelner Ingress-Ressourcen.
  • Bietet einen Dry-Run-Modus, mit dem sich Konvertierungsergebnisse vor dem Anwenden im Cluster prüfen lassen.
  • Ermöglicht den parallelen Betrieb und Test von Ingress- und Gateway-API-Ressourcen.

Ingress2gateway in der Praxis

Um das Tool zu testen, benötigen Sie einen Kubernetes-Cluster mit installierter Gateway API. Mehrere Projekte unterstützen die Gateway API, einige Cloud-Anbieter stellen sogar eine vollständig verwaltete Implementierung bereit.

Im folgenden Beispiel verwende ich Google Kubernetes Engine sowie den standardmäßigen Ingress-Controller ingress-gce in GKE.

Beispiel-Workload und Ingress-Ressource bereitstellen

  • Stellen Sie den Beispiel-Workload httpbin bereit.
---
apiVersion: v1
kind: Service
metadata:
  name: httpbin
  labels:
    app: httpbin
spec:
  ports:
  - name: http
    port: 8000
    targetPort: 80
  selector:
    app: httpbin
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: httpbin
spec:
  replicas: 1
  selector:
    matchLabels:
      app: httpbin
  template:
    metadata:
      labels:
        app: httpbin
    spec:
      containers:
      - image: docker.io/kennethreitz/httpbin
        imagePullPolicy: IfNotPresent
        name: httpbin
        ports:
        - containerPort: 80

Beispielhaftes Kubernetes-Deployment und -Service

  • Erstellen Sie eine Ingress-Ressource für das httpbin-Deployment.
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: httpbin-ingress
  namespace: default
spec:
  rules:
  - host: httpbin.example.com
    http:
      paths:
      - backend:
          service:
            name: httpbin
            port:
              number: 8000
        path: /
        pathType: Prefix

Beispielhafte Ingress-Ressource

Ingress2gateway installieren und ausführen

  • Folgen Sie der Installationsanleitung, um ingress2gateway zu installieren, oder laden Sie das Binary auf der Releases-Seite herunter.
  • Führen Sie ingress2gateway für Ihren jeweiligen Provider aus. Das Tool liest die Ingress-Ressourcen und/oder providerspezifischen CRDs aus einem Kubernetes-Cluster oder einer Datei und gibt die entsprechenden Gateway-API-Ressourcen im YAML- oder JSON-Format auf stdout aus.

Die Ausgabe sieht etwa so aus:

Mit ingress2gateway erzeugte Beispiel-Gateway-API-Ressourcen

Hinweis: Ingress2gateway ist nicht dafür gedacht, Annotationen 1:1 von Ingress in die Gateway API zu übernehmen. Stattdessen überführt das Tool die Annotationen in Gateway-CRDs; weit verbreitete providerspezifische Annotationen und/oder CRDs werden möglicherweise noch nicht unterstützt. Eine Übersicht der aktuell unterstützten Provider und der zugehörigen Dokumentation finden Sie unter supported providers.

Beispielhafte Gateway-API-Ressourcen

  • Prüfen Sie das generierte Manifest sorgfältig und stellen Sie sicher, dass alle erforderlichen Konfigurationen enthalten sind, bevor Sie es in Ihrer Produktionsumgebung einsetzen. Führen Sie einen End-to-End-Test durch, bevor Sie die bestehenden Ingress-Ressourcen entfernen.

Klassisches Ingress hat uns lange gute Dienste geleistet – die Gateway API hebt das Traffic-Management in Kubernetes jedoch auf ein neues Niveau in Sachen Kontrolle und Flexibilität. Mit fortgeschrittenem Traffic-Routing, besseren Sicherheits-Policies und nativer Mandantenfähigkeit ist die Gateway API genau auf die Anforderungen moderner cloud-native Netzwerke zugeschnitten. Bereit für den Umstieg? Das community-getriebene Tool ingress2gatewayapi vereinfacht die Migration spürbar und sorgt für einen nahtlosen Übergang.

Ich hoffe, dieser Beitrag liefert Ihnen wertvolle Einblicke. Wenn Sie mehr erfahren möchten oder sich für unsere Services interessieren, sprechen Sie uns gerne an. Sie erreichen uns hier.