首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未考虑重新配额的Istio评级限制

未考虑重新配额的Istio评级限制
EN

Stack Overflow用户
提问于 2020-07-28 14:08:44
回答 1查看 282关注 0票数 2

我正在尝试在istio中使用速率限制(我已经和特使一起做过了,但项目经理希望我这样做)。我的配置基于istio的教程。我尝试了一些不同的东西,但都不能让它工作,我甚至不知道如何调试它。Kiali并没有给出任何关于配额,规则,...我的目标是阻止最多2个请求每XX秒的流量到一个服务。如果您想尝试一下,可以在这里找到我的代码:https://github.com/hagakure/istio_rating

我做的第一步是: istioctl install --设置meshConfig.disablePolicyChecks=false --按照istio网站上的说明设置values.pilot.policy.enabled=true

然后添加一些yaml配置:

我的服务:

代码语言:javascript
复制
apiVersion: v1
kind: Service
metadata:
  name: hello-world-svc
  namespace: rate-limit
spec:
  selector:
    app: hello-world
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80

由Istio曝光:

代码语言:javascript
复制
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: hello-world-gateway
  namespace: rate-limit
spec:
  selector:
    istio: ingressgateway
  servers:
    - port:
        number: 80
        name: http-web
        protocol: HTTP
      hosts:
        - '*'
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: hello-world-vs
  namespace: rate-limit
spec:
  hosts:
    - "*"
  gateways:
    - hello-world-gateway
  http:
    - route:
       - destination:
            port:
              number: 80
            host: hello-world-svc.rate-limit.svc.cluster.local

我的istio限速配置:

代码语言:javascript
复制
apiVersion: "config.istio.io/v1alpha2"
kind: instance
metadata:
  name: requestcount
  namespace: rate-limit
spec:
  compiledTemplate: quota
  params:
    dimensions:
      destination: destination.labels["app"] | destination.service.host | "unknown"
---
apiVersion: config.istio.io/v1alpha2
kind: QuotaSpec
metadata:
  name: quota
  namespace: rate-limit
spec:
  rules:
    - quotas:
        - quota: requestcount.instance.rate-limit
          charge: 1
---
apiVersion: config.istio.io/v1alpha2
kind: QuotaSpecBinding
metadata:
  name: quota-binding
  namespace: rate-limit
spec:
  quotaSpecs:
    - name: quota
      namespace: rate-limit
  services:
    - service: '*'
---
apiVersion: config.istio.io/v1alpha2
kind: handler
metadata:
  name: quotahandler
  namespace: rate-limit
spec:
  compiledAdapter: redisquota
  params:
      redisServerUrl: localhost:6379
      connectionPoolSize: 10
      quotas:
      - name: requestcount.instance.rate-limit
        maxAmount: 2
        validDuration: 30s
---
apiVersion: config.istio.io/v1alpha2
kind: rule
metadata:
  name: quota-rule
  namespace: rate-limit
spec:
  actions:
  - handler: quotahandler.handler.rate-limit
    instances:
    - requestcount.instance.rate-limit

但是没有附加任何东西,我可以想要多少卷曲就卷曲多少,没有问题:'(

EN

回答 1

Stack Overflow用户

发布于 2020-07-28 18:33:05

1.6.2我知道它已经被弃用了,但它仍然可以使用,不是吗?

正如在documentation中提到的

混音器策略在Istio 1.5中已弃用,不建议用于生产。

考虑使用Envoy native rate limiting而不是混音器速率限制。Istio将通过Istio扩展API添加对本机速率限制API的支持。

据我所知,当你安装istio时,混音器已经不存在了,documentation

如果您依赖特定的混音器功能,如进程外适配器,则可以重新启用混音器。Mixer将继续接收错误修复和安全修复,直到Istio 1.7。

但是我找不到合适的文档来说明如何做到这一点。

当混音器被弃用时,有关于速率限制的旧github issue

我已经和特使一起做过了,但是项目经理想让我试一下

有一个带有特使过滤器速率限制的github issue示例,如上面的问题和文档中所述,现在应该使用它,而不是istio文档中废弃的速率限制。所以我建议你和你的项目经理谈谈这件事。这实际上是正确的方法。

关于的问题,如果你使用旧版本的istio和mixer,或者你以某种方式在新版本上启用了它,可能会发生这个问题。

看看这个github issue

您提到的文档中的命令存在一些问题

代码语言:javascript
复制
istioctl install --set meshConfig.disablePolicyChecks=false --set values.pilot.policy.enabled=true 

相反,您应该使用

代码语言:javascript
复制
istioctl install --set values.pilot.policy.enabled=true --set values.global.policyCheckFailOpen=true

代码语言:javascript
复制
apiVersion: install.istio.io/v1alpha2
kind: IstioControlPlane
spec:
  values:
    pilot:
      policy:
        enabled: true
    global:
      policyCheckFailOpen: true

希望这些信息对你有用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63128010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档