1

https://docs.traefik.io/configuration/backends/kubernetes/#general-annotations表示traefik.ingress.kubernetes.io/rule-type注解覆盖默认的前端规则类型

有没有办法将默认的前端规则类型设置为,PathPrefixStrip这样我就不必在每个 Ingress 定义中都覆盖它?

4

2 回答 2

0

据我所知,您可以使用 Traefik静态配置文件并显式传播入口点、前端和后端对象的全局配置。

静态配置在初始化阶段应用 Traefik 设置traefik-ingress-controller,因此所有动态创建的源,如 K8s资源,可能会根据优先顺序行为Ingress覆盖一些键值参数。

因此,您可以考虑在全局配置文件中通过参数为目标前端包含Matcher路由规则,即:PathPrefixStrip

[frontends]
  [frontends.frontend1]
  backend = "backend1"
    [frontends.frontend1.routes.test_1]
    rule = "PathPrefixStrip:/somepath"

有关 Traefik TOML 文件模板和设计的更多详细信息,您可以在此处找到。

于 2019-09-04T08:14:24.393 回答
0

不,在 traefik 1.7 中,默认的前置规则是硬编码的并且没有记录。 https://github.com/containous/traefik/blob/v1.7/provider/kubernetes/kubernetes.go#L48

    defaultFrontendRule        = "PathPrefix:/"
//...

                if len(frontend.Routes) == 0 {
                    frontend.Routes["/"] = types.Route{
                        Rule: defaultFrontendRule,
                    }
                }
//...
    templateObjects.Frontends[defaultFrontendName].Routes["/"] = types.Route{
        Rule: defaultFrontendRule,
    }
于 2019-10-08T14:12:12.007 回答