Kubernetes Ingress Controller перенаправляет на основной путь входа, не содержит входной порт или путь службы для указанной службы.

Я пытаюсь использовать контроллер входящего трафика в k8s для доступа к моим веб-серверам, работающим в кластере. Я тестирую входящие ресурсы маршрутизации на основе пути и тестирую, обращаясь к рабочему IP-адресу (поскольку вход использует службу порта узла, доступную через любой из рабочих узлов).

Когда я получаю доступ к другим тестовым веб-приложениям (без страницы входа), я могу получить доступ к своей службе следующим образом: http: // {worker-ip}: {ingress-node-port} / {svc-name}

Когда я пытаюсь получить доступ к приложению, имеющему страницу входа, я перенаправляюсь к следующему после ввода вышеуказанного: http: // {worker-ip} / vui / login

Это, очевидно, не перенаправляет меня на правильную страницу входа, и на экране отображается сообщение об ошибке. Есть ли способ сохранить путь и имя порта на протяжении всего этого процесса, чтобы путь / vui / login отправлялся с правильным именем службы и номером порта? Если я введу весь путь напрямую, я все равно не смогу получить доступ к службе. Я думаю, что, поскольку путь изменен на правильную страницу входа, но фактически не может получить доступ к службе, перенаправление работает до определенной точки, а затем выходит из строя после изменения URL-адреса, чтобы не использовать путь и имя службы.

Мы будем очень благодарны за любые советы по входящему трафику, маршрутизации на основе пути и их использованию с перенаправлением страницы входа.

Ниже приведено определение входящего трафика, которое я использую в своем тестировании:

apiVersion: extensions/v1beta1
kind: Ingress 
metadata: 
  name: test-ingress 
  annotations: ingress.kubernetes.io/rewrite-target: / 
spec: 
  rules: 
  - http: 
      paths: 
      - path: /test1 
      backend: 
        serviceName: test1-service 
        servicePort: 5678 
      - path: /test2 
      backend: 
        serviceName: test2-service 
        servicePort: 5678 
      - path: /test3 
      backend: 
        serviceName: test3-service 
        servicePort: 8080

person maxman722    schedule 24.12.2019    source источник
comment
пожалуйста, поделитесь входящим XML-файлом   -  person dassum    schedule 24.12.2019
comment
Первая и вторая службы доступны через вход, но это разные приложения, и у них нет страницы входа (они являются примерами эхо-веб-серверов, отображающих тестовое сообщение). Третий перенаправляет на страницу входа и теряет изначально введенный URL.   -  person maxman722    schedule 26.12.2019
comment
Отредактируйте свой вопрос и вставьте свое определение yaml туда, а не в комментарий, чтобы его можно было правильно отформатировать. Нажмите Ctrl + K после выделения текста, который необходимо отформатировать.   -  person mario    schedule 27.12.2019
comment
Я добавил к вопросу определение входящего трафика. Как я уже упоминал, у меня вход работает с несколькими тестовыми сервисами, но тот, который требует перенаправления на страницу входа, вызывает у меня проблемы. Спасибо @mario   -  person maxman722    schedule 31.12.2019


Ответы (1)


В вашем случае вы можете использовать параметр URL next. Например, вы вводите

https://example.com/test3

Это перенаправит вас на страницу входа, если я правильно понял вашу проблему. Затем URL-адрес становится URL-адресом страницы входа -

https://example.com/vui/login

В этом случае исходный URL-адрес не сохраняется.

Итак, я думаю, вы можете использовать параметр next в своем URL-адресе и перенаправить маршрут на этот URL-адрес после аутентификации пользователя. URL будет -

https://example.com/vui/login?next=/test3/

Затем вы можете развернуть свой ресурс k8s Ingress с аннотацией query-routing -

ingress.kubernetes.io/query-routing: default/query-routing

и добавьте ConfigMap, откуда будут применяться параметры URL -

kind:ConfigMap
apiVersion: v1
metadata:
  name: query-routing
data:
  mapping: |-
   [{
    "field": "login",
    "value": "1",
    "path": "/test3",
    "service": "test3-service ",
    "port": "8080"
   }]
person Shahed Mehbub    schedule 31.12.2019