Kubernetes Ingress требуется настройка обратного прокси - PullRequest
0 голосов
/ 24 мая 2019

В моем кластере Kubernetes у меня есть некоторые проблемы с Ingress. В качестве примера я установил NodeRed и вход Nginx через Helm. NodeRed доступен через

Теперь я создал Ingress:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: nr-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  tls:
  - secretName: tls-secret1
    hosts:
    - my.server.name
  rules:
  - host: my.server.name
    http:
      paths:
      - path: /nr
        backend:
          serviceName: my-nodered-node-red
          servicePort: 1880

Когда я делаю Get http://my.server.name/nr, я вижу только работающие части, см. Скриншот:

enter image description here

Мне кажется, что я пропустил настройки обратного прокси. Обычно я помещаю эти вещи в настройку обратного прокси в nginx, как это. Но это невозможно, потому что я использую Nginx-ingress.

location / {
     proxy_pass http://localhost:1880/;
    }

Но я не знаю, как это сделать в Кубернетесе? Что я скучаю? kubernetes версия 1.14.1.

Ответы [ 2 ]

0 голосов
/ 12 июня 2019

Я не использовал его, поэтому не уверен, поможет ли это, но вы можете попробовать добавить аннотацию для Перенаправление прокси .

С аннотациями nginx.ingress.kubernetes.io/proxy-redirect-from и nginx.ingress.kubernetes.io/proxy-redirect-to можно задать текст, который должен быть изменен в полях заголовка Location и Refresh отклика прокси-сервера

Установка в аннотации «off» или «default» nginx.ingress.kubernetes.io/proxy-redirect-from отключает nginx.ingress.kubernetes.io/proxy-redirect-to, в противном случае обе аннотации должны использоваться в унисон. Обратите внимание, что каждая аннотация должна быть строкой без пробелов.

По умолчанию значение каждой аннотации отключено.

Также вы можете использовать ConfigMap для настройки конфигурации Nginx.

kind: ConfigMap
apiVersion: v1
metadata:
  name: nginx-configuration
  namespace: ingress-nginx
  labels:
    app: ingress-nginx
data:

  http-snippet: |
      location = / {       
        proxy_pass http://localhost:1880/;
      }

Или server-snippets аннотация для вашего Ingress:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: nr-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
    nginx.ingress.kubernetes.io/server-snippet: |
      location = / {       
        proxy_pass http://localhost:1880/;
      }
spec:
  tls:
  - secretName: tls-secret1
    hosts:
    - my.server.name
  rules:
  - host: my.server.name
    http:
      paths:
      - path: /nr
        backend:
          serviceName: my-nodered-node-red
          servicePort: 1880

Надеюсь, это поможет.

0 голосов
/ 24 мая 2019

Похоже, что ваш статический контент все еще использует префикс корневого пути, вы можете проверить это с помощью консоли разработчика браузера.Обычные приложения должны иметь конфигурацию, чтобы понимать, что они работают с префиксом пути без полномочий root.Вы должны найти эту опцию конфигурации в своем приложении и правильно ее настроить.Nginx ingress не имеет ничего общего с этой ошибкой.

...