<p>I need to implement Rate Limiting (based on URL and path) on applications deployed on Kubernetes Cluster (EKS).</p>
<p>I'm looking for a managed way that involves least scripting and does provide an interface through which to manage rate limits for different application.</p>
<p>That system should be able to work accurately at the enterprise level.</p>
<p>Can somebody please suggest me the path/tool/framework to follow in order to achieve it.</p>

Talha Tariq
<p><code>Rate-limiting</code> is available in NGINX <a href="https://kubernetes.io/docs/concepts/services-networking/ingress/" rel="noreferrer">Ingress</a> by using <a href="https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#rate-limiting" rel="noreferrer">correct annotations</a>. Available options are:</p>
<ol>
<li><code>nginx.ingress.kubernetes.io/limit-connections</code>: number of concurrent
connections allowed from a single IP address. A 503 error is
returned when exceeding this limit.</li>
<li><code>nginx.ingress.kubernetes.io/limit-rps</code>: number of requests accepted
from a given IP each second. The burst limit is set to this limit
multiplied by the burst multiplier, the default multiplier is 5.
When clients exceed this limit, limit-req-status-code default: 503 is returned.</li>
<li><code>nginx.ingress.kubernetes.io/limit-rpm</code>: number of
requests accepted from a given IP each minute. The burst limit is
set to this limit multiplied by the burst multiplier, the default
multiplier is 5. When clients exceed this limit,
limit-req-status-code default: 503 is returned.</li>
<li><code>nginx.ingress.kubernetes.io/limit-burst-multiplier</code>: multiplier of
the limit rate for burst size. The default burst multiplier is 5,
this annotation override the default multiplier. When clients exceed
this limit, limit-req-status-code default: 503 is returned.</li>
<li><code>nginx.ingress.kubernetes.io/limit-rate-after</code>: initial number of
kilobytes after which the further transmission of a response to a
given connection will be rate limited. This feature must be used
with <a href="https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#proxy-buffering" rel="noreferrer">proxy-buffering enabled</a>.</li>
<li><code>nginx.ingress.kubernetes.io/limit-rate</code>: number of kilobytes per
second allowed to send to a given connection. The zero value
disables rate limiting. This feature must be used with
<a href="https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#proxy-buffering" rel="noreferrer">proxy-buffering enabled</a>.</li>
<li><code>nginx.ingress.kubernetes.io/limit-whitelist</code>: client IP source ranges
to be excluded from rate-limiting. The value is a comma separated
list of CIDRs.</li>
</ol>
<p>You can read more about NGINX rate limiting <a href="https://www.freecodecamp.org/news/nginx-rate-limiting-in-a-nutshell-128fe9e0126c/" rel="noreferrer">here</a> and for NGINX rate limiting in kubernetes <a href="https://medium.com/titansoft-engineering/rate-limiting-for-your-kubernetes-applications-with-nginx-ingress-2e32721f7f57" rel="noreferrer">in this guide</a>.</p>
