问题描述
我需要对Kubernetes Cluster(EKS)上部署的应用程序实施速率限制(基于URL和路径)。
我正在寻找一种涉及最少脚本的托管方式,并且确实提供了一个界面来管理不同应用程序的速率限制。
该系统应该能够在企业级别上正常工作。
有人可以建议我要实现它的路径/工具/框架。
解决方法
通过使用Ingress在NGINX correct annotations中可以使用
Rate-limiting
。可用的选项是:
-
nginx.ingress.kubernetes.io/limit-connections
:并发数 单个IP地址允许的连接。 503错误是 超过此限制时返回。 -
nginx.ingress.kubernetes.io/limit-rps
:已接受的请求数 每秒从给定的IP。突发限制设置为此限制 乘以脉冲串乘数,默认乘数为5。 当客户端超过此限制时,将返回limit-req-status-code默认值:503。 -
nginx.ingress.kubernetes.io/limit-rpm
:数量 每分钟从给定IP接受的请求。突发限制为 设置为此极限乘以脉冲串乘数(默认) 乘数是5。当客户超出此限制时, limit-req-status-code默认值:返回503。 -
nginx.ingress.kubernetes.io/limit-burst-multiplier
:的乘数 突发大小的限制速率。默认的突发倍增器为5 此注释将覆盖默认乘数。当客户超过 此限制,默认为limit-req-status-code:503。 -
nginx.ingress.kubernetes.io/limit-rate-after
:的初始编号 千字节之后,进一步传输对 给定的连接将受到速率的限制。必须使用此功能 与proxy-buffering enabled。 -
nginx.ingress.kubernetes.io/limit-rate
:每千字节数 秒允许发送到给定的连接。零值 禁用速率限制。此功能必须与 proxy-buffering enabled。 -
nginx.ingress.kubernetes.io/limit-whitelist
:客户端IP源范围 被排除在速率限制之外。值以逗号分隔 CIDR列表。
您可以阅读有关NGINX速率限制here以及有关Kubernetes in this guide中NGINX速率限制的更多信息。