使用Traefik在Kubernetes Ingress上为每个规则添加自定义标头

时间:2018-03-19 14:29:56

标签: kubernetes traefik

我正在使用kubernetes作为我的Ingress控制器转移到traefik

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

我可以使用ingress.kubernetes.io/custom-request-headers注释为请求添加自定义标头,但它是整个Ingress的注释,因此我需要创建3000+ Ingress,每个网站一个。

还有其他办法吗?创建3000+ Ingress与创建一个具有3000+规则的Ingress是一回事吗?

1 个答案:

答案 0 :(得分:3)

是的,你需要为每个主机创建一个Ingress对象,如果你想让她的主机有不同的标题。

你可以通过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: /

此外,您可以通过Nginx Ingress Controller执行相同的操作。

它支持configuration snipperHere是使用它为每个Ingress对象设置自定义标头的示例:

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: /
顺便说一句,您可以在群集上使用多个不同的入口控制器,因此不需要将所有内容迁移到只有一种类型的Ingress。