首先创建命名空间rls,并启用自动注入,如下所示:
kubectl create namespace rls kubectl label namespae rls injection=enabled
部署server服务,提供httpbin API调用,如下所示:
kubectl apply -n rls -f server.yaml
部署client服务,如下所示:
kubectl apply -n rls -f client.yaml
因为destination值为server,限制值为每5秒1次。所以client每秒调用server一次,就会出现如图8-15所示的测试结果。

图8-15 测试结果一
修改memquota的定义,调整为如果destination值为server,限制值为每5秒20次,如下所示:
apiVersion: "config.istio.io/v1alpha2"
kind: memquota
metadata:
name: handler
namespace: istio-system
spec:
quotas:
- name: requestcount.quota.istio-system
maxAmount: 2
validDuration: 1s
overrides:
- dimensions:
destination: server
maxAmount: 20
validDuration: 5s
运行以下命令以更新memquota速率限制:
kubectl apply -f mixer-rule-ratelimit.yaml
此时因为client每秒调用server一次,所有的请求都应当成功并返回响应码200,就会出现如图8-16所示的测试结果。

图8-16 测试结果二