OpenShift Ingress为何不支持Router注解?如何配置非安全边缘终止策略?
在OpenShift HAProxy路由器中取消HTTP自动重定向到HTTPS的方案
首先明确:OpenShift原生的Route资源完全支持insecureEdgeTerminationPolicy配置,默认的HAProxy路由器也完全兼容这个字段,你不需要用补丁,直接修改现有Route的配置就能解决问题,这就是最优方案。
核心修改点
你当前的Route配置里,tls.insecureEdgeTerminationPolicy设置为Redirect,这正是导致HTTP请求自动重定向到HTTPS的原因。你只需要把这个值改成以下两个选项之一:
Allow:允许HTTP请求直接访问服务,不会重定向到HTTPSNone:拒绝所有HTTP请求(返回403或类似错误),只保留HTTPS访问
修改后的完整Route配置
kind: Route apiVersion: route.openshift.io/v1 labels: app.kubernetes.io/name: app-web spec: host: apptest.dev path: / to: kind: Service name: service weight: 100 port: targetPort: tcp-8080 tls: termination: edge insecureEdgeTerminationPolicy: Allow # 这里改成Allow,取消重定向 wildcardPolicy: None
关于Ingress和Route的说明
你提到的Nginx Ingress的配置逻辑和OpenShift的Route不同:
- K8s标准Ingress没有
insecureEdgeTerminationPolicy这个字段,Nginx Ingress是通过注解nginx.ingress.kubernetes.io/ssl-redirect: "false"来关闭重定向的 - OpenShift默认用Route资源作为服务暴露的原生方式,即使你创建了K8s Ingress,OpenShift也会自动生成对应的Route,但直接使用Route资源能更精准地控制HAProxy的行为,不需要绕Ingress的自动转换
应用修改的方法
直接用oc apply命令更新你的Route配置即可:
oc apply -f your-updated-route.yaml
或者用oc patch命令快速修改(如果不想写完整YAML):
oc patch route app-web --type='json' -p='[{"op": "replace", "path": "/spec/tls/insecureEdgeTerminationPolicy", "value": "Allow"}]'
内容的提问来源于stack exchange,提问作者Mr. E
相关产品推荐
相关产品推荐

