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

如何在Nginx Ingress中以TCP暴露RabbitMQ 5671端口并验证连接

通过Nginx Ingress暴露RabbitMQ 5671 TCP端口及验证方案

一、更新TCP服务映射ConfigMap

你已创建的tcp-services ConfigMap需要添加5671端口的转发规则,修改后配置如下:

apiVersion: v1
kind: ConfigMap
metadata:
  name: tcp-services
  namespace: default
data:
  5672: "default/rabbitmq:5672"
  5671: "default/rabbitmq:5671"

注:ConfigMap中服务名称需与你创建的ClusterIP Service(rabbitmq)完全一致,修正之前配置里的rabbitmq-service笔误。

执行更新:

kubectl apply -f tcp-services.yaml

二、配置Nginx Ingress Controller加载TCP端口规则

若使用Helm部署Ingress Controller

在Helm values配置文件中添加TCP端口映射:

tcp:
  configMapNamespace: default
  ports:
    5671: "default/rabbitmq:5671"
    5672: "default/rabbitmq:5672"

升级Ingress Controller实例:

helm upgrade nginx-ingress ingress-nginx/ingress-nginx -f your-values.yaml

若手动部署Ingress Controller

修改Ingress Controller的Deployment,确保挂载tcp-services ConfigMap并开放5671端口:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-ingress-controller
  namespace: ingress-nginx
spec:
  template:
    spec:
      containers:
      - name: nginx-ingress-controller
        ports:
        - name: tcp-5671
          containerPort: 5671
          hostPort: 5671
        - name: tcp-5672
          containerPort: 5672
          hostPort: 5672
        volumeMounts:
        - name: tcp-services
          mountPath: /etc/nginx/tcp-services
      volumes:
      - name: tcp-services
        configMap:
          name: tcp-services
          namespace: default

更新Deployment:

kubectl apply -f nginx-ingress-deployment.yaml

三、验证TCP端口连通性

  1. 检查Ingress Controller日志,确认配置加载成功:
kubectl logs -n ingress-nginx <nginx-ingress-pod-name> | grep 5671

若日志中出现upstream default_rabbitmq_5671相关内容,说明配置已生效。

  1. 测试端口连通性
  • 使用telnet测试基础TCP连通:
telnet my-host.com 5671

连接成功会进入交互界面,按Ctrl+]后输入quit退出。

  • 使用openssl测试AMQPS SSL握手:
openssl s_client -connect my-host.com:5671

若返回SSL证书信息及握手成功提示,说明AMQPS端口正常暴露。

  • 使用RabbitMQ客户端工具验证业务连通:
rabbitmqadmin -H my-host.com -P 5671 --ssl --username <your-username> --password <your-password> list queues

若能列出RabbitMQ队列,说明端口转发完全正常。

注意:Nginx Ingress的TCP端口转发独立于HTTP Ingress规则,你之前创建的rabbit-ingress规则仅用于HTTP服务(如RabbitMQ UI),TCP端口无需在Ingress规则中配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 22:49:58