我看到Istio site提到了速率限制支持,但我只能找到全局速率限制示例。
是否可以在用户级执行此操作?例如,如果我的用户登录但在一秒钟内发送了超过50个请求,那么我想阻止所述用户等。在类似的情况下,如果用户没有登录,那么该设备无法发送每秒超过30个请求。
答案 0 :(得分:1)
是的,可以根据任意情况有条件地应用费率限制 使用配额规则中的匹配条件的属性。
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