是否可以设置默认的前端规则类型?

Is it possible to set the default frontend rule type?

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

有什么方法可以将默认前端规则类型设置为PathPrefixStrip,这样我就不必在每个 Ingress 定义中都覆盖它了吗?

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

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

因此,您可以考虑在全局配置文件中包含 Matcher route rules via PathPrefixStrip parameter for the target Frontends,即:

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

您可以找到有关 Traefik TOML 文件模板和设计的更多详细信息here

不,在 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,
    }