当我点击 xyz.abc.com/login 时,它应该进入测试服务,当我点击 URL xyz.abc.com/(anything) 时,它应该进入 test1 服务,但目前,当我点击 xyz.abc.com 时/login 它不会去那里,而是去 test1 service random.com/login,所以去 NLB 中的基于路径的路由 那么如何实现这个场景 有人可以帮忙吗?
kind: Ingress
apiVersion: extensions/v1beta1
metadata:
name: test
namespace: test
labels:
app.kubernetes.io/managed-by: Helm
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
kubernetes.io/ingress.class: internet-facing-ingress
nginx.ingress.kubernetes.io/rewrite-target: /
nginx.ingress.kubernetes.io/server-snippet: >
rewrite /login(.*) /v2/login/ break; rewrite / / break;
rewrite /integration/customer(.*) /v1/integration/customer$1; break;
rewrite /admin/customer(.*) /v2/admin/customer$1; break;
rewrite /admin/abc1(.*) /v2/admin/abc1$1;
break;
spec:
tls:
- hosts:
- xyz.abc.com
secretName: serverv1-tls
rules:
- host: xyz.abc.com
http:
paths:
- path: /login
backend:
serviceName: test
servicePort: 80
- path: /
backend:
serviceName: test1
servicePort: 80
外部服务:
kind: Service
apiVersion: v1
metadata:
name: test1
namespace: test1
spec:
type: ExternalName
sessionAffinity: None
externalName: random.com
status:
loadBalancer: {}
答案 0 :(得分:1)
在路径中尝试最后添加 /login/
/
rules:
- host: xyz.abc.com
http:
paths:
- path: /login/
backend:
serviceName: test
servicePort: 80
- path: /
backend:
serviceName: test1
servicePort: 80
最简单的方法是尽可能分离入口。