使用 ingress nginx 公开 RabbitMQ AMQP 端口

问题描述 投票:0回答:1

经过几天的研究,我认为this是目前最有价值的答案,我试图从这个想法中找到出路,只需将tcp协议从端口转发到相应的服务即可。但到目前为止我还没有运气。

如有任何建议,我们将不胜感激。

环境:

  • Ubuntu 22.04
  • K3s
  • Nginx已安装,使用helm、命名空间
    ingress-nginx
  • 使用bitnami图表安装RabbitMQ,命名空间
    rabbitmq
第一次奇怪的行为

使用端口转发检查是否能够连接到 5672 后

# Allow 5672/tcp port accessible from everywhere
ufw allow 5672/tcp

# port forwarding
kubectl port-forward rabbitmq-0 5672:5672

# Checking connection success from local
telnet localhost 5672

# Checking connection failed from any other machine
telnet <my-vps-ip> 5672

我确定没有其他防火墙,因为我只使用 ufw 命令来公开其他端口,它们都工作正常。

有什么想法吗?

通过 nginx 入口转发 TCP 请求

正在添加

--tcp-services-configmap
部署中的
ingress-nginx-controller
标记

添加了端口 5672 的配置映射。

检查端口 5672 也已在

ingress-nginx-controller
部署中使用命令
kubectl get deploy ingress-nginx-controller -n ingress-nginx -o yaml

进行了修补

检查端口 5672 也已在

ingress-nginx-controller
服务中使用命令
kubectl get svc ingress-nginx-controller -n ingress-nginx -o yaml

进行了修补

但是现在,即使通过命令

telnet localhost 5672
进行本地测试也失败了,之前使用端口转发成功了。

我是不是漏掉了什么?

kubernetes rabbitmq kubernetes-ingress bitnami
1个回答
0
投票

我最终使用了负载均衡器服务。这是它的做法

apiVersion: v1
kind: Service
metadata:
  name: amqp-expose
  namespace: rabbitmq
spec:
  ports:
    - name: amqp
      protocol: TCP
      port: 5672
      targetPort: 5672
  selector:
    app.kubernetes.io/name: rabbitmq
    app.kubernetes.io/instance: rabbitmq
  type: LoadBalancer
  sessionAffinity: None
  externalTrafficPolicy: Cluster

© www.soinside.com 2019 - 2024. All rights reserved.