Kubernetes入口中基于Traefik路径的路由无法按预期工作

Asa*_*Asa 6 traefik kubernetes-ingress traefik-ingress

我正在尝试使用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
Run Code Online (Sandbox Code Playgroud)

流量被路由到正确的服务,但是当我查看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 [确定]-> 200

然后其他资源正在加载,但指向错误的基本URL

例:

资源URL是:http://local-ubuntu/public/css/bootstrap.min.css

但这应该是:http://local-ubuntu/db/public/css/bootstrap.min.css (当我手动尝试时可以使用)

我不确定当前配置中缺少的内容。

Dzh*_*ban 2

关于不提供静态内容,文档说明如下:

如果您的后端侦听根路径 (/) 但应该可在特定前缀上路由,请使用 *Strip 匹配器。例如,PathPrefixStrip: /products 将匹配 /products,但也匹配 /products/shoes 和 /products/shirts。由于路径在转发之前被剥离,因此您的后端应该侦听 /。如果您的后端正在提供资产(例如图像或 Javascript 文件),那么它很可能必须返回正确构造的相对 URL。继续这个例子,后端应该返回 /products/shoes/image.png (而不是 /images.png,Traefik 可能无法将其与同一后端关联)。可以查询 X-Forwarded-Prefix 标头(自 Traefik 1.3 起可用)来动态构建此类 URL。