Я пытаюсь реализовать ограничение скорости для моих существующих приложений, которые не входят в сетку.
В настоящее время все, что настроено, - это входной шлюз, шлюз и виртуальная служба.
apiVersion: "config.istio.io/v1alpha2"
kind: memquota
metadata:
name: handler
namespace: istio-system
spec:
quotas:
- name: requestcount.quota.istio-system
maxAmount: 1
validDuration: 1s
---
apiVersion: "config.istio.io/v1alpha2"
kind: quota
metadata:
name: requestcount
namespace: istio-system
spec:
dimensions:
source: request.headers["x-forwarded-for"] | "unknown"
destination: destination.labels["app"] | destination.service | "unknown"
---
apiVersion: config.istio.io/v1alpha2
kind: rule
metadata:
name: quota
spec:
actions:
- handler: handler.memquota
instances:
- requestcount.quota
---
apiVersion: config.istio.io/v1alpha2
kind: QuotaSpec
metadata:
name: request-count
namespace: istio-system
spec:
rules:
- quotas:
- charge: 1
quota: requestcount
---
apiVersion: config.istio.io/v1alpha2
kind: QuotaSpecBinding
metadata:
name: request-count
namespace: istio-system
spec:
quotaSpecs:
- name: request-count
namespace: istio-system
services:
- name: web-stage
namespace: default
---
### Virtual Service
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: web-stage
namespace: default
spec:
hosts:
- "web-stage.host.com"
gateways:
- web-gateway
http:
- match:
route:
- destination:
port:
number: 80
host: web-stage
С квотой, установленной на 1, я могу легко заблокировать службу, но я могу протолкнуть любое количество запросов в секунду.
Я не уверен, с чего начать отладку.