我的问题是,我的 kubernetes 集群中的 traefik 入口 Controller 确实通过 http
响应 404 page not found
,BUT 通过 https
我从服务中得到了真实的响应。
这是在我将 TLS 部分添加到 IngressRoute
后发生的。
这是我的 IngressRoute:
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
name: example-backend
namespace: example
spec:
entryPoints:
- web
- websecure
routes:
- match: Host(`api.example.com`)
kind: Rule
priority: 10
services:
- name: example-backend-service
port: 80
tls:
secretName: tls-secret # I'm using my own certificate, not Let's Encrypt
为什么我没有得到像 https
那样的真实/相同的响应?
最佳答案
由于 TLS 适用于路由器,因此您不能只有一个 IngressRoute 来处理这 2 种情况。
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
name: example-backend
namespace: example
spec:
entryPoints:
- websecure
routes:
- match: Host(`api.example.com`)
kind: Rule
priority: 10
services:
- name: example-backend-service
port: 80
tls:
secretName: tls-secret
---
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
name: example-backend-redirect
namespace: example
spec:
entryPoints:
- web
routes:
- match: Host(`api.example.com`)
kind: Rule
priority: 10
services:
# in this IngressRoute the service will be never called
# because of the redirect middleware.
- name: example-backend-service
port: 80
middlewares:
- name: https_redirect
---
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
name: https_redirect
spec:
redirectScheme:
scheme: https
permanent: true
关于kubernetes - 为什么 Traefik v2 仅通过 http 响应 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60043746/