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: "/"
吸取了教训!
我有一个 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: "/"
吸取了教训!