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

时间:2019-09-02 13:54:02

标签: kubernetes traefik kubernetes-ingress traefik-ingress

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

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

2 个答案:

答案 0 :(得分:0)

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

静态配置在traefik-ingress-controller初始化阶段应用Traefik设置,因此,根据precedence的订购行为,所有动态创建的源(例如K8的Ingress资源)可能会覆盖某些键值参数。 / p>

因此,您可以考虑通过PathPrefixStrip参数将Matcher路由规则包括在全局配置文件中的目标Frontends内,即:

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

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

答案 1 :(得分: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,
    }