如何在 istio 中启用用户级速率限制

How to enable user-level rate limiting in istio

我看到 Istio site 提到了速率限制支持,但我只能找到全局速率限制示例。

是否可以在用户级别这样做?例如,如果我的用户登录但在一秒钟内发送超过 50 个请求,那么我想阻止该用户等。在类似情况下,如果用户未登录,则该设备不能发送超过 30 个请求每秒。

是的,可以根据任意条件有条件地应用速率限制 在配额规则中使用匹配条件的属性。

apiVersion: config.istio.io/v1alpha2 kind: rule metadata: name: quota namespace: istio-system spec: match: source.namespace != destination.namespace actions: - handler: handler.memquota instances: - requestcount.quota

仅当源命名空间不等于目标命名空间时才适用配额。在您的情况下,您可能想要设置这样的匹配:

match: request: headers: cookie: regex: "^(.*?;)?(user=jason)(;.*)?$"

我做了一个 PR 来改进 rate-limiting 文档,你可以在这里找到它:https://github.com/istio/istio.github.io/pull/1109