https://docs.traefik.io/configuration/backends/kubernetes/#general-annotations表示traefik.ingress.kubernetes.io/rule-type
注解覆盖了默认的前端规则类型。
有没有办法将默认的前端规则类型设置为,PathPrefixStrip
这样我就不必在每个 Ingress 定义中都覆盖它?
https://docs.traefik.io/configuration/backends/kubernetes/#general-annotations表示traefik.ingress.kubernetes.io/rule-type
注解覆盖了默认的前端规则类型。
有没有办法将默认的前端规则类型设置为,PathPrefixStrip
这样我就不必在每个 Ingress 定义中都覆盖它?
据我所知,您可以使用 Traefik静态配置文件并显式传播入口点、前端和后端对象的全局配置。
静态配置在初始化阶段应用 Traefik 设置traefik-ingress-controller
,因此所有动态创建的源,如 K8s资源,可能会根据优先顺序行为Ingress
覆盖一些键值参数。
因此,您可以考虑在全局配置文件中通过参数为目标前端包含Matcher路由规则,即:PathPrefixStrip
[frontends]
[frontends.frontend1]
backend = "backend1"
[frontends.frontend1.routes.test_1]
rule = "PathPrefixStrip:/somepath"
有关 Traefik TOML 文件模板和设计的更多详细信息,您可以在此处找到。
不,在 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,
}