Соединение SignalR через K8S Ingress - PullRequest
0 голосов
/ 19 сентября 2018

Я пытаюсь открыть концентратор SignalR, размещенный в модуле Kubernetes (Azure).По сути, шаги аутентификации и установления связи работают нормально, но когда я запускаю какое-либо действие, все клиенты, подключенные через вход k8s, не получают сообщение.Кто-нибудь сталкивался с этой проблемой или просто поделился своими услугами через SignalR через Kubernetes - Ingress?

ingress.yml

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: endpoints
  annotations:
    kubernetes.io/ingress.class: addon-http-application-routing
    ingress.kubernetes.io/ssl-redirect: "false"  
    nginx.ingress.kubernetes.io/ssl-redirect: "false"  
    nginx.org/websocket-services: "myservice"
spec:
  rules:
  - host: api.[MY-DOMAIN].com
    http:
      paths:
      - backend:
          serviceName: myservice
          servicePort: 80
        path: /myservice

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018

Попробуйте:

annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
    nginx.ingress.kubernetes.io/affinity: cookie
    nginx.ingress.kubernetes.io/session-cookie-hash: sha1
    nginx.ingress.kubernetes.io/session-cookie-name: REALTIMESERVERID

Я написал пример проекта некоторое время назад, если вы хотите рабочий пример: DenisBiondic / RealTimeMicroservices

В качестве примечания,рассмотрите возможность использования службы Azure SignalR, она должна устранить многие головные боли (также в приведенном выше примере).

0 голосов
/ 20 сентября 2018

Не знаком с SignalR, но может быть несколько вещей.

  1. Возможно, вход nginx удаляет некоторые http-заголовки, которые нужны SignalR.Вы знакомы с заголовками http, которые должен получать SignalR?
  2. После аутентификации возможно, что концентратор SignalR пытается говорить по TLS?Я вижу, что у вас это работает на порту 80 без TLS.Вам нужно настроить что-то вроде этого:

    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      name: endpoints
      annotations:
        kubernetes.io/ingress.class: addon-http-application-routing
        ingress.kubernetes.io/ssl-redirect: "false"  <== you may need to remove
        nginx.ingress.kubernetes.io/ssl-redirect: "false"   <== you may need to remove
        nginx.org/websocket-services: "myservice"
    spec:
      rules:
      - host: api.[MY-DOMAIN].com
        http:
          paths:
          - backend:
              serviceName: myservice
              servicePort: 80
            path: /myservice
      tls:
        - secretName: <your-tls-certs>
    

Надеюсь, это поможет!

...