我正在使用kubernetes
作为我的Ingress控制器转移到traefik
。
我有一个应该响应3000多个网站的后端。根据主机的不同,我需要在代理将代码传递给后端之前为请求添加自定义标头。
我可以使用ingress.kubernetes.io/custom-request-headers
注释为请求添加自定义标头,但它是整个Ingress的注释,因此我需要创建3000+ Ingress,每个网站一个。
还有其他办法吗?创建3000+ Ingress与创建一个具有3000+规则的Ingress是一回事吗?
答案 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 snipper
。 Here是使用它为每个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。