NatronTech Logo
NetzwerkIngress NGINX

Ingress NGINX

Availability
Stage
Experimental

Wichtiger Hinweis: Ingress NGINX Retirement

Laut offiziellem Kubernetes Blog wird das Projekt ingress-nginx eingestellt. Support und Updates enden im März 2026. Natron arbeitet bereits an Migrationspfaden. Wir raten Kunden, mittelfristig den Wechsel auf Alternativen wie Traefik oder Istio zu planen. Unser Support steht Ihnen hierfür zur Verfügung.

Ingress NGINX ist ein bewährter Ingress-Controller für Kubernetes, der externen HTTP(S)-Traffic zu Ihren Services routet. Er übernimmt zentrale Aufgaben wie Load Balancing, SSL-Terminierung und Virtual Hosting.

Features

  • Load Balancing: Zuverlässige Verteilung von Traffic auf Backend-Services für hohe Verfügbarkeit.
  • SSL/TLS Terminierung: Zentrales Management von Verschlüsselung und Zertifikaten.
  • Pfad-basiertes Routing: Unter einer IP können mehrere Dienste über verschiedene Pfade erreichbar gemacht werden.
  • Health Checks: Automatisches Erkennen und Isolieren von fehlerhaften Instanzen.
  • Flexibilität: Umfangreiche Konfiguration durch Annotations.

Sicherheit & WAF (ModSecurity)

Web Application Firewall aktivieren

Sie können ModSecurity pro Ingress aktivieren, wahlweise im Detection- (nur Protokollierung) oder Enforcement-Modus (Blockierung).

Detection Mode (Snippet):

metadata:
  annotations:
    nginx.ingress.kubernetes.io/modsecurity-snippet: |
      SecRuleEngine DetectionOnly
      SecAuditEngine RelevantOnly
      SecStatusEngine Off

Voraussetzung: annotations-risk-level: "Critical" ist am Controller gesetzt (Natron Standard).

Enforcement Mode:

metadata:
  annotations:
    nginx.ingress.kubernetes.io/modsecurity-snippet: |
      SecRuleEngine On

Bösartige Anfragen (z.B. SQL Injection, XSS) werden nun mit 403 Forbidden blockiert.

TLS Konfiguration

Details zur Integration von Let's Encrypt und Zertifikatsmanagement finden Sie in unserer Cert-Manager Dokumentation.

Empfohlene Annotations für eine sichere TLS-Konfiguration:

metadata:
  annotations:
    # Erzwingt HTTPS-Redirect
    nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
    # Verweis auf den ClusterIssuer
    cert-manager.io/cluster-issuer: <issuer-name>
    # Best Practices für Zertifikate
    cert-manager.io/private-key-rotation-policy: Always
    cert-manager.io/private-key-algorithm: ECDSA

Gängige Use-Cases

TCP Passthrough

Ermöglicht das Durchleiten von Nicht-HTTP-Traffic (z.B. Datenbanken, SSH). Hinweis: Erfordert eine Anpassung der Port-Map in den Helm-Values des Controllers.

Basic Authentication

So schützen Sie einen Endpunkt mittels Basic Auth:

  1. Secret erstellen: kubectl create secret generic basic-auth --from-file=auth
  2. Ingress annotieren:
    nginx.ingress.kubernetes.io/auth-type: basic
    nginx.ingress.kubernetes.io/auth-secret: basic-auth
    nginx.ingress.kubernetes.io/auth-realm: "Authentication Required"

GeoIP2 Einschränkungen

Unsere Plattform verteilt automatisch MaxMind GeoLite2 Datenbanken. Für Länder-Blocking oder Logging prüfen Sie die verfügbaren maxmind-edition-ids und nutzen Variablen wie $geoip2_country_code in Ihren Log-Formaten.

Proxy auf externe Seiten

Leitet Traffic auf eine externe URL (z.B. example.com) weiter.

apiVersion: v1
kind: Service
metadata: { name: external }
spec:
  type: ExternalName
  externalName: example.com
  ports: [{ port: 443 }]
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"

Session Affinity (Sticky Sessions)

Bindet User-Sessions an spezifische Pods (via Cookie). Wichtig: Nutzen Sie keine Service-Level sessionAffinity: ClientIP zusammen mit Ingress.

nginx.ingress.kubernetes.io/affinity: "cookie"
nginx.ingress.kubernetes.io/session-cookie-name: "route"
nginx.ingress.kubernetes.io/session-cookie-expires: "172800"

Erweiterte Konfiguration

Proxy Tuning

  • Upload-Limit erhöhen: nginx.ingress.kubernetes.io/proxy-body-size: 50m
  • Header-Fehler beheben (502): nginx.ingress.kubernetes.io/proxy-buffer-size: "8k"

Snippet Annotations

Diese mächtigen Annotations erfordern das Risiko-Level "Critical":

  • server-snippet
  • configuration-snippet
  • modsecurity-snippet

Verbotene Keywords

Aus Sicherheitsgründen führen folgende Begriffe in Snippets zu Validierungsfehlern:

load_module, lua_package, _by_lua, location, root, proxy_pass, serviceaccount, {, }, ', "

On this page