- Authors

- Name
- Phillip Pham
- @ddppham
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
| Feature | Nginx Ingress | Kong | Traefik |
|---|---|---|---|
| Lizenz | Open Source (Apache 2.0) | OSS + Enterprise | Open Source (MIT) |
| Rate Limiting | Einfach (Annotations) | Erweitert (Plugin) | Middleware |
| Authentifizierung | Basic Auth, External Auth | OAuth2, JWT, OIDC, LDAP | ForwardAuth, BasicAuth |
| Canary Deployments | Annotations (gewichtet) | Canary Plugin | Weighted Round Robin |
| Let's Encrypt | Manuell (cert-manager) | Plugin oder cert-manager | Eingebaut (ACME) |
| gRPC Support | Ja | Ja | Ja |
| WebSocket | Ja | Ja | Ja |
| Dashboard | Nein (Prometheus-Export) | Kong Manager (Enterprise) | Eingebaut |
| Gateway API | Ja (ab v1.11) | Ja (Kong Ingress Controller) | Ja (nativ) |
| RAM-Verbrauch | ~100-200 MB | ~300-500 MB | ~100-150 MB |
| Konfiguration | Annotations + ConfigMap | CRDs + Plugins | Labels + CRDs |
| Lernkurve | Niedrig | Mittel-Hoch | Niedrig |
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
Gateway API: Der neue Kubernetes Ingress Standard
Kubernetes Gateway API als moderner Ingress-Ersatz. GatewayClass, Gateway und HTTPRoute konfigurieren, Traffic Splitting und Header-basiertes Routing einrichten.
Kubernetes API Gateway: Kong, Ambassador und Gloo Vergleich
Kong, Ambassador und Gloo Edge als Kubernetes API Gateways im Praxisvergleich: Setup, Routing, Authentifizierung und Rate Limiting mit YAML-Beispielen.
Kubernetes Gateway API: HTTPRoute, GRPCRoute und Migration
Kubernetes Gateway API als Ingress-Nachfolger: HTTPRoute, GRPCRoute und TLSRoute konfigurieren, Traffic Splitting einrichten und von Ingress migrieren.
Kubernetes Ingress 502, 503, 504 Fehler beheben
Ingress-Fehler systematisch lösen: 502 Bad Gateway, 503 Service Unavailable und 504 Timeout mit Ursachen, Debugging-Schritten und Fixes.
Kubernetes Load Balancing: MetalLB vs. Nginx vs. Traefik
MetalLB, Nginx Ingress und Traefik im direkten Vergleich für Kubernetes: Wann du welchen Load Balancer einsetzt und wie du ihn konfigurierst.