Помещение кибаны за nginx-ingress завершается ошибкой HTTP - PullRequest
0 голосов
/ 25 октября 2019

Я развернул кибану в среде kubernetes. Если бы я дал это сервису типа LoadBalancer, я мог бы получить к нему доступ. Тем не менее, когда я пытаюсь получить доступ к нему через nginx-вход, это не удается. Конфигурация, которую я использую во входе nginx:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
  name: my-ingress
spec:
  rules:
    - http:
        paths:
          - backend:
              serviceName: kibana
              servicePort: {{ .Values.kibanaPort }}
            path: /kibana

Я запустил свою кибану со следующей настройкой:

    - name: SERVER_BASEPATH
      value: /kibana

, и я могу получить доступ к штрафу кибаны черезLoadBalancer IP. Однако, когда я пытаюсь получить доступ через Ingress, большинство вызовов проходит нормально, за исключением вызова GET на vendors.bundle.js, где он почти постоянно терпит неудачу.

Сообщения журнала во входе во время этого вызова следующие:

2019/10/25 07:31:48 [error] 430#430: *21284 upstream prematurely closed connection while sending to client, client: 10.142.0.84, server: _, request: "GET /kibana/bundles/vendors.bundle.js HTTP/2.0", upstream: "http://10.20.3.5:3000/kibana/bundles/vendors.bundle.js", host: "1.2.3.4", referrer: "https://1.2.3.4/kibana/app/kibana"
10.142.0.84 - [10.142.0.84] - - [25/Oct/2019:07:31:48 +0000] "GET /kibana/bundles/vendors.bundle.js HTTP/2.0" 200 1854133 "https://1.2.3.4/kibana/app/kibana" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36" 47 13.512 [some-service] 10.20.3.5:3000 7607326 13.513 200 506f778b25471822e62fbda2e57ccd6b

Я не уверен, почему я получаю upstream prematurely closed connection while sending to client в разных браузерах. Я попытался установить proxy-connect-timeout и proxy-read-timeout на 100 секунд, и даже тогда это не удается. Я не уверен, происходит ли это из-за какого-либо размера по умолчанию или фрагментов.

Также интересно отметить, что только некоторые вызовы кибаны сбой, и не все сбой.

Вв браузере я вижу сообщение об ошибке:

GET https://<ip>/kibana/bundles/vendors.bundle.js net::ERR_SPDY_PROTOCOL_ERROR 200

в консоли разработчика.

У любого есть идеи о том, какие параметры конфигурации мне нужно передать на мой nginx-вход, чтобы сделать kibana. proxy_pass отлично?

1 Ответ

1 голос
/ 29 октября 2019

Я нашел причину ошибки. Файл vendors.bundle.js был относительно больше, и, поскольку я получал доступ из относительно медленной сети, запросы были прерваны. Я исправил это, добавив в конфигурацию nginx-ingress следующие поля:

nginx.ingress.kubernetes.io/proxy-body-size: 10m (Change this as you need)
nginx.ingress.kubernetes.io/proxy-connect-timeout: "100"
nginx.ingress.kubernetes.io/proxy-send-timeout: "100"
nginx.ingress.kubernetes.io/proxy-read-timeout: "100"
nginx.ingress.kubernetes.io/proxy-buffering: "on"
...