ssl - 使用 Traefik Ingress Controller 允许单个入口运行 HTTP 而无需强制 SSL
问题描述
我通过1.5.4 版的helm 图表将 Traefik 设置为我的 Ingress 控制器。我启用了 LetsEncrypt 并将 SSL 设置为 Enforced,因此我所有公开的服务都根据需要强制使用 SSL。
我最近遇到了一种情况,我不需要在单个入口上强制 SSL。我已经尝试了我能找到的所有注释,但我能做到的最多的是重定向循环(http -> https -> http),这让我相信 SSL 仍然被强制执行。
有没有人设法通过注释让它运行?这是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
创建这个看看它是否会发生。我猜的解决方法是创建另一个 Ingress。
编辑:
Traefik helm chart 专门使用letsencrypt 配置Traefik,因此在这种情况下,Traefik 必须通过后端注释专门支持非TLS 后端。
推荐阅读
- javascript - 使用 Babel 编译 React 项目时的错误
- javascript - 有没有办法观看网络摄像头激活事件?
- reactjs - 无法获得反应式搜索搜索结果
- python - MySQL Python以变量为名称创建表
- javascript - 将数组类型初始化为对象javascript
- python - 不同的行不会出现在 Django 的上下文中
- matlab - 内切圆的对象旋转结果 - Matlab
- java - 使用休眠在 Postgres 上设置随机种子
- javascript - Typescript 子类被接受为超类类型的值,但不作为接受超类类型的函数的参数
- react-native - ReactNative 使图像与背景淡入