使用Traefik在Kubernetes入口上根据规则添加自定义标头

使用Traefik在Kubernetes入口上根据规则添加自定义标头,kubernetes,traefik,Kubernetes,Traefik,我将使用traefik作为入口控制器移动到kubernetes 我有一个单一的后端,应该响应3000多个网站。根据主机的不同,我需要在代理将请求传递到后端之前向请求添加一个自定义头 我可以使用ingres.kubernetes.io/custom request headers注释向请求添加自定义头,但它是整个入口的注释,因此我需要创建3000多个入口,每个网站一个 还有别的办法吗?创建3000多个入口与使用3000多个规则创建一个入口是一样的?是的,如果希望主机上有不同的头,则需要为每个主机创

我将使用
traefik
作为入口控制器移动到
kubernetes

我有一个单一的后端,应该响应3000多个网站。根据主机的不同,我需要在代理将请求传递到后端之前向请求添加一个自定义头

我可以使用
ingres.kubernetes.io/custom request headers
注释向请求添加自定义头,但它是整个入口的注释,因此我需要创建3000多个入口,每个网站一个


还有别的办法吗?创建3000多个入口与使用3000多个规则创建一个入口是一样的?

是的,如果希望主机上有不同的头,则需要为每个主机创建一个入口对象

您可以通过Traefik实现:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: traeffic-custom-request-header
  annotations:
    ingress.kubernetes.io/custom-request-headers: "mycustomheader: myheadervalue"
spec:
  rules:
  - host: custom.configuration.com
    http:
      paths:
      - backend:
          serviceName: http-svc
          servicePort: 80
        path: /
同样,您也可以通过Ingress Controller执行相同的操作

它支持
配置snipper
。是使用它为每个入口对象设置自定义标头的示例:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: nginx-configuration-snippet
  annotations:
    nginx.ingress.kubernetes.io/configuration-snippet: |
      more_set_headers "Request-Id: $request_id";
spec:
  rules:
  - host: custom.configuration.com
    http:
      paths:
      - backend:
          serviceName: http-svc
          servicePort: 80
        path: /

顺便说一句,您可以在集群上使用多个不同的入口控制器,因此它不需要将所有内容都迁移到一种入口类型。

在您的示例中,您为所有规则设置了相同的头,对吗?我需要的是为每个规则设置不同的自定义标题。我认为我做不到这一点,因为我无法在rules对象内部进行注释。也就是说,我唯一的选择是为每个主机创建一个入口(每个入口使用一个主机规则)。我已经创建了3000多个入口,每个入口都有一个规则,traefik作为控制器,并且它正在工作,所以我现在还可以,但我担心,因为我不知道创建这么多入口是否会是一个问题。是的,你是对的。出于某种原因,我在您的问题中阅读了Ingress作为Ingress Controller:(我将更新答案。