Добавление уникального заголовка запроса к сотням входов с помощью Traefik 2
мы (наконец-то) переходим с Traefik 1 на 2. Мы запускаем более 400 приложений на GKE. Наша единственная оставшаяся задача заключается в следующем:
В Traefik 1 мы устанавливаем аннотацию для входа каждого приложения, которая добавляет заголовок к запросу на серверную часть. Значение этого заголовка уникально для каждого входа. Вот пример со значением . Каждое приложение имеет другое значение в Ingress.:
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: testapp
namespace: test
annotations:
ingress.kubernetes.io/custom-request-headers: X-Backend-Hint:<appname>
spec:
...
Traefik 2 больше не поддерживает этот заголовок. Кажется, что единственный способ добавить такой заголовок запроса в каждое приложение — это создать уникальное промежуточное программное обеспечение customRequestHeaders для каждого уникального значения, а затем добавить это промежуточное программное обеспечение к соответствующему Ingress. Вот так:
---
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
name: backend-hint-header
namespace: test
spec:
headers:
customRequestHeaders:
X-Backend-Hint: <appname>
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: testapp
namespace: test
annotations:
traefik.ingress.kubernetes.io/router.middlewares: test-backend-hint-header@kubernetescrd
spec:
...
Автоматизировать это, конечно, возможно, но это означает развертывание более 400 практически идентичных промежуточных программ. Не вызовет ли это проблем для Traefik?
Действительно ли это лучший способ? Или мы можем каким-то образом использовать одно промежуточное программное обеспечение с переменной, передаваемой через аннотацию Ingress? Может быть, я еще что-то не подумал?
На данный момент, из-за совместимости с другими инструментами, ссылающимися на Ingress, такими как cert-manager и external-dns, мы пока не можем использовать CRD IngressRoute, а должны использовать классический Ingress.