【发布时间】:2021-02-09 10:21:58
【问题描述】:
我们有几个namespaces,每个都包含我们产品的一个实例,该实例在Windows pod 上的IIS 上运行。我们不想将此 pod 暴露在互联网上,因此希望在同一 vnet 上启用堡垒 VM 以通过 NGINX 入口控制器访问它们。
此入口控制器已设置并正在工作,但我们遇到了一些问题。我们的目标是能够基于路径在应用程序实例之间进行路由,例如nginxIP/instance1 路由到 1 个实例,nginxIP/instance2 路由到第二个实例。
以下是我们目前在解决方案中使用的示例 ingress yaml file:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: instance1-ingress
namespace: instance1
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/ssl-redirect: "false"
nginx.ingress.kubernetes.io/use-regex: "true"
nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
rules:
- http:
paths:
- path: /instance1(/|$)(.*)
backend:
serviceName: service
servicePort: 80
这已成功重定向到应用程序的根目录,但是应用程序加载 css、图像和其他脚本时存在很多问题。重写规则似乎没有正确处理这个问题,但是在尝试了几种不同的路径配置、重写目标以及测试 app-root 注释之后,我不知所措。
这里要注意的另一件事是,可以观察到不同的behaviour,具体取决于是否使用尾部斜杠。例如,当您使用斜线但不是没有时,主页上的这张图片可以正常工作:
http://10.240.10.10/instance1/
作品 - http://10.240.10.10/instance1/b3c7ad64-a4e1-4c32-a616-6153ff535a83.adapter
不起作用 - http://10.240.10.10/b3c7ad64-a4e1-4c32-a616-6153ff535a83.adapter
我希望能提供一些线索来解决这里可能存在的问题,但经过一段时间的调查,我现在有点茫然
【问题讨论】:
-
如果我理解得很好,您是否希望将
http://my_ip/instance1重定向到http://my_ip/但在instance1 应用程序中,instance2...等也是如此。我的意思是,你想重定向到正确的实例,但你想从 url 中省略instance1,对吗?
标签: nginx iis kubernetes azure-aks