我有一个像 http://localhost:8000/ps/app/ui/?pid=201 这样的 url 上运行的容器。该容器部署在 kubernetes 上,并以"ps-app-ui:8000"的形式向服务公开 我想创建一个可以从外部访问的入口。入口模板如下所示:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ps-ingress
spec:
rules:
- http:
paths:
- path: /myapp/
backend:
serviceName: ps-app-ui
servicePort: 8000
问题是它不适用于此入口。我也尝试添加"ingress.kubernetes.io/rewrite-target:/"但没有成功。谁能帮我通过"http://INGRESS-IP/myapp/ps/app/ui/?pid=201"访问我的应用程序
将不胜感激。
入口版本 0.22.0 或更高版本改变了重写目标的工作方式。 您需要正则表达式匹配路径并将其添加到重写目标。
nginx.ingress.kubernetes.io/rewrite-target: /$2
...
...
rules:
- host: rewrite.bar.com
http:
paths:
- backend:
serviceName: http-svc
servicePort: 80
path: /something(/|$)(.*)
请参阅此处的更新日志。 如何在这里发表文章
我在想
- path: /myapp/
在http://myapp/myapp/
匹配你的应用
所以如果我有一个定义:
- host: app.example.com
http:
paths:
- path: /myapp
这将是http://app.example.com/myapp
如果你想使用http://myapp/ps/app/ui/?pid=201
你需要:
- 确保您的操作系统
myapp
转换为入口控制器正在侦听的 IP 地址 - 将
host
myapp
添加到入口 - 您可以将路径留空(假设您的应用程序正在处理完整的
/ps/app/ui/?pid=201
路径(
这导致
rules:
- host: myapp
http:
paths:
- backend:
serviceName: ps-app-ui
servicePort: 8000
此入口会将所有流量转发到主机myapp
服务转发