https://docs.traefik.io/configuration/backends/kubernetes/#general-annotations表示traefik.ingress.kubernetes.io/rule-type
注释覆盖 默认的前端规则类型。
有什么方法可以将默认的前端规则类型设置为PathPrefixStrip
,这样我就不必在每个Ingress定义中都覆盖它了?
答案 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,
}