Обслуживание MQTT через WebSocket в среде Kubernates GCP - PullRequest
0 голосов
/ 18 октября 2019

В настоящее время я отправляю сообщения MQTT через WebSocket клиентам js. Я использую RabbitMQ для записи сообщений в очередь из бэкэнда Java и их перенаправления в клиентские / внешние приложения. Я развернул все в кластере Kubernetes на Google Cloud Platform, и все работает отлично, пока я публикую модуль RabbitMQ с балансировщиком нагрузки Kubernetes непосредственно в Интернете.

    apiVersion: v1
kind: Service
metadata:
  labels:
    app: rabbitmq
  name: rabbitmq
spec:
  type: LoadBalancer
  ports:
  - name: http-manager
    nodePort: 30019
    port: 80
    protocol: TCP
    targetPort: 15672
  - name: mqtt-broker
    nodePort: 31571
    port: 1883
    protocol: TCP
    targetPort: 1883
  - name: ws-service
    nodePort: 32048
    port: 15675
    protocol: TCP
    targetPort: 15675
  selector:
    app: rabbitmq

Я пытаюсь заменить нагрузку Kubernetesбалансировщик с помощью службы порта Node и выставить его через Ingress и GCP Balancer, но проверка работоспособности завершается неудачно и никогда не восстанавливается.

apiVersion: v1
kind: Service
metadata:
  labels:
    app: rabbitmq
  name: rabbitmq-internal
spec:
  ports:
  - name: ws-port
    port: 15675
    protocol: TCP
    targetPort: 15675
  - name: mamanger-port
    port: 15672
    protocol: TCP
    targetPort: 15672
  selector:
    app: rabbitmq
  sessionAffinity: None
  type: NodePort


apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: basictest
  namespace: default
spec:
  rules:
  - host: mqtt-host.dom.cloud
    http:
      paths:
      - backend:
          serviceName: rabbitmq-internal
          servicePort: 15675
        path: /ws/*
      - backend:
          serviceName: rabbitmq-internal
          servicePort: 15672
        path: /*

Зонд является HTTP, поэтому я попытался назначить пользовательский зонд TCP и дажетрюк переключение GCP с помощью зонда, который указывает на другой порт HTTP в том же модуле, но безуспешно.

Мне нужно, чтобы пользователь GCP Balancer имел единый интерфейс для назначения SSL-сертификата для протоколов HTTPS и WSS.

...