在OpenShift上从Nginx Ingress切换至HPProxy实现162端口流量转发
注:你提到的HPProxy应为笔误,以下默认按OpenShift默认的HAProxy Ingress实现给出操作步骤,可实现与你之前Nginx Ingress完全一致的UDP 162端口转发效果
第一步:确认集群HAProxy Ingress Controller状态
HAProxy是OpenShift默认自带的Ingress实现,首先执行以下命令确认现有Ingress Controller运行正常:oc get ingresscontrollers.operator.openshift.io -n openshift-ingress-operator第二步:配置UDP端口转发规则
OpenShift的Ingress Controller支持和Nginx Ingress类似的UDP端口配置逻辑,直接通过补丁更新默认Ingress Controller即可添加转发规则:oc patch ingresscontroller/default -n openshift-ingress-operator --type=merge -p '{"spec":{"endpointPublishingStrategy":{"type":"LoadBalancer"},"udp":{"162":"default/myapp:1620"}}}'
上述配置中"162":"default/myapp:1620"的含义与你之前Nginx配置的udp.162=default/myapp:1620完全一致:将Ingress对外暴露的162 UDP端口流量转发到default命名空间下myapp服务的1620端口。第三步:验证配置生效
等待1~2分钟让配置同步完成后,执行以下命令检查路由器服务是否已经开放162 UDP端口:oc get svc router-default -n openshift-ingress -o yaml | grep -A 10 162
输出中如果出现port: 162、protocol: UDP、targetPort: 1620相关字段,说明转发规则配置成功。第四步:功能验证
你可以在集群外使用UDP测试工具(如snmptrap)向OpenShift路由器的外部IP的162端口发送测试数据包,确认后端myapp服务可以正常接收请求。
新手实践注意事项
- 如果你的集群Ingress使用NodePort模式而非LoadBalancer模式暴露,需要额外放行节点防火墙/安全组的162 UDP端口入站规则。
- 如果你不想修改集群默认的Ingress Controller,也可以单独部署独立的HAProxy Ingress实例,部署时使用helm参数
--set udp.162=default/myapp:1620即可,和你之前安装Nginx Ingress的操作逻辑几乎完全相同。 - UDP端口转发不支持基于域名的路由规则,只能通过端口号匹配转发,该行为和你之前使用Nginx Ingress的表现一致。
内容的提问来源于stack exchange,提问作者user1731045

