kubernetes - 我可以在 Ingress 配置中同时使用 http 和 https 吗?
问题描述
我有像下面这样的入口 yaml,它使入口代理 HTTPS 到 HTTP 连接。我很困惑如何进行同样的入口来处理 HTTP 到 HTTP 的连接。这意味着我希望它对传入的 HTTP 或 HTTPS 使用相同的规则。删除tls
部分使其与 HTTP 一起使用,但添加它会停止 HTTP 并使其仅 HTTPS。是 Kubernetes 的限制阻止了同一入口控制器中的 HTTP 和 HTTPS 路由吗?
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress
annotations:
kubernetes.io/ingress.class: azure/application-gateway
spec:
tls:
- hosts:
- "*.mydomain.com"
secretName: aks-ingress-tls
rules:
- host: "*.mydomain.net"
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: frontend-service
port:
number: 80
解决方案
您应该将 HTTP 请求重定向到您的 HTTPS 侦听器。访问 Azure LB 80/443 侦听器的请求将以相同的方式处理。
由于 Azure App 网关限制,您不能在入口规则中使用通配符主机,您必须使用解决方法。
请参阅:https ://azure.github.io/application-gateway-kubernetes-ingress/annotations/#ssl-redirect
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress
annotations:
kubernetes.io/ingress.class: azure/application-gateway
appgw.ingress.kubernetes.io/ssl-redirect: "true"
spec:
tls:
- hosts:
- "*.mydomain.com"
secretName: aks-ingress-tls
rules:
- host: "www.mydomain.com"
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: frontend-service
port:
number: 80
推荐阅读
- javascript - 在 Angular 中关闭严格模式?
- javascript - Jquery根据点击将一个元素的值更改为另一个元素
- docker - Docker debian image container apt update 出现一些问题
- shell - 如何使用 SSH 将包含“-c”的命令传递给远程机器?
- xamarin - Xamarin Binding 使用 Converter 进行控制
- batch-rename - 使用批处理脚本重命名多个 .pdf 文件
- php - 如何在不重新创建支架的情况下重新加载支架?
- php - 在php中编辑时无法从数据库中检索下拉数据
- python-3.x - 分组和转置数据帧
- python - user_input() 接受 0 个位置参数,但给出了 1 个错误