我已阅读有关全局和本地速率限制的内容。我们要求对可能尝试 DDOS 的用户对部署在 k8s 上的 UI pod 的流量进行速率限制。我们希望限制任何单个 IP 尝试每分钟调用超过 5 个请求,但这似乎只能通过在 Envoy 过滤器后面运行的像 redis 这样的 memcache 来实现。我的理解是否正确,或者本地速率限制特使过滤器不需要在其后面运行缓存机制就足够了?
https://istio.io/latest/docs/tasks/policy-enforcement/rate-limit/#local-rate-limit
template:
metadata:
annotations:
proxy.istio.io/config: |-
proxyStatsMatcher:
inclusionRegexps:
- ".*http_local_rate_limit.*"
目前仅研究以测试可能的解决方案。
本地速率限制单独应用于每个 Pod 副本(即 UI Pod 的实例)。因此,如果您有一个入口控制器将流量路由到幕后的多个 UI Pod,那么每个 Pod 都会有其速率限制。
全局限速适用于所有Pod实例,需要部署限速服务和Redis实例。
更多信息: