Gateway API

Zweck

Gateway API stellt die standardisierte Veröffentlichung von Diensten innerhalb der Kubernetes-Plattform bereit.

Die API ersetzt langfristig klassische Ingress-Ressourcen und ermöglicht eine konsistente Verwaltung von HTTP-, TCP- und TLS-Verkehr.

Ziele

  • Trennung von Infrastruktur und Applikationen

  • Standardisierte Veröffentlichung von Diensten

  • Unterstützung mehrerer Protokolle

  • GitOps-freundliche Konfiguration

  • Portabilität zwischen verschiedenen Gateway-Implementierungen

Architektur

Gateway
    |
    +-- HTTPRoute
    +-- TCPRoute
    +-- TLSRoute
    |
    v
Anwendung

Applikationen verwalten ausschließlich ihre Routen.

Die Gateway-Infrastruktur wird zentral durch die Plattform bereitgestellt.

Implementierungen

Die Plattform verwendet unterschiedliche Gateway-Implementierungen.

Cluster Implementierung

home-tamay-cloud

Cilium Gateway

test-tamay-cloud

Envoy Gateway

tamay-cloud

Traefik Ingress

Langfristig soll Envoy Gateway als einheitliche Gateway-Implementierung verwendet werden.

Ressourcen

Gateway

Ein Gateway definiert die verfügbaren Listener und dient als zentraler Einstiegspunkt.

Beispiel:

apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
  name: main
spec:
  gatewayClassName: envoy

HTTPRoute

HTTPRoute wird für die Veröffentlichung von Webanwendungen verwendet.

Beispiel:

apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  name: paperless
spec:
  hostnames:
    - paperless.home.tamay.cloud

TCPRoute

TCPRoute ermöglicht die Weiterleitung von TCP-Verbindungen.

Typische Anwendungsfälle:

  • Datenbanken

  • Mailserver

  • Proprietäre TCP-Protokolle

TLSRoute

TLSRoute ermöglicht TLS-Passthrough ohne TLS-Terminierung am Gateway.

Typische Anwendungsfälle:

  • Matrix Federation

  • Mail-Protokolle

  • Eigene TLS-Endpunkte

ListenerSets

ListenerSets werden verwendet, um zusätzliche Listener zu bestehenden Gateways hinzuzufügen.

Aktuell werden ListenerSets im Cluster test-tamay-cloud eingesetzt.

DNS Integration

Gateway API arbeitet direkt mit ExternalDNS zusammen.

HTTPRoutes werden automatisch erkannt und als DNS-Einträge veröffentlicht.

Weitere Informationen:

Zertifikate

TLS-Zertifikate werden über Cert Manager bereitgestellt.

Die Referenzierung erfolgt über Gateway Listener oder die jeweiligen Routen.

Weitere Informationen:

Betrieb

Gateways anzeigen

kubectl get gateways -A

HTTPRoutes anzeigen

kubectl get httproutes -A

TCPRoutes anzeigen

kubectl get tcproutes -A

TLSRoutes anzeigen

kubectl get tlsroutes -A

Status prüfen

kubectl describe gateway main

Vorteile

  • Standardisierte Kubernetes API

  • Unterstützung mehrerer Protokolle

  • Trennung von Plattform und Anwendung

  • Bessere Mehrmandantenfähigkeit

  • Unterstützung verschiedener Gateway-Implementierungen