我看到Istio 网站提到了速率限制支持,但我只能找到全局速率限制示例。
是否可以在用户级别这样做?例如,如果我的用户登录但在一秒钟内发送了超过 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 来改进速率限制文档,你可以在这里找到它:https ://github.com/istio/istio.github.io/pull/1109