8.6.3 部署应用示例

首先创建命名空间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 测试结果二