【发布时间】:2019-09-19 13:23:34
【问题描述】:
我目前在我的 K8s 集群中使用 traefik 1.6.x 作为入口控制器。我想更新到 1.7.x(然后再更新到 2.x),但更新后我的 ingresses 不再工作了。
问题似乎是,我通过将方法添加到 traefik.frontend.rule.type 注释来对我的入口进行 http 方法限制,如下所示:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: app-name
namespace: namespace1
annotations:
kubernetes.io/ingress.class: traefik
traefik.frontend.rule.type: "Method: CONNECT, DELETE, GET, HEAD, OPTIONS, PATCH, POST, PUT; PathPrefix"
ingress.kubernetes.io/hsts-max-age: "315360000"
ingress.kubernetes.io/hsts-include-subdomains: "true"
ingress.kubernetes.io/custom-frame-options-value: "SAMEORIGIN"
ingress.kubernetes.io/content-type-nosniff: "true"
ingress.kubernetes.io/browser-xss-filter: "true"
ingress.kubernetes.io/custom-response-headers: "Server:||X-Application-Context:||X-Powered-By:||exception:"
spec:
rules:
- host: ...
我不知道这是否曾经打算以这种方式完成,但显然它奏效了。我在其他 StackOverflow 帖子 iirc 中发现了这一点。
删除 Method 部分(或整个注释,因为 PathPrefix 是默认值)使路由恢复生机。但是,这当然允许再次使用 TRACE 方法,例如。
是否有另一种方法可以使用 1.7.x 的 traefik 版本来限制那些(甚至可能是所有入口)?
提前致谢!
【问题讨论】:
-
你考虑过使用CORS headers吗?
标签: http kubernetes traefik traefik-ingress