首页 > 解决方案 > 速率限制不限制任何东西

问题描述

我正在尝试使用istio 速率限制来限制对服务hello的访问。(每秒最多 1 次调用)
我使用了 book info 演示应用程序中的模板。

这是我到目前为止的配置:

处理程序

apiVersion: config.istio.io/v1alpha2
kind: handler
metadata:
  name: quotahandler
  namespace: istio-system
spec:
  compiledAdapter: memquota
  params:
    quotas:
    - name: requestcountquota.instance.istio-system
      maxAmount: 1
      validDuration: 1s

实例

apiVersion: config.istio.io/v1alpha2
kind: instance
metadata:
  name: requestcountquota
  namespace: istio-system
spec:
  compiledTemplate: quota
  params:
    dimensions:
      source: request.headers["x-forwarded-for"] | "unknown"
      destination: destination.labels["app"] | "unknown"

配额规范

apiVersion: config.istio.io/v1alpha2
kind: QuotaSpec
metadata:
  name: request-count
  namespace: istio-system
spec:
  rules:
  - quotas:
    - charge: 1
      quota: requestcountquota

配额规范绑定

apiVersion: config.istio.io/v1alpha2
kind: QuotaSpecBinding
metadata:
  name: request-count
  namespace: istio-system
spec:
  quotaSpecs:
  - name: request-count
    namespace: istio-system
  services:
  - name: hello
    namespace: default

规则

apiVersion: config.istio.io/v1alpha2
kind: rule
metadata:
  name: quota
  namespace: istio-system
spec:
  actions:
  - handler: quotahandler
    instances:
    - requestcountquota

不用说,即使服务的 ip 每秒超过 1 个请求并且限制被激活,curling 服务的 ip 仍然可以工作......

仅供参考,我使用了 serviceIP / virtualService(+ 网关)。
此外,我使用的是“内存中”版本,而不是 Redis 版本。

任何有关理解错误所在的帮助将不胜感激!

标签: kubernetesistio

解决方案


推荐阅读