特定のパスのIngress-Nginxレート制限rpsの設定

タグ:




質問

Kubernetes Kopsを使用しています。特定のパスに対してのみ、IngressNginxレベルでレート制限rpsを設定したいと思います。

私は知っている

nginx.ingress.kubernetes.io/limit-rps

Ingressルールでこれを設定すると、すべてのルートに適用されます。しかし、私は特定のルートにそれを適用したいと思います。私がアクセスしようとしているとき

/login

パス/ログインのためにrpsの制限を100に設定したい

nginx.ingress.kubernetes.io/limit-rps: 100

これは私のイングレスルールの設定です。

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: staging-ingress-rules
namespace: staging
annotations:
kubernetes.io/ingress.class: ‘nginx’
nginx.ingress.kubernetes.io/proxy-body-size: ‘0’
spec:
rules:
– host: staging.mysite.com
http:
paths:
– path: /login
backend:
serviceName: login_site
servicePort: 80
– path: /registration
backend:
serviceName: registration_site
servicePort: 80

ベストアンサー

同じホスト名に複数のイングレス定義を追加することで、ingress-nginxの設定を少し乱用することができます。 ingress-nginxはルール/ルートを一緒にマージします。設定は管理するのが難しくなり、nginxプロキシができることの限界に向かっています。

その他のオプション

traefikには、ルートに適用できるレート制限ミドルウェアがあります。

また、 cong や istio のようなものを見てください。

Nginxイングレス設定

あなたの命名規則に構造を作成することはここで重要ですので、どのイングレスがどのルートを通過するかを知ることができます。 Ingress nameのルートパスを使用することは私が始める場所ですが、あなたのユースケースは異なるかもしれません:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: staging-ingress-rules-registration
annotations:
kubernetes.io/ingress.class: ‘nginx’
nginx.ingress.kubernetes.io/proxy-body-size: ‘0’
nginx.ingress.kubernetes.io/limit-rps: ’10’
spec:
rules:
– host: staging.mysite.com
http:
paths:
– path: /registration
backend:
serviceName: registration-site
servicePort: 80

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: staging-ingress-rules-login
annotations:
kubernetes.io/ingress.class: ‘nginx’
nginx.ingress.kubernetes.io/proxy-body-size: ‘0’
nginx.ingress.kubernetes.io/limit-rps: ‘100’
spec:
rules:
– host: staging.mysite.com
http:
paths:
– path: /login
backend:
serviceName: login-site
servicePort: 80

ホスト全体またはサーバー全体のアノテーション( nginx.ingress.kubernetes.io/ssl-ciphers など)を管理する必要があるかどうかはわかりません。彼らがすべてうまくマージすれば、それらを格納するために特別なイングレスを作成するかもしれません。そうでない場合は、すべてのイングレスの設定を管理することになり、これは苦痛になります。







source
httpヘッダーに基づくnginxのレート制限
Nginxレート制限と実際のIPモジュール
minikubeのnginx-ingressに設定フラグを渡すには?
chart stable/nginx-ingressを使用してIngress whith Helmを設定する
nginx limit_reqレート制限の問題 – ドキュメントの説明?
Kubernetes Nginx Ingressで特定のホストをsslリダイレクトから除外する
NGINX IngressコントローラのStrippprefix Middleware
エグゼキュータサービスとレート制限
オブサーバブルのレート制限
luaでのレート制限
Rating