3

我有一个在 url 上运行的容器,例如http://localhost:8000/ps/app/ui/?pid=201。该容器部署在 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 ”访问我的应用程序

将不胜感激。

4

3 回答 3

1

Ingress 0.22.0 或更高版本改变了 rewrite-target 的工作方式。您需要对路径进行正则表达式匹配并将其添加到重写目标。

nginx.ingress.kubernetes.io/rewrite-target: /$2
...
...
  rules:
  - host: rewrite.bar.com
    http:
      paths:
      - backend:
          serviceName: http-svc
          servicePort: 80
        path: /something(/|$)(.*)

请参阅此处的更改日志。如何在这里写文章

于 2019-05-09T15:57:33.697 回答
0

我在想

- path: /myapp/

与您的应用相匹配http://myapp/myapp/

所以,如果我有一个定义:

  - host: app.example.com
    http:
      paths:
      - path: /myapp

这将是http://app.example.com/myapp

于 2017-07-20T04:37:37.660 回答
0

如果你想使用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到您的服务

于 2017-07-21T14:39:22.373 回答