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

如何通过Ingress在Kubernetes中暴露Mongo服务器?

通过Nginx Ingress暴露Mongo(TCP协议)的可行方案

虽然Ingress原生设计用于处理HTTP/HTTPS流量,但Nginx Ingress Controller支持TCP/UDP服务的转发,可以实现无需为Mongo单独创建LoadBalancer或NodePort Service的暴露方式,具体配置步骤如下:

1. 配置TCP端口映射的ConfigMap

创建或编辑Nginx Ingress Controller对应的ConfigMap,添加Mongo服务的端口映射规则:

apiVersion: v1
kind: ConfigMap
metadata:
  name: nginx-ingress-controller
  namespace: ingress-nginx # 替换为你的Ingress Controller所在命名空间
data:
  # 格式:外部暴露端口:目标服务的<命名空间>/<服务名>:<服务端口>
  27017: "default/mongo-service:27017"

说明:27017是对外暴露的端口,default/mongo-service:27017指向你的Mongo Service(替换为实际的命名空间和服务名称)。

2. 更新Nginx Ingress Controller的部署

修改Ingress Controller的Deployment或DaemonSet配置,添加对上述TCP端口的监听:

spec:
  template:
    spec:
      containers:
        - name: nginx-ingress-controller
          ports:
            - name: tcp-27017
              containerPort: 27017
              protocol: TCP

保存配置后,Kubernetes会自动重启Ingress Controller Pod以应用新配置。

3. 验证Mongo访问

配置生效后,即可通过Nginx Ingress Controller的外部IP(或绑定的域名)加上27017端口访问Mongo:

mongo --host <ingress-controller-external-ip> --port 27017

补充说明

  • Traefik同样支持TCP/UDP路由,并非无法生效:你可以通过Traefik的IngressRouteTCP资源定义转发规则,指向Mongo服务,配置逻辑与Nginx Ingress的TCP转发类似。
  • 安全建议:建议通过Nginx Ingress的IP白名单规则限制访问来源,同时在Mongo侧启用身份认证,避免未授权访问风险。
  • 资源考量:确保Nginx Ingress Controller的Pod资源配置足够支撑Mongo的流量负载,避免成为性能瓶颈。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 14:36:04