Traefik 2 http 到 https 重定向,tls 不起作用

map*_*eat 4 kubernetes traefik traefik-ingress

我想在一个 IngressRoute 中设置 http 到 https 重定向,但是当我尝试访问 http 端点 traefik 时使用下面的配置返回 404 未找到错误。如果我删除 tls 部分重定向有效,但 tls 无效。

我可以同时工作吗?

traefik 版本 2.1.0-rc2

apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: console-web
  namespace: dev
  labels:
    app: console-web
spec:
  entryPoints:
    - web
    - websecure
  routes:
    - match: Host(`console.example.com`)
      kind: Rule
      services:
        - name: console-web
          port: 8080
      middlewares:
        - name: https-redirect
  tls:
    secretName: example-com-tls
Run Code Online (Sandbox Code Playgroud)

Yea*_*man 6

这是一个老问题,但这可能会对某人有所帮助。这可能不会直接起作用,因为我还没有测试过它。对于 kubernetes,它应该按以下方式工作,首先定义中间件的工作方式

未经测试的代码

apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
  name: test-redirectscheme
spec:
  redirectScheme:
    scheme: https
Run Code Online (Sandbox Code Playgroud)

然后定义IngressRoute

apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: ingress1
  namespace: default
spec:
  entryPoints:
    - websecure
  routes:
    - match: Host(`somehost`)
      kind: Rule
      services:
        - name: console-web
          port: 8080
  tls:
    secretName: example-com-tls
Run Code Online (Sandbox Code Playgroud)
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: ingress2
  namespace: default
spec:
  entryPoints:
    - web
  routes:
    - match: Host(`somehost`)
      middlewares:
        - name: test-redirectscheme
      kind: Rule
      services:
        - name: console-web
          port: 80
Run Code Online (Sandbox Code Playgroud)

需要两个入口,因为一个入口将流量重定向到另一个入口。我还想,如果您没有两个端口,您可以重复使用前一个端口,因为无论如何它都会被重定向到 https。如果不行请告诉我。

在为 docker 解决 http 端点的 404 问题花了几个小时后,我发现了这个/sf/answers/4346538591/