我是否必须使用 Linkerd 为每个服务定义一个入口?
Do I have to define an ingress per service with Linkerd?
查看 linkerd ingress 文档 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
我可以在单个入口中定义不同服务的路径 class。
我对这些文档的阅读准确吗?还是我错过了什么?我希望避免为我在 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 是一个很好的解决方案,在这种情况下,如果它可以选择在 header.
中动态设置服务,那就太好了
在开了一段时间的traefik项目中有一个关于这个的open issue。最后的更新是在这些场景中为每个服务使用一个 Ingress。
这里是similar question。
查看 linkerd ingress 文档 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
我可以在单个入口中定义不同服务的路径 class。
我对这些文档的阅读准确吗?还是我错过了什么?我希望避免为我在 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 是一个很好的解决方案,在这种情况下,如果它可以选择在 header.
中动态设置服务,那就太好了在开了一段时间的traefik项目中有一个关于这个的open issue。最后的更新是在这些场景中为每个服务使用一个 Ingress。
这里是similar question。