【问题标题】:How to add websocket support to an ingress resource in Kubernetes on IBM Bluemix?如何在 IBM Bluemix 上的 Kubernetes 中向入口资源添加 websocket 支持?
【发布时间】:2017-12-15 06:03:26
【问题描述】:

当客户端尝试通过wss:// 请求连接我们的入口定义端点时,应用程序返回 400 错误请求,根据 socket.io 文档,这是由于 nginx 等负载平衡代理删除了丢失的标头。

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: my-ingress
  annotations:
    nginx.org/websocket-services: service-name
spec:
  tls:
    - hosts:
        - www.myhost.com
  rules:
    - host: www.myhost.com
      http:
        paths:
          - path: /
            backend:
              serviceName: service-name
              servicePort: 80

从 IBM 提供的入口控制器中的日志来看,它似乎是这个 nginx ingress controller 的一个分支。这表示注释 nginx.org/websocket-services 通过向生成的 nginx conf 添加指令以传递所需的标头来增加对 websockets 的支持。我们已经按照上述方法进行了尝试,但无济于事。

有没有人成功地使这个注释工作? 添加到生成的 nginx conf 的任何解决方法?

是否有任何 IBM 人员知道此功能是否是有意从分支中删除的?如果有什么方法可以在 IBM 版本的 Kubernetes 中添加对 websockets 的支持?

【问题讨论】:

    标签: nginx websocket ibm-cloud kubernetes


    【解决方案1】:

    目前不支持 Websockets,我们正在努力添加它,当它可用时我会在这里更新。

    谢谢

    编辑:Websocket支持在所有地区都可用,它的注释是:

      annotations:
        ingress.bluemix.net/websocket-services: service-name
    

    【讨论】:

    • 感谢您的快速回复。如果套接字不可用,我们可以回退到轮询,但是使用多个应用程序实例这样做需要sticky sessions/session affinity。知道当前是否支持吗?
    • 此外,有关时间范围的任何指示都将对我们非常有帮助 - 即您是否计划在今年、本季度、本月等添加此功能?
    • 我不能承诺任何给定的时间范围,但是编码已经完成,我们正在努力验证和发布 websockets,所以在这些时间范围的较短端。坏消息是粘性会话支持与 websockets 在同一个版本中,所以现在切换到轮询对你没有帮助。
    • 很抱歉响应延迟,但目前所有地区都提供 websocket 支持。它的注释是:ingress.bluemix.net/websocket-services:
    • 谢谢,成功了。不得不手动删除 ingress-ctl 副本集,因为由于某种原因,它引用了比部署定义更旧的图像。同样对于其他想知道的人 - 要使用具有多个实例的套接字,您需要添加带有注释的粘性会话:ingress.bluemix.net/sticky-cookie-services: serviceName=my-service name=cookie-name
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-25
    • 1970-01-01
    • 2020-01-23
    • 2020-08-15
    • 2019-04-09
    • 2017-11-19
    • 1970-01-01
    相关资源
    最近更新 更多