允许从Istio到RabbitMQ服务的流量

时间:2019-05-08 16:48:42

标签: kubernetes rabbitmq google-kubernetes-engine istio envoyproxy

我已经在GKE中设置了一个K8S集群,并安装了RabbitMQ(来自市场)和Istio(通过Helm)。我可以从Pod访问rabbitMQ,直到我将特使代理注入这些Pod中为止,但是之后流量将不会到达RabbitMQ,并且我不知道如何启用对Rabbitmq服务的流量。

有一个服务 rabbitmq-rabbitmq-svc (在 rabbitmq 名称空间中),类型为LoadBalancer。 当我没有运行特使时,我尝试了一个简单的busybox,然后可以很容易地telnet到rabbitmq(端口5672),但是当我尝试使用自动特使注入特使时,流量就会阻止。 我尝试添加DestinationRule失败。 (我添加了一条规则,但没关系)

apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: rabbitmq-rabbitmq-svc
spec:
  host: rabbitmq.rabbitmq.svc.cluster.local
  trafficPolicy:
    loadBalancer:
      simple: LEAST_CONN

似乎应该是一个简单的解决方案,但我无法弄清楚...:/

更新 原来这是主机名中的一个简单错误,最终使用了它,并且可以正常工作:

apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: rabbitmq-rabbitmq-svc
spec:
  host: rabbitmq-rabbitmq-svc.rabbitmq.svc.cluster.local

3 个答案:

答案 0 :(得分:1)

原来是主机名中的一个简单错误,正确的是rabbitmq-rabbitmq-svc.rabbitmq.svc.cluster.local

答案 1 :(得分:1)

为了让 RabbitMQ 集群在 Istio 中工作,我唯一需要做的就是对 RabbitMQ pod 进行注释:

FILE

由于某种原因,排除端口注释不起作用,所以我只是通过使用包含端口注释来翻转它。就我而言,全局 Istio 配置由公司中的另一个团队控制,因此在尝试使用排除端口注释时可能会发生冲突。

答案 2 :(得分:0)

我也许以前也遇到过同样的问题。但是我的应用程序可以在Rabbitmq服务中使用4369端口声明epmd后,通过特使连接Rabbitmq。

apiVersion: v1
kind: Service
metadata:
  name: rabbitmq
  labels:
    app: rabbitmq
spec:
  type: ClusterIP
  ports:
  - port: 5672
    targetPort: 5672
    name: message
  - port: 4369
    targetPort: 4369
    name: epmd
  - port: 15672
    targetPort: 15672
    name: management
  selector:
    app: rabbitmq