如何从Istio应用程序连接到群集本地RabbitMQ Kubernetes服务

如何从Istio应用程序连接到群集本地RabbitMQ Kubernetes服务,kubernetes,rabbitmq,istio,Kubernetes,Rabbitmq,Istio,我们有一个依赖于RabbitMQ的应用程序,该应用程序作为标准状态集/服务风格部署(使用helm stable/RabbitMQ ha)部署在kubernetes集群内。然后,我们在一个单独的名称空间中,以类似样式的部署/服务布局部署了一个应用程序,但启用了istio(包括侧车注入) 一旦我们打开istio侧车注入,部署就无法再连接到kubernetes服务 我试着在每个RabbitMQ pod的FQDN中加入一个istio ServiceEntry,但这似乎没有什么不同 --- apiVers

我们有一个依赖于RabbitMQ的应用程序,该应用程序作为标准状态集/服务风格部署(使用helm stable/RabbitMQ ha)部署在kubernetes集群内。然后,我们在一个单独的名称空间中,以类似样式的部署/服务布局部署了一个应用程序,但启用了istio(包括侧车注入)

一旦我们打开istio侧车注入,部署就无法再连接到kubernetes服务

我试着在每个RabbitMQ pod的FQDN中加入一个istio ServiceEntry,但这似乎没有什么不同

---
apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
  name: rabbitmq
spec:
  hosts:
    - "rabbitmq-rabbitmq-ha-0.rabbitmq-rabbitmq-ha-discovery.rabbitmq.svc.cluster.local"
    - "rabbitmq-rabbitmq-ha-1.rabbitmq-rabbitmq-ha-discovery.rabbitmq.svc.cluster.local"
    - "rabbitmq-rabbitmq-ha-2.rabbitmq-rabbitmq-ha-discovery.rabbitmq.svc.cluster.local"
  ports:
    - number: 4369
      name: epmd
      protocol: TCP
    - number: 5672
      name: amqp
      protocol: TCP
    - number: 15672
      name: http
      protocol: HTTP
    - number: 25672
      name: inter-node
      protocol: TCP
...
我可以看到流量到达RabbitMQ pod,但在打开Istio时,它会抛出以下错误:

2019-06-19 09:40:39.538 [info] <0.32110.48> accepting AMQP connection <0.32110.48> (10.233.122.234:47530 -> 10.233.122.85:5672)
2019-06-19 09:40:39.538 [error] <0.32110.48> closing AMQP connection <0.32110.48> (10.233.122.234:47530 -> 10.233.122.85:5672):
{bad_header,<<22,3,1,0,222,1,0,0>>}
2019-06-19 09:40:39.538[信息]接受AMQP连接(10.233.122.234:47530->10.233.122.85:5672)
2019-06-19 09:40:39.538[错误]关闭AMQP连接(10.233.122.234:47530->10.233.122.85:5672):
{bad_头,}
目前我唯一的想法是RabbitMQ确实使用插件(RabbitMQ_peer_discovery_k8s)将Kubernetes DNS解析到每个特定的pod中,这可能是错误的吗

需要明确的是,我对在应用程序和RabbitMQ之间启用Istio MTL不感兴趣,只是为了实现功能齐全的基本连接

我们正在使用:

  • 库伯内特斯1.3.0
  • 第1.1.9条
  • RabbitMQ 3.7.12

移除入口点怎么样?我觉得没必要。@menya你是说服务入口吗?无论是否使用,它都不起作用,在我添加/删除它时,它似乎没有任何区别。什么是您的RMQ客户端,RMQ群集在我的情况下工作得很好。@menya我们使用的是下面的正式客户端。我很乐意使用您要帮助调试的任何客户端来快速构建一个容器。RMQ clueter对于客户端是透明的,所以连接到任何节点都可以。您如何连接到RMQ?您的RMQ是否支持
服务
?如何删除
入口点
?我觉得没必要。@menya你是说服务入口吗?无论是否使用,它都不起作用,在我添加/删除它时,它似乎没有任何区别。什么是您的RMQ客户端,RMQ群集在我的情况下工作得很好。@menya我们使用的是下面的正式客户端。我很乐意使用您要帮助调试的任何客户端来快速构建一个容器。RMQ clueter对于客户端是透明的,所以连接到任何节点都可以。您如何连接到RMQ?您的RMQ是否支持
服务