【问题标题】:Traefik: Matching a IP and PORT with no HOST name, using IngressRouteTraefik:使用 IngressRoute 匹配没有 HOST 名称的 IP 和 PORT
【发布时间】:2021-04-12 11:05:44
【问题描述】:

我需要映射一个具有特定端口的纯静态 IP,它没有附加主机名。静态IP与域指向的完全相同,但我只需要IP。入口点位于特定端口 - 实际上是端口 9735。

我有这个工作,但我不确定我做的是否正确。出于测试目的,我在那里添加了一个简单的 whoami 网站。

apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: whoami

spec:
  entryPoints:
    - lnd1
  routes:
    - match: Path(`/`)
      kind: Rule
      services:
        - name: whoami
          port: 80

所以如果我去我的浏览器并添加

http://88.x.x.x:9735

然后就可以了。如果我把

http://88.x.x.x:9735/somepath

它没有。是否可以使用通配符

    - match: Path(`/`)

或者这可能是完全错误的方向。虽然它确实有效,但可能不是正确的方法..

我需要做的就是捕获特定端口(不是 80 或 443)上的所有流量并将其转发到服务。

我知道入口点在工作时设置正确,作为参考,我正在使用它

ports:
  lnd1:
    port: 9735
    expose: true
    exposedPort: 9735
    # The port protocol (TCP/UDP)
    protocol: TCP

我怀疑我应该使用 Match 的天气(你可以排除它:-) 吗? ) - 以及我应该使用什么样的匹配。

任何想法

提前致谢

【问题讨论】:

    标签: kubernetes traefik traefik-ingress


    【解决方案1】:

    在 traefik 文档中,我发现除了 Path() 规则之外,还有 PathPrefix() 这很可能是您想要使用的。

    the docs 是这样说的:

    路径与路径前缀

    如果您的服务仅侦听确切的路径,请使用 Path。例如, 路径:/products 将匹配 /products 但不匹配 /products/shoes。

    如果您的服务侦听特定的基础,请使用 前缀 匹配器 路径,但也为子路径上的请求提供服务。例如,路径前缀: /products 将匹配 /products 但也匹配 /products/shoes 和 /产品/衬衫。由于路径按原样转发,因此您的服务是 预计会在 /products 上收听。

    所以你的入口路径如下所示:

    apiVersion: traefik.containo.us/v1alpha1
    kind: IngressRoute
    metadata:
      name: whoami
    spec:
      entryPoints:
        - lnd1
      routes:
        - match: PathPrefix(`/`)    # <-------------
          kind: Rule
          services:
            - name: whoami
              port: 80
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-05
      • 2020-03-08
      • 1970-01-01
      • 2022-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多