Kubernetes Ingress 速率限制改变重写目标基础

Kuberentes Ingress rate lmiting altering rewrite-target base

我有一个 Ingress 文件,其中包含只有一个注释

---
  apiVersion: "extensions/v1beta1"
  kind: "Ingress"
  metadata: 
    name: "logging-microservice-ingress"
    namespace: "000000001"
    annotations:
      nginx.ingress.kubernetes.io/rewrite-target: /
  spec: 
    rules: 
      - 
        host: "ms-shared-nad.techmahindra.com"
        http: 
          paths: 
            - 
              backend: 
                serviceName: "logging-microservice-000000001"
                servicePort: 3000
              path: "/logging-microservice"

当我调用 https://example.com/logging-microservice/logs backend 服务生成时,

GET /logs --> 200

当我添加两个注释喜欢

  nginx.ingress.kubernetes.io/limit-connections: 1
  nginx.ingress.kubernetes.io/limit-rps: 1

后端给出

GET /logging-microservice/logs --> 404

我无权查看那里生成的实际 nginx 配置。但是,想知道应用速率限制如何改变重写基础。

我已经在 open source nginx server 中尝试了速率限制,它按预期工作。从传递到上游 api 后端的 url 中删除路径可能会有什么变化?


更新:

我已经访问了集群并记录了发生的变化:

location ~* "^/logging-microservice" {
    rewrite "(?i)/logging-microservice" / break;
}
location ~* "^/" {
}

正在更改为

location /logging-microservice {

}
location / {
}

添加速率限制注释时。


即使给你 Ingress.yaml 和

nginx.ingress.kubernetes.io/rewrite-target: /

一切正常,您需要它

nginx.ingress.kubernetes.io/rewrite-target: "/"

另外一点是,注释的顺序很重要;

不可能:

  nginx.ingress.kubernetes.io/rewrite-target: "/"
  nginx.ingress.kubernetes.io/limit-connections: "1"
  nginx.ingress.kubernetes.io/limit-rps: "1"

应该是:

  nginx.ingress.kubernetes.io/limit-connections: "1"
  nginx.ingress.kubernetes.io/limit-rps: "1"
  nginx.ingress.kubernetes.io/rewrite-target: "/"

吸取了教训!