问题描述
在查看链接器入口文档here时,我说我需要创建一个注释为
的入口ingress.kubernetes.io/custom-request-headers: l5d-dst-override:web-svc.emojivoto.svc.cluster.local:80
此注释专用于单个服务,这听起来好像每个服务都必须有一个新的入口及其自己的注释。例如,我无法提供以下内容:
spec:
rules:
- host: example.com
http:
paths:
- path: /path-one
backend:
serviceName: service-1
servicePort: 80
- path: /path-two
backend:
serviceName: service-2
servicePort: 80
我可以在单个入口类中定义指向不同服务的路径。
我对这些文档的阅读是否准确?还是我错过了什么?我希望避免为我在linkerd中运行的每个服务创建一个入口。
解决方法
是的,很不幸,如果您想使用ingress.kubernetes.io/custom-request-headers
,则可以正确地理解为每个服务创建单独的入口。
是的,如果您有1000个服务-您应该创建1000个入口以使其正常运行。
入口1:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: web-ingress
namespace: marcus
annotations:
kubernetes.io/ingress.class: "traefik"
ingress.kubernetes.io/custom-request-headers: l5d-dst-override:service1.marcus.svc.cluster.local:80
spec:
rules:
- host: example.com
http:
paths:
- backend:
serviceName: service1
servicePort: 80
path: /
入口2:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: web-ingress
namespace: marcus
annotations:
kubernetes.io/ingress.class: "traefik"
ingress.kubernetes.io/custom-request-headers: l5d-dst-override:service2.marcus.svc.cluster.local:80
spec:
rules:
- host: example.com
http:
paths:
- backend:
serviceName: service2
servicePort: 80
path: /
,
Traefik是一个很好的解决方案,在这种情况下,如果它可以选择在标头中动态设置服务,那就太好了。
traefik项目中有一个open issue已经开放了一段时间。在这些情况下,最新的更新是对每个服务使用一个Ingress。
这里是similar question。