K8S - Ingress - Route 2 不同的应用
K8S - Ingress - Route 2 different applications
在我的 minikube k8s 集群中,我有 2 个 applications/services。
这是我拥有的服务的入口控制器。
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)
的 none 被加载,因为它们似乎从 mysite.com
而不是 mysite.com/sva/
请求资源
如何让它寻找特定服务下的资源?
尝试在ingress中添加如下注解
ingress.kubernetes.io/add-base-url: "true"
将解决这个问题。
您还可以评论:https://github.com/kubernetes/ingress-nginx/issues/333
根据 Harsh Manvar 的回答,目前看来重写对静态资源不起作用。
这是我计划遵循的解决方法,用于路由 sva.mysite.com
或 svb.mysite.com
等 diff 应用程序。它工作正常。如果有人遇到类似问题,只需将其添加为答案即可。
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
在我的 minikube k8s 集群中,我有 2 个 applications/services。
这是我拥有的服务的入口控制器。
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)
的 none 被加载,因为它们似乎从 mysite.com
而不是 mysite.com/sva/
如何让它寻找特定服务下的资源?
尝试在ingress中添加如下注解
ingress.kubernetes.io/add-base-url: "true"
将解决这个问题。
您还可以评论:https://github.com/kubernetes/ingress-nginx/issues/333
根据 Harsh Manvar 的回答,目前看来重写对静态资源不起作用。
这是我计划遵循的解决方法,用于路由 sva.mysite.com
或 svb.mysite.com
等 diff 应用程序。它工作正常。如果有人遇到类似问题,只需将其添加为答案即可。
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