Ошибка ограничения скорости Istio (Запрошенная квота 'requestcount' не настроена) - PullRequest
0 голосов
/ 21 сентября 2018

Я следую вместе с разделом Istio Rate Limits этой задачи из документов: https://istio.io/docs/tasks/policy-enforcement/rate-limiting/

У меня правильно настроено приложение bookinfo, у меня есть виртуальный сервис для страницы продукта (и вседругие компоненты bookinfo), и я запускаю их код как есть, но ограничение скорости не работает для меня.

Каждый раз, когда я нажимаю URL для страницы продукта, это работает, ограничение скорости вообще не происходит,Тем не менее, каждый раз, когда я нажимаю на URL, я вижу это сообщение в журналах микшера:

kubectl -n istio-system logs $(kubectl -n istio-system get pods -lapp=policy -o jsonpath='{.items[0].metadata.name}') -c mixer

2018-09-21T16:06:28.456449Z     warn    Requested quota 'requestcount' is not configured

квота запроса определенно установлена, хотя:

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"
    destinationVersion: destination.labels["version"] | "unknown"

Когда я применяю полный yamlфайл, который я вижу:

 memquota.config.istio.io "handler" configured
 quota.config.istio.io "requestcount" configured
 quotaspec.config.istio.io "request-count" configured
 quotaspecbinding.config.istio.io "request-count" configured
 rule.config.istio.io "quota" configured

И если я вижу следующее при запуске

kubectl get quota requestcount -n istio-system -o yaml

apiVersion: config.istio.io/v1alpha2
kind: quota
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
  {"apiVersion":"config.istio.io/v1alpha2","kind":"quota","metadata":{"annotations":{},"name":"requestcount","namespace":"istio-system"},"spec":{"dimensions":{"destination":"destination.labels[\"app\"] | destination.service | \"unknown\"","destinationVersion":"destination.labels[\"version\"] | \"unknown\"","source":"request.headers[\"x-forwarded-for\"] | \"unknown\""}}}
  clusterName: ""
  creationTimestamp: 2018-09-21T16:02:23Z
  generation: 1
  name: requestcount
  namespace: istio-system
  resourceVersion: "263792"
  selfLink: /apis/config.istio.io/v1alpha2/namespaces/istio-system/quotas/requestcount
  uid: ba4d2510-bdb7-11e8-b8c9-025000000001
spec:
  dimensions:
    destination: destination.labels["app"] | destination.service | "unknown"
    destinationVersion: destination.labels["version"] | "unknown"
    source: request.headers["x-forwarded-for"] | "unknown"

Так почему я получаю это сообщение?

1 Ответ

0 голосов
/ 07 ноября 2018

Я столкнулся с этим и исправил его, убедившись, что rule был в том же пространстве имен, что и quota

---
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"
    destinationVersion: destination.labels["version"] | "unknown"
---
apiVersion: config.istio.io/v1alpha2
kind: rule
metadata:
  name: quota
  namespace: istio-system
spec:
  # quota only applies if you are not logged in.
  # match: match(request.headers["cookie"], "user=*") == false
  actions:
  - handler: handler.memquota
    instances:
    - requestcount.quota
...