在我的minikube k8s集群中,我有2个应用程序/服务。
这是我拥有的服务的入口控制器。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-tutorial
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
backend:
serviceName: default-http-backend
servicePort: 80
rules:
- host: mysite.com
http:
paths:
- path: /sva
backend:
serviceName: app-a
servicePort: 8080
- path: /svb
backend:
serviceName: app-b
servicePort: 8150
当我键入mysite.com/sva
或mysite.com/svb
时,它会路由到适当的服务。但是,没有加载任何静态文件(js, css, images etc)
,因为它们似乎从mysite.com
而不是mysite.com/sva/
如何让它在特定服务下查找资源?
答案 0 :(得分:2)
尝试在入口中添加以下注释
ingress.kubernetes.io/add-base-url:“ true”
将解决此问题。
您还可以查看:https://github.com/kubernetes/ingress-nginx/issues/333
答案 1 :(得分:1)
基于苛刻的Manvar答案,到目前为止,重写似乎无法在静态资源上进行。
这是我计划遵循的变通办法,用于路由差异应用程序,例如sva.mysite.com
或svb.mysite.com
。工作正常。如果有人遇到类似的问题,只需将其添加为答案。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-tutorial
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
backend:
serviceName: default-http-backend
servicePort: 80
rules:
- host: sva.mysite.com
http:
paths:
- path: /
backend:
serviceName: app-a
servicePort: 8080
- host: svb.mysite.com
http:
paths:
- path: /
backend:
serviceName: app-b
servicePort: 8150