首页 > 解决方案 > 在子路径上使用 Kubernetes NGINX 入口控制器公开应用程序,而不控制应用程序的基本路径

问题描述

我自己仍然无法解决这个问题,所以我什至不确定这是否可能。我无法更改我的域,因此我只能通过 Ingress 将我的应用程序部署在子路径上,而不是在子域上,并且当我能够控制应用程序的基本路径时,我能够通过使用基本路径的nginx.ingress.kubernetes.io/rewrite-target: /和的组合来部署多个应用程序,其中nginx.ingress.kubernetes.io/configuration-snippet: rewrite /<basepath>/(.*) /$1;例如 pgAdmin4 Docker 容器(提供 ENV 变量)或我自己编写的应用程序就是这种情况。

然而,一些应用程序,如 Kubernetes Dashboard、k8dash 或 Kibana,没有提供一个方便的选项来指定k8s-Deployment对象中的基本路径,我无法让它们工作。

主要问题似乎是/assets/,/js/等路径/css/

我尝试了使用重写路径的不同版本,但我认为这不会重写我的 HTML 的内容,尤其是如果它是由 Angular 等 js 框架动态生成的。

是否有一种可靠的方法可以在子路径上公开例如 Kubernetes-Dashboard 或 Kibana,以便站点上的延迟调用不会导致 404?

PS:很抱歉,如果我不能以一种容易回答问题的方式来表达我的问题,所以如果仍然存在任何人的一些不一致或未知数,我想立即将其纳入这个问题。非常感谢您提前。

PPS:我已经尝试了100个google搜索结果和我找到的stackoverflow解决方案,但仍然无法管理,所以我的搜索技能很差,没有解决方案或者很难实施。其中一个虽然解决了与 nginx 本身相关的类似问题,但它也没有帮助

标签: kubernetesnginx-ingresskubernetes-dashboard

解决方案


我也遇到了这个问题,我找不到解决办法。例如,如果应用程序的网页从 /assets/* 中导入您提到的资产,并且没有配置前缀以使其成为 /app_prefix/assets/*,我看不出这怎么可能。您需要该前缀才能确定应将请求路由到哪个应用程序。


推荐阅读