Рейтинг:1

Добавление уникального заголовка запроса к сотням Ingress с помощью Traefik 2

флаг ru

мы (наконец) переходим с Traefik 1 на 2. Мы запускаем более 400 приложений на GKE. Наша единственная оставшаяся задача заключается в следующем:

В Traefik 1 мы устанавливаем аннотацию для входа каждого приложения, которая добавляет заголовок к запросу к серверной части. Значение этого заголовка уникально для каждого Ingress. Вот пример со значением . Каждое приложение имеет другое значение в своем Ingress.:

---
Версия API: networking.k8s.io/v1
вид: Вход
метаданные:
  имя: тестап
  пространство имен: тест
  аннотации:
    ingress.kubernetes.io/custom-request-headers: X-Backend-Hint:<имя приложения>
спецификация:
...

Traefik 2 больше не поддерживает этот заголовок. Похоже, что единственный способ добавить такой заголовок запроса в каждое приложение — создать уникальное промежуточное ПО customRequestHeaders для каждого уникального значения, а затем добавить это промежуточное ПО в соответствующий Ingress. Вот так:

---
apiVersion: traefik.containo.us/v1alpha1
вид: ПО промежуточного слоя
метаданные:
  имя: бэкэнд-подсказка-заголовок
  пространство имен: тест
спецификация:
  заголовки:
    пользовательские заголовки запроса:
      X-Backend-Hint: <имя приложения>
---
Версия API: networking.k8s.io/v1
вид: Вход
метаданные:
  имя: тестап
  пространство имен: тест
  аннотации:
    traefik.ingress.kubernetes.io/router.middlewares: test-backend-hint-header@kubernetescrd
спецификация:
...

Автоматизировать это, конечно, можно, но это означает развертывание более 400 почти идентичных промежуточных программ. Не создаст ли это проблем для Traefik?

Это действительно лучший способ? Или мы можем каким-то образом использовать одно промежуточное ПО с переменной, переданной через аннотацию Ingress? Может еще что-то, о чем я не подумал?

На данный момент из-за совместимости с другими инструментами, которые ссылаются на Ingress, такими как cert-manager и external-dns, мы пока не можем использовать CRD IngressRoute, но должны использовать классический Ingress.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.