SignalR Websocket через вход K8S - PullRequest
       6

SignalR Websocket через вход K8S

0 голосов
/ 28 января 2020

У меня есть простая настройка клиентского сервера SignalR, где мой сервер состоит из веб-приложения, работающего в кластере kubernetes, который предоставляет доступ к службе через входной контроллер следующим образом:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
    # Enable PROXY protocol
    service.beta.kubernetes.io/aws-load-balancer-proxy-protocol: "*"
  name: coreapilocal-ingress
spec:
  rules:
  - host: coreapilocal.localhost
    http:
      paths:
      - backend:
          serviceName: coreapilocal-service
          servicePort: 80
        path: /
      - backend:
          serviceName: coreapilocal-service
          servicePort: 80
        path: /*

и HTML клиент который пытается вызвать метод SignalR Server через вход? Но по какой-то причине этот вызов по какой-то причине игнорируется?

Я где-то читал, что Http лишается доступа? и тем самым не может распознать звонок? Есть ли способ избежать этого? или обойти это?

Я пробовал выше, учитывая другой пост, который я нашел здесь, в SE, но, похоже, это не работает в моем случае ..

1 Ответ

0 голосов
/ 28 января 2020

Чтобы SignalR работал (и вообще для WebSockets), вы должны включить Sticky Sessions

Добавить аннотацию nginx.ingress.kubernetes.io/affinity: "cookie" к определению входящей рабочей нагрузки:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
    # Enable PROXY protocol
    service.beta.kubernetes.io/aws-load-balancer-proxy-protocol: "*"
    nginx.ingress.kubernetes.io/affinity: "cookie"
  name: coreapilocal-ingress
spec:
  rules:
  - host: coreapilocal.localhost
    http:
      paths:
      - backend:
          serviceName: coreapilocal-service
          servicePort: 80
        path: /
      - backend:
          serviceName: coreapilocal-service
          servicePort: 80
        path: /*
...