我想在一个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
答案 0 :(得分:1)
这是一个旧问题,但是这可能会对某人有所帮助。这可能无法直接工作,因为我没有测试过。对于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。让我知道它是否不起作用。
在花了数小时在docker上为HTTP端点解决此404问题后,我发现了这个https://stackoverflow.com/a/62093408/2442649