Veröffentlicht am

API Gateway für Kubernetes: Nginx, Kong, Traefik

Teilen:
Authors

TL;DR

Nginx Ingress Controller ist der Standard fuer einfache Setups -- stabil, weit verbreitet, aber limitiert bei Rate Limiting und Auth. Kong bietet Enterprise-Features wie Plugin-basiertes API Management, kostet aber mehr Ressourcen. Traefik punktet mit Auto-Discovery und Let's-Encrypt-Integration. Die Kubernetes Gateway API ersetzt langfristig die Ingress-Ressource und wird von allen drei unterstuetzt.


Warum Ingress Controller nicht gleich Ingress Controller ist

Jeder Kubernetes-Cluster braucht einen Ingress Controller. Aber welchen? Die Wahl beeinflusst, wie einfach Rate Limiting, Authentifizierung, Canary Deployments und TLS-Terminierung umgesetzt werden koennen.

# Welche Ingress Controller laufen aktuell im Cluster?
kubectl get pods -A | grep -E "ingress|traefik|kong"

# Ingress-Ressourcen anzeigen
kubectl get ingress -A

Die drei populaersten Optionen -- Nginx, Kong und Traefik -- decken 90% aller Kubernetes-Installationen ab. Dazu kommt die Gateway API als neuer Standard.


Feature-Vergleich

FeatureNginx IngressKongTraefik
LizenzOpen Source (Apache 2.0)OSS + EnterpriseOpen Source (MIT)
Rate LimitingEinfach (Annotations)Erweitert (Plugin)Middleware
AuthentifizierungBasic Auth, External AuthOAuth2, JWT, OIDC, LDAPForwardAuth, BasicAuth
Canary DeploymentsAnnotations (gewichtet)Canary PluginWeighted Round Robin
Let's EncryptManuell (cert-manager)Plugin oder cert-managerEingebaut (ACME)
gRPC SupportJaJaJa
WebSocketJaJaJa
DashboardNein (Prometheus-Export)Kong Manager (Enterprise)Eingebaut
Gateway APIJa (ab v1.11)Ja (Kong Ingress Controller)Ja (nativ)
RAM-Verbrauch~100-200 MB~300-500 MB~100-150 MB
KonfigurationAnnotations + ConfigMapCRDs + PluginsLabels + CRDs
LernkurveNiedrigMittel-HochNiedrig

Nginx Ingress Controller

Der De-facto-Standard. Basiert auf dem Nginx-Webserver und wird durch Annotations konfiguriert. Einfach, stabil, gut dokumentiert.

Installation

helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo update

helm install ingress-nginx ingress-nginx/ingress-nginx \
  --namespace ingress-nginx \
  --create-namespace \
  --set controller.replicaCount=2 \
  --set controller.resources.requests.cpu=100m \
  --set controller.resources.requests.memory=128Mi

Ingress-Ressource

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: shop-ingress
  namespace: shop
  annotations:
    nginx.ingress.kubernetes.io/ssl-redirect: "true"
    nginx.ingress.kubernetes.io/rate-limit: "10"
    nginx.ingress.kubernetes.io/rate-limit-window: "1m"
    nginx.ingress.kubernetes.io/proxy-body-size: "10m"
    nginx.ingress.kubernetes.io/cors-allow-origin: "https://shop.example.de"
spec:
  ingressClassName: nginx
  tls:
    - hosts:
        - shop.example.de
      secretName: shop-tls
  rules:
    - host: shop.example.de
      http:
        paths:
          - path: /api
            pathType: Prefix
            backend:
              service:
                name: api-service
                port:
                  number: 80
          - path: /
            pathType: Prefix
            backend:
              service:
                name: frontend
                port:
                  number: 80

Staerken: Minimaler Overhead, breite Community, jeder kennt Nginx-Config. Schwaechen: Komplexe Policies nur ueber Annotations -- wird bei vielen Regeln unuebersichtlich.


Kong Ingress Controller

Kong ist ein API Gateway mit Plugin-Architektur. Mehr als ein Ingress Controller: Rate Limiting, OAuth2, Request Transformation, Caching und Logging sind als Plugins verfuegbar.

Installation

helm repo add kong https://charts.konghq.com
helm repo update

helm install kong kong/ingress \
  --namespace kong \
  --create-namespace \
  --set gateway.resources.requests.cpu=200m \
  --set gateway.resources.requests.memory=256Mi

Ingress mit Kong Plugins

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: shop-ingress
  namespace: shop
  annotations:
    konghq.com/plugins: rate-limit-plugin,cors-plugin
spec:
  ingressClassName: kong
  rules:
    - host: shop.example.de
      http:
        paths:
          - path: /api
            pathType: Prefix
            backend:
              service:
                name: api-service
                port:
                  number: 80
---
apiVersion: configuration.konghq.com/v1
kind: KongPlugin
metadata:
  name: rate-limit-plugin
  namespace: shop
config:
  minute: 60
  policy: local
  limit_by: ip
plugin: rate-limiting
---
apiVersion: configuration.konghq.com/v1
kind: KongPlugin
metadata:
  name: cors-plugin
  namespace: shop
config:
  origins:
    - "https://shop.example.de"
  methods:
    - GET
    - POST
  headers:
    - Authorization
    - Content-Type
plugin: cors

Staerken: Maechtige Plugin-Architektur, Enterprise-Features (OAuth2, JWT-Validierung, Request Transformation). Schwaechen: Hoeherer RAM-Verbrauch, Kong Manager nur in der Enterprise-Version, steilere Lernkurve.


Traefik

Traefik wurde fuer Container und Kubernetes gebaut. Auto-Discovery von Services, eingebautes Let's-Encrypt-Management und ein Dashboard machen den Einstieg einfach.

Installation

helm repo add traefik https://traefik.github.io/charts
helm repo update

helm install traefik traefik/traefik \
  --namespace traefik \
  --create-namespace \
  --set resources.requests.cpu=100m \
  --set resources.requests.memory=128Mi \
  --set dashboard.enabled=true

IngressRoute (Traefik CRD)

apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
  name: shop-route
  namespace: shop
spec:
  entryPoints:
    - websecure
  routes:
    - match: Host(`shop.example.de`) && PathPrefix(`/api`)
      kind: Rule
      services:
        - name: api-service
          port: 80
      middlewares:
        - name: rate-limit
        - name: headers-security
    - match: Host(`shop.example.de`)
      kind: Rule
      services:
        - name: frontend
          port: 80
  tls:
    certResolver: letsencrypt
---
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
  name: rate-limit
  namespace: shop
spec:
  rateLimit:
    average: 50
    burst: 100
    period: 1m
---
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
  name: headers-security
  namespace: shop
spec:
  headers:
    stsSeconds: 31536000
    stsIncludeSubdomains: true
    contentTypeNosniff: true
    frameDeny: true

Staerken: Let's Encrypt out-of-the-box, Dashboard eingebaut, leichtgewichtig, Middleware-Konzept intuitiv. Schwaechen: Weniger Enterprise-Plugins als Kong, bei komplexen Routing-Regeln werden CRDs schnell verschachtelt.


Gateway API: Der neue Standard

Die Kubernetes Gateway API ersetzt langfristig die Ingress-Ressource. Sie trennt Infrastruktur (GatewayClass, Gateway) von Routing (HTTPRoute) und gibt Plattform-Teams und Entwicklern unterschiedliche Verantwortlichkeiten.

# Plattform-Team: Gateway definieren
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
  name: shop-gateway
  namespace: shop
spec:
  gatewayClassName: nginx  # oder kong, traefik
  listeners:
    - name: https
      port: 443
      protocol: HTTPS
      hostname: shop.example.de
      tls:
        mode: Terminate
        certificateRefs:
          - name: shop-tls
    - name: http
      port: 80
      protocol: HTTP
      hostname: shop.example.de
---
# Entwickler-Team: HTTPRoute definieren
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  name: shop-routes
  namespace: shop
spec:
  parentRefs:
    - name: shop-gateway
  hostnames:
    - shop.example.de
  rules:
    - matches:
        - path:
            type: PathPrefix
            value: /api/products
      backendRefs:
        - name: product-catalog
          port: 80
          weight: 100
    - matches:
        - path:
            type: PathPrefix
            value: /api/orders
      backendRefs:
        - name: order-service
          port: 80
          weight: 90
        - name: order-service-canary
          port: 80
          weight: 10
    - matches:
        - path:
            type: PathPrefix
            value: /
      backendRefs:
        - name: frontend
          port: 80

Der Vorteil: Canary Deployments ueber weight direkt in der HTTPRoute -- ohne Controller-spezifische Annotations. Die Gateway API funktioniert identisch mit Nginx, Kong und Traefik als Backend.


Welchen Controller waehlen?

Nginx Ingress wenn: Standard-Routing reicht, Team kennt Nginx, Budget ist begrenzt. 80% aller Setups fahren damit gut.

Kong wenn: Du API Management brauchst -- OAuth2, JWT-Validierung, Request/Response Transformation, detailliertes Rate Limiting pro Consumer. Typisch fuer Plattformen mit externen API-Konsumenten.

Traefik wenn: Auto-Discovery und Let's Encrypt ohne cert-manager gewuenscht sind. Gut fuer kleinere Teams, die schnell produktiv sein wollen.

Gateway API in jedem Fall: Starte neue Projekte mit HTTPRoute statt Ingress. Die Migration bestehender Ingress-Ressourcen kann schrittweise erfolgen.


FAQ

Kann ich mehrere Ingress Controller gleichzeitig betreiben?

Ja. Jeder Controller bekommt eine eigene ingressClassName. Ein Cluster kann Nginx fuer interne Services und Kong fuer externe APIs gleichzeitig nutzen. Wichtig: Nur ein Controller sollte die Default-IngressClass sein.

Wie migriere ich von Ingress zu Gateway API?

Schrittweise. Installiere die Gateway API CRDs, erstelle Gateway und HTTPRoute parallel zur bestehenden Ingress-Ressource. Teste mit einem Service, dann migriere die anderen. Die alte Ingress-Ressource kann danach geloescht werden.

Brauche ich ein API Gateway wenn ich ein Service Mesh habe?

Ja, fuer North-South Traffic (extern nach intern). Ein Service Mesh wie Istio handhabt East-West Traffic (intern zu intern). Das API Gateway sitzt am Cluster-Eingang, das Service Mesh zwischen den Services.

Wie sieht es mit Performance aus?

Nginx und Traefik sind bei Standard-Routing nahezu gleichauf: 10.000-30.000 Requests/Sekunde pro Replica. Kong liegt durch die Plugin-Verarbeitung bei 5.000-15.000 rps. Fuer die meisten Workloads ist das kein Flaschenhals -- skaliere ueber Replicas.


Legacy zu Kubernetes migrieren?

Wir begleiten Ihre Migration von VMs zu Containern – ohne Produktionsausfall. Erfahrung aus 50+ Migrationsprojekten.

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