Можно ли переписать заголовок HOST в контроллере входа k8s? - PullRequest
0 голосов
/ 11 февраля 2019

В связи с тем, что некоторые унаследованные приложения для правильной работы полагаются на заголовок узла, мне нужен Ingress (прокси и т. Д.), Способный переписать заголовок узла и передать его в нисходящий поток (бэкэнд).Есть ли какой-нибудь Ingress Controller, который поддерживает эту функцию?

Пример:

Конечный пользователь получает доступ к нашему веб-сайту через foo.com/a для бэкэнда a и foo.com/b для бэкэнда b.Но поскольку a и b являются устаревшими приложениями, оно принимает только:

  • a принимает соединение, когда Host: a.foo.com
  • b принимает соединение, когда Host: b.foo.com

Ответы [ 4 ]

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

Это можно сделать с помощью этой аннотации: nginx.ingress.kubernetes.io/upstream-vhost: host.example.com

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

Я не уверен, сможете ли вы найти соответствующую аннотацию в NGINX Ingress Controller для модификации заголовка хоста, чтобы она также соответствовала вашим требованиям.Тем не менее, вы можете рассмотреть возможность использования nginx.ingress.kubernetes.io/configuration-snippet аннотации для добавления фрагмента конфигурации в блок местоположения внутри nginx.conf конкретного модуля контроллера Nginx:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/configuration-snippet: |
      proxy_set_header Host www.example-host.com;
  name: my-app
spec:
  rules:
  - host: my-app.example.com
    http:
      paths:
      - backend:
        path: /app
          serviceName: my-app
          servicePort: http

Мы установили здесь Hostзаголовок www.example-host.com для целевого URL my-app.example.com.

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

Я хочу добавить мои выводы к этому моему вопросу.

Хотя мое решение не использует Ingress Controller k8s, наш кластер использует Istio, и Istio VirtualService поддерживает перезапись uri и authority (Заголовок хоста), как описано в этой ссылке: https://istio.io/docs/reference/config/istio.networking.v1alpha3/#HTTPRewrite

Чтобы узнать, как реализовать это в моем случае, вы можете взглянуть по этой ссылке: https://github.com/istio/istio/issues/11668

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

вы можете использовать контроллер ingress nginx на kubernetes и установить head, а также transer для бэкенда и управления подключением сервисов от объектов входа.

здесь - ссылка для общего доступа для перезаписи цели из заголовка.

https://kubernetes.github.io/ingress-nginx/examples/rewrite/

ingress nginx также будет хорош с ssl cert manager, вы можете добавить его.

управлять другими вещами, используя аннотации входа.

проверить это для настройки входа SSl, вы можете изменить его и согласно вашимнужно

https://www.digitalocean.com/community/tutorials/how-to-set-up-an-nginx-ingress-with-cert-manager-on-digitalocean-kubernetes

вход будет, как наконец

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  tls:
  - hosts:
    - myapp.abc.com
    secretName: ingress-tls
  rules:
  - host: myapp.abc.com
    http:
      paths:
      - path: /my-service
        backend:
          serviceName: my-backend
          servicePort: 80
...