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

时间:2019-06-19 09:48:59

标签: kubernetes rabbitmq istio

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

打开istio sidecar注入后,部署将不再连接到kubernetes服务。

我尝试将istio ServiceEntry与每个RabbitMQ吊舱的FQDN一起放入,但这似乎没有任何作用。

---
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吊舱,但在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>>}

我目前唯一的想法是RabbitMQ确实使用插件(rabbitmq_peer_discovery_k8s)将Kubernetes DNS解析到每个特定的pod中,这可能会干扰吗?

请明确一点,我对在应用程序和RabbitMQ之间启用Istio mTLS并没有兴趣,只是具有完全功能的基本连接。

我们正在使用:

  • Kubernetes 1.3.0
  • Istio 1.1.9
  • RabbitMQ 3.7.12

0 个答案:

没有答案