gpt4 book ai didi

amazon-web-services - 为特定路径设置 Ingress-Nginx 速率限制 rps

转载 作者:行者123 更新时间:2023-12-02 11:39:32 26 4
gpt4 key购买 nike

我正在使用 Kubernetes Kops。我只想在 Ingress-Nginx 级别为特定路径设置速率限制 rps。

我知道

nginx.ingress.kubernetes.io/limit-rps 

如果我在 Ingress 规则中设置它,那么它将适用于所有路由。但是,我想将它应用于特定路线。比方说,当我尝试访问时
/login

我想将路径/login 的 rps 限制设置为 100
nginx.ingress.kubernetes.io/limit-rps: 100

这是我的 Ingress 规则配置,
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 定义,可能会稍微滥用 ingress-nginx 的配置。 ingress-nginx 会将规则/路由合并在一起。但是,配置将变得更难管理,并且您正在接近 nginx 代理可以为您做的限制。

其他选项

Traefik 有一个 rate limit middleware可应用于routes .

也看看类似 kong 的东西或 istio如果您想开始更详细地管理单个服务。

Nginx 入口配置

为您的命名约定创建一个结构在这里很重要,这样您就可以知道哪些 Ingress 包含哪些路由。使用 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 )需要如何管理。如果它们都很好地合并,那么也许可以创建一个特殊的 Ingress 来容纳它们。如果不是,您最终可能会在所有 Ingress 配置中管理主机设置,这将是一件痛苦的事情。

关于amazon-web-services - 为特定路径设置 Ingress-Nginx 速率限制 rps,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56316923/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com