我通过 helm chart 将 Traefik 设置为我的 Ingress Controller 在版本 1.5.4 上。我启用了 LetsEncrypt 并将 SSL 设置为 Enforced,因此我所有公开的服务都根据需要强制使用 SSL。
我最近遇到了一种情况,我需要不在单个入口上强制使用 SSL。我已经尝试了我能找到的每一个注释,但我能得到的最多是一个重定向循环(http -> https -> http)让我相信 SSL 仍然是强制执行的。
有没有人设法通过注释让它运行? Here是 1.5 的注释谢谢!
我当前部署的 Ingress:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
creationTimestamp: 2018-09-18T05:52:41Z
generation: 1
labels:
app: prerender
chart: prerender-0.4.0
heritage: Tiller
release: prerender
name: prerender-prerender
namespace: production-prerender-io
resourceVersion: "41421557"
selfLink: /apis/extensions/v1beta1/namespaces/production-prerender-io/ingresses/prerender-prerender
uid: 0e8a1286-bb07-11e8-9938-06e82a01885c
spec:
rules:
- host: prerender.mydomain.com
http:
paths:
- backend:
serviceName: prerender-prerender
servicePort: 3000
path: /
status:
loadBalancer: {}
最佳答案
这不受 Kubernetes 支持在单个 Ingress
上。换句话说,一旦你在 Ingress 上使用 TLS,你就无法返回。入口如下:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: myingress
spec:
tls:
- secretName: mytlssecret
backend:
serviceName: service1
servicePort: 80
如果有这样的东西就好了:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: myingress
spec:
tls:
- secretName: mytlssecret
backend:
serviceName: service1
servicePort: 80
tlsFrontend: false
已创建 this看看它是否会发生。我想解决方法是创建另一个 Ingress。
编辑:
Traefik helm chart 使用 letsencrypt 专门配置 Traefik,因此在这种情况下,Traefik 必须通过后端注释专门支持非 TLS 后端。
关于ssl - 使用 Traefik Ingress Controller 允许单个入口运行 HTTP 而无需强制使用 SSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52440562/