Служба внешних имен Kubernetes добавляет заголовки - PullRequest
0 голосов
/ 05 декабря 2018

TLDR: я использую кластер kubernetes, используя AKS.Я создал службу внешних имен для прокси на внешний адрес.Я хотел бы добавить заголовок «Host» к запросу.Как мне это сделать?

Для большего контекста у меня есть входной контроллер, который обрабатывает весь входящий трафик.Я хочу направить подмножество этого трафика (на основе маршрута) во внешнюю функцию Azure.Я настроил службу ExternalName с именем хоста моей функции Azure и перенаправляю трафик на нее.Однако из-за способа, которым Microsoft обрабатывает маршрутизацию к своим функциям, в заголовке требуется значение «Host» с правильным полным доменным именем.

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

Вот мой служебный файл:

kind: Service
apiVersion: v1
metadata:
  name: azure-function-proxy-service
  labels:
    app: proxy-service
spec:
  type: ExternalName
  externalName: azure-function.azurewebsites.net

и соответствующий код правил входа:

- host: hostto.proxy.net
http:
  paths:
  - path: /route/to/proxy
    backend:
      serviceName: azure-function-proxy-service
      servicePort: 80

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

Я обнаружил, что я действительно хотел изменить заголовок запроса, когда он проходит через мой входной контроллер.Лучший вариант, который я нашел для этого, был nginx.ingress.kubernetes.io/configuration-snippet, но он не давал мне точный контроль, который я хотел.

В конечном счете мне пришлось поднять дополнительный экземпляр nginx для прокси-запросов, чтобы я могиметь полный контроль над конфигурацией nginx.

0 голосов
/ 06 декабря 2018

Я думаю, что вы можете использовать Canary в ingress-nginx.Если вы добавите аннотацию nginx.ingress.kubernetes.io/canary: "true", вы сможете использовать следующие правила

  • nginx.ingress.kubernetes.io/canary-by-header: заголовок, используемый для уведомления Ingress о маршрутизации запроса к услугеуказано в Канарских Ingress.Когда заголовок запроса установлен на always, он будет направлен на канарейку.Когда заголовок установлен на never, он никогда не будет направлен на канарейку.Для любого другого значения заголовок будет игнорироваться, а запрос сравнивается с другими канарскими правилами по приоритету.

  • nginx.ingress.kubernetes.io/canary-by-cookie: файл cookie, используемый для уведомления Ingress о маршрутизации запросана услугу, указанную в Canary Ingress.Когда значение cookie установлено на always, оно будет перенаправлено на канарейку.Если для cookie установлено значение never, оно никогда не будет направлено на канарейку.При любом другом значении файл cookie будет передан, и запрос будет сопоставлен с другими канарскими правилами по приоритету.

  • nginx.ingress.kubernetes.io/canary-weight: процент случайных запросов на основе целых чисел (0–100)это должно быть направлено на службу, указанную в канарейке Ingress.Вес 0 означает, что по этому канарскому правилу запросы на вход на Канарские острова не будут отправляться.Вес 100 означает, что все запросы будут отправлены альтернативной службе, указанной в Ingress.

Вы также можете прочитать эту статью развертывание канареек с помощью ingress-nginx, который объясняет, как использовать canary-weight и canary-by-header.

...