Kuberentes Ingress скорость lmiting изменение базы перезаписи-цели - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть 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, и оно работает, как и ожидалось.Что может быть изменением для удаления пути из URL-адреса, который передается в бэкэнд API верхнего уровня?


Обновление:

Я получил доступ к кластеру и записал происходящие изменения:

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

меняется на

location /logging-microservice {

}
location / {
}

при добавлении аннотаций, ограничивающих скорость.


1 Ответ

0 голосов
/ 08 февраля 2019

Даже если вам дали 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: "/"

выучил трудный путь!

...