这是我的情况,我在 kubernetes(入口)上,有两个 docker 镜像:一个专用于 Web,第二个专用于 api。
在下一个配置下(在消息末尾):/web
将显示将进行一些调用的前端/api
, 那里一切都好.
but /
是 404,因为没有定义任何内容,我找不到一种方法来告诉入口配置/
应该重定向到/web
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: dev-ingress
annotations:
kubernetes.io/tls-acme: "true"
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
tls:
- hosts:
- demo.com
secretName: tls-secret
rules:
- host: demo.com
http:
paths:
- path: /api
backend:
serviceName: api-app
servicePort: 8080
- path: /web
backend:
serviceName: web-app
servicePort: 80
这取决于您的前端和后端应用程序对路径的期望。一般情况下,前端会需要能够在某个外部路径上找到后端 https://stackoverflow.com/questions/53148660/communication-from-pod-to-pod-on-same-node-inside-kubernetes-in-gcp在你的情况下,听起来你的后端需要在外部的不同路径上可用(/api
)来自它在集群内的工作(/
)。您可以重写 api 请求的目标,以便/api
将会去/
当请求路由到后端时:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: dev-ingress-backend
annotations:
kubernetes.io/tls-acme: "true"
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
tls:
- hosts:
- demo.com
secretName: tls-secret
rules:
- host: demo.com
http:
paths:
- path: /api
backend:
serviceName: api-app
servicePort: 8080
并且您还可以为前端定义一个单独的入口(使用不同的名称),该入口不会重写目标,以便请求/web
将会去/web
for it:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: dev-ingress-frontend
annotations:
kubernetes.io/tls-acme: "true"
spec:
tls:
- hosts:
- demo.com
secretName: tls-secret
rules:
- host: demo.com
http:
paths:
- path: /web
backend:
serviceName: web-app
servicePort: 80
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)