K8S-入口-路线2的不同应用

时间:2019-03-05 03:04:09

标签: nginx kubernetes kubernetes-ingress

在我的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/svamysite.com/svb时,它会路由到适当的服务。但是,没有加载任何静态文件(js, css, images etc),因为它们似乎从mysite.com而不是mysite.com/sva/

请求资源

如何让它在特定服务下查找资源?

2 个答案:

答案 0 :(得分:2)

尝试在入口中添加以下注释

  

ingress.kubernetes.io/add-base-url:“ true”

将解决此问题。

您还可以查看:https://github.com/kubernetes/ingress-nginx/issues/333

答案 1 :(得分:1)

基于苛刻的Manvar答案,到目前为止,重写似乎无法在静态资源上进行。

这是我计划遵循的变通办法,用于路由差异应用程序,例如sva.mysite.comsvb.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
相关问题