【发布时间】:2019-06-22 02:13:36
【问题描述】:
我正在尝试在 Kubernetes 中使用 Traefik 入口控制器提供的基于路径的路由机制,但我在 url 重写时遇到了一些问题。
我的[更新]配置如下
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: traefik
traefik.ingress.kubernetes.io/auth-type: "basic"
traefik.ingress.kubernetes.io/auth-tls-insecure: "true"
traefik.ingress.kubernetes.io/frontend-entry-points: "http,https"
traefik.ingress.kubernetes.io/app-root: "/"
traefik.ingress.kubernetes.io/rule-type: "PathPrefixStrip"
traefik.ingress.kubernetes.io/rewrite-target: "/"
name: webapp-ingress
namespace: my-company
spec:
rules:
- host: local-ubuntu
- http:
paths:
- path: /
backend:
serviceName: webapp
servicePort: 80
- path: /db
backend:
serviceName: db-manager
servicePort: 8081
当我查看 db-manager (kubernetes) 服务的日志时,流量被路由到正确的服务,但 URL 仍以 /db 为前缀。 我对 PathPrefixStrip 的期望是,流量将在没有 /db 前缀的情况下路由到运行 db-manager 微服务的容器,该容器在后端侦听 / (http://db-manager:8081)。
我错过了什么吗? traefik 支持还是只有 nginx 支持? 提前感谢您的反馈。
[编辑]
更具体地说,我通过下面讨论的当前注释观察以下内容
- traefik.ingress.kubernetes.io/rule-type: "PathPrefixStrip"
- traefik.ingress.kubernetes.io/rewrite-target: "/"
网址:http://local-ubuntu/db[OK] -> 200
然后其他资源正在加载,但指向错误的基本 url
例子:
资源网址为:http://local-ubuntu/public/css/bootstrap.min.css
但这应该是:http://local-ubuntu/db/public/css/bootstrap.min.css (当我手动尝试时有效)
我不确定我在当前配置中缺少什么。
【问题讨论】:
标签: traefik kubernetes-ingress traefik-ingress