Rate Limiting mit NGINX-Ingress auf Kubernetes

30 Aug 2025 - Lesezeit: 2 Minuten

Warum Rate Limiting?

Auch wenn es selten aktiv bedacht wird: Jeder Webservice sollte eine Vorstellung davon haben, wie viele Requests er aushalten soll. Rate Limiting verhindert, dass unnötige Last – ob versehentlich oder absichtlich – die Verfügbarkeit gefährdet. Gerade in Kubernetes-Clustern mit einem NGINX-Ingress ist das Mittel der Wahl bereits integriert und muss nur richtig konfiguriert werden.


Schritt 1 – Rate-Limit Zone in der ConfigMap anlegen

In der ConfigMap des NGINX-Ingress-Controllers lässt sich ein Limit konfigurieren. Beispiel:

apiVersion: v1
kind: ConfigMap
metadata:
  name: ingress-nginx-controller
data:
  http-snippet: |
    limit_req_zone $request_uri zone=megatoll:10m rate=1r/m;

Mit diesem Eintrag wird eine Zone namens megatoll angelegt, die maximal eine Anfrage pro Minute pro Schlüssel ($request_uri) zulässt.

Deployment per Patch:

kubectl patch configmap ingress-nginx-controller -n infrastructure --type merge -p '{"data":{"http-snippet":"limit_req_zone $request_uri zone=one:10m rate=1r/m;"}}'

Alternativ lässt sich die Konfiguration auch per Patch-File einspielen:

kubectl patch configmap ingress-nginx-controller -n infrastructure --type merge --patch-file ./manifests/additional_ingress_config.yaml

Schritt 2 – Ingress Resource konfigurieren

Sobald die Zone definiert ist, kann das Rate Limit über die Ingress-Ressource aktiviert werden:

annotations:
  nginx.ingress.kubernetes.io/configuration-snippet: |
    limit_req zone=megatoll nodelay;

Quellen und Links

Es wurden noch keine Kommentare verfasst, sei der erste!