You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过OpenShift Route暴露Bitnami Redis遇连接错误问题求助

问题原因

OpenShift 默认创建的 Route 是HTTP/HTTPS 协议的反向代理,而 Redis 使用的是专属的 TCP 二进制协议。直接用普通 Route 转发 Redis 流量时,代理会把连接请求当作 HTTP 请求处理,Redis 返回的原生响应被 HTTP 代理解析后,就会出现类似 "Unknown reply: H" 的错误——本质是 Redis 的响应不符合 HTTP 协议格式,被客户端误解。

解决方案

方案一:配置 OpenShift TCP Route(推荐生产/长期暴露)

OpenShift 支持通过 Ingress Controller 配置 TCP 端口映射来暴露 TCP 服务:

  1. 编辑默认 Ingress Controller 的配置:
oc edit ingresscontroller/default -n openshift-ingress-operator
  1. 在 spec 段中添加 TCP 端口映射(示例中用 30001 作为外部暴露端口,可自行修改):
spec:
  # 保留原有配置,新增以下内容
  tcp:
    - port: 30001
      destination:
        service: redis-ms-master
        namespace: redis-ms
        port: tcp-redis
  1. 保存配置后,等待 Ingress Controller 重启更新。之后就可以通过 redis-ms.apps-crc.testing:30001 连接 Redis。

方案二:用 NodePort 类型 Service 暴露(适合测试环境)

修改 Redis Service 为 NodePort 类型,直接通过集群节点 IP + 节点端口访问:

  1. 更新 Helm 部署参数,指定 Service 类型为 NodePort:
helm upgrade redis-ms my-repo/redis \
--set master.service.type=NodePort \
--set master.podSecurityContext.enabled=false \
--set master.containerSecurityContext.enabled=false \
--set auth.enabled=false \
--set image.debug=true \
--set architecture=standalone
  1. 获取分配的 NodePort 端口:
oc get svc redis-ms-master -n redis-ms
  1. 获取 CRC 节点 IP(执行 crc ip 命令),然后用 [节点IP]:[NodePort] 连接 Redis,例如 192.168.130.11:300123。

方案三:Port-Forward(临时调试用)

就是你当前正在使用的方法,适合临时测试:

oc port-forward --namespace redis-ms svc/redis-ms-master 6379:6379

之后通过 localhost:6379 正常连接即可。

内容的提问来源于stack exchange,提问作者Fabry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 15:10:36