如果有前缀,将流量从一个应用程序(工作负载)重定向到另一个应用程序?
Redirect trafic from one app (workload) to other if there is prefix?
我有两个应用程序(工作负载):app1
和 app2
。如果存在 diona
前缀,我的目标是将流量从 app1
重定向到 app2
。例如:
app1/diona > app2/<api>
现在我有这样的规则:
rules:
- host: host
http:
paths:
- backend:
serviceName: ingress-37ce1ad1e8214375784d1e50805c056c
servicePort: 80
path: /diona
当我在 app2
的日志中检查 app1/diona
端点时出现错误:
Not Found: /diona
如何在不实现 app2
中的 diona
前缀的情况下正确重定向流量?
您可以使用 nginx ingress controller 来实现它。您的代码将如下所示
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
name: rewrite
spec:
rules:
- host: host
http:
paths:
- backend:
serviceName: ingress-37ce1ad1e8214375784d1e50805c056c
servicePort: 80
path: /diona
如果您想将 app1/diona/*
重定向到 app2/*
,请将注释更改为
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
name: rewrite
spec:
rules:
- host: host
http:
paths:
- backend:
serviceName: ingress-37ce1ad1e8214375784d1e50805c056c
servicePort: 80
path: /diona/(.*)
我有两个应用程序(工作负载):app1
和 app2
。如果存在 diona
前缀,我的目标是将流量从 app1
重定向到 app2
。例如:
app1/diona > app2/<api>
现在我有这样的规则:
rules:
- host: host
http:
paths:
- backend:
serviceName: ingress-37ce1ad1e8214375784d1e50805c056c
servicePort: 80
path: /diona
当我在 app2
的日志中检查 app1/diona
端点时出现错误:
Not Found: /diona
如何在不实现 app2
中的 diona
前缀的情况下正确重定向流量?
您可以使用 nginx ingress controller 来实现它。您的代码将如下所示
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
name: rewrite
spec:
rules:
- host: host
http:
paths:
- backend:
serviceName: ingress-37ce1ad1e8214375784d1e50805c056c
servicePort: 80
path: /diona
如果您想将 app1/diona/*
重定向到 app2/*
,请将注释更改为
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
name: rewrite
spec:
rules:
- host: host
http:
paths:
- backend:
serviceName: ingress-37ce1ad1e8214375784d1e50805c056c
servicePort: 80
path: /diona/(.*)