kubernetes - 在子路径上使用 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 本身相关的类似问题,但它也没有帮助
解决方案
我也遇到了这个问题,我找不到解决办法。例如,如果应用程序的网页从 /assets/* 中导入您提到的资产,并且没有配置前缀以使其成为 /app_prefix/assets/*,我看不出这怎么可能。您需要该前缀才能确定应将请求路由到哪个应用程序。
推荐阅读
- c# - 我将如何使用 C# 反序列化分组的 JSON 数据
- asp.net - 实体框架核心,如果已经存在如何更新,否则插入
- reactjs - React 中的路由器切换
- javascript - 如何在 WordPress 环境中导入 ES6 风格的模块?
- android - 在framework7中阻止/拒绝屏幕截图
- java - 如何修复 java.lang.module.findexception 和 java.lang.IllegalArgumentException
- android - 有没有办法从对话框访问画廊?
- git - 在多个存储库中保持相同的提交历史
- javascript - 与加/分钟按钮一起使用时,innerHTML 不起作用
- typescript - TS2306 不是打字稿文件上的模块错误