Amazon web services 为特定路径设置入口Nginx速率限制rps

Amazon web services 为特定路径设置入口Nginx速率限制rps,amazon-web-services,docker,kubernetes,kubernetes-ingress,nginx-ingress,Amazon Web Services,Docker,Kubernetes,Kubernetes Ingress,Nginx Ingress,我用的是Kubernetes Kops。我只想为特定路径设置入口Nginx级别的速率限制rps 我知道 nginx.ingress.kubernetes.io/limit-rps 如果我在入口规则中设置了这一点,那么它将适用于所有路线。但是,我想把它应用于一条特定的路线。比方说,当我试图访问 /login 我想将路径/登录的rps限制设置为100 nginx.ingress.kubernetes.io/limit-rps: 100 这是我的入口规则配置 apiVersion: exten

我用的是Kubernetes Kops。我只想为特定路径设置入口Nginx级别的速率限制rps

我知道

nginx.ingress.kubernetes.io/limit-rps 
如果我在入口规则中设置了这一点,那么它将适用于所有路线。但是,我想把它应用于一条特定的路线。比方说,当我试图访问

/login
我想将路径/登录的rps限制设置为100

nginx.ingress.kubernetes.io/limit-rps: 100
这是我的入口规则配置

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: staging-ingress-rules
  namespace: staging
  annotations:
    kubernetes.io/ingress.class: 'nginx'
    nginx.ingress.kubernetes.io/proxy-body-size: '0'
spec:
  rules:
  - host: staging.mysite.com
    http:
      paths:
      - path: /login
        backend:
          serviceName: login_site
          servicePort: 80
      - path: /registration
        backend:
          serviceName: registration_site
          servicePort: 80

通过为同一主机名添加多个入口定义,可能会稍微滥用入口nginx的配置。ingress nginx将合并规则/路由。不过,配置将变得更难管理,而且您正在接近nginx代理功能的极限

其他选择 Traefik具有可应用于的

如果您想开始更详细地管理单个服务,还可以查看类似或的内容

Nginx入口配置 为命名约定创建一个结构在这里很重要,这样您就可以知道哪些入口包含哪些路由。在入口
名称
中使用路由路径是我的出发点,但您的用例可能会有所不同:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: staging-ingress-rules-registration
  annotations:
    kubernetes.io/ingress.class: 'nginx'
    nginx.ingress.kubernetes.io/proxy-body-size: '0'
    nginx.ingress.kubernetes.io/limit-rps: '10'
spec:
  rules:
  - host: staging.mysite.com
    http:
      paths:
      - path: /registration
        backend:
          serviceName: registration-site
          servicePort: 80
我不确定需要如何管理主机范围或服务器范围的注释(如)。如果它们很好地融合在一起,那么可能会创建一个特殊的入口来容纳它们。否则,您可能会在所有入口配置中管理主机设置,这将是一个难题

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: staging-ingress-rules-login
  annotations:
    kubernetes.io/ingress.class: 'nginx'
    nginx.ingress.kubernetes.io/proxy-body-size: '0'
    nginx.ingress.kubernetes.io/limit-rps: '100'
spec:
  rules:
  - host: staging.mysite.com
    http:
      paths:
      - path: /login
        backend:
          serviceName: login-site
          servicePort: 80