2

我想在一个 IngressRoute 中设置 http 到 https 重定向,但是当我尝试访问 http 端点时,下面的配置 traefik 返回 404 not found 错误。如果我删除 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
4

1 回答 1

2

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

未经测试的代码

apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
  name: test-redirectscheme
spec:
  redirectScheme:
    scheme: https

然后定义 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
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

需要两个入口,因为一个将流量重定向到另一个。我还想如果你没有两个端口,你可以重用前一个端口,因为无论如何它都会被重定向到 https。让我知道它是否不起作用。

在 http 端点的 404 问题上为 docker 花费数小时后,我发现了这个https://stackoverflow.com/a/62093408/2442649

于 2020-05-29T20:16:03.667 回答