我有两个服务,tea
和coffee
,每个都在自己的命名空间中,我想domain.com
去tea
服务,domain.com/coffee
去coffee
。
由于每个都在命名空间中,我不得不进行两段入口,但是当我尝试应用它们时,我得到错误MAPPING Path '/coffee' already defined in another Ingress rule
。
我的两个入口如下所示:
茶:
kind: Ingress
apiVersion: extensions/v1beta1
spec:
tls:
- hosts:
- domain.com
secretName: tea-tls
rules:
- host: domain.com
http:
paths:
- path: /
backend:
serviceName: tea
servicePort: 80
和咖啡:
kind: Ingress
apiVersion: extensions/v1beta1
metadata:
name: coffee
namespace: coffee
spec:
tls:
- hosts:
- domain.com
secretName: coffee}-tls
rules:
- host: domain.com
http:
paths:
- path: /coffee
backend:
serviceName: coffee
servicePort: 80
- path: /coffee/*
backend:
serviceName: coffee
servicePort: 80
我想问题不在于喝茶和咖啡,而是在咖啡入口中两次定义coffee
路径。根据 https://kubernetes.io/docs/concepts/services-networking/ingress/#simple-fanout,我假设您只需要/coffee
路径,并且可以删除/coffee/*
路径。
根据 https://github.com/kubernetes/kubernetes/issues/17088 的说法,旅行者号入口控制器可以做到这一点。示例(取自链接(:
apiVersion: voyager.appscode.com/v1beta1
kind: Ingress
metadata:
name: test-ingress
namespace: foo
spec:
rules:
- host: foo.bar.com
http:
paths:
- backend:
serviceName: s1.bar # serviceName.Namespace
servicePort: '80'