【问题标题】:Which ingress controller should I use to support WebSocket in a AWS k8s cluster deployed by kops?在 kops 部署的 AWS k8s 集群中,我应该使用哪个入口控制器来支持 WebSocket?
【发布时间】:2019-06-03 01:08:21
【问题描述】:
我在 AWS 上通过 kops 安装了一个集群。现在我需要向外界公开一个 WebSocket 服务(启用安全性,wss://)。有不同的入口控制器,nginx、traefik、ELB、ALB。建议使用哪一个,并且:
- 易于部署和配置
- 支持http://、https://、ws://、wss://
【问题讨论】:
标签:
kubernetes
kubernetes-ingress
kops
nginx-ingress
traefik-ingress
【解决方案1】:
在我看来,这个问题是基于意见的,而且过于宽泛。请尽量避免这样的问题,因为没有一种最好的解决方案。
我能够找到大量关于 nginx 和 websockets 的资源。我没有配置此功能的生产经验,但我认为您可能会觉得这很有帮助。
NGINX 是各种 Ingress Controller 的流行选择
特点:
Websocket,它允许您对 Websocket 应用程序进行负载平衡。
SSL 服务,允许您对 HTTPS 应用程序进行负载平衡。
重写,允许您在将请求发送到应用程序之前重写请求的 URI。
Session Persistence(仅限 NGINX Plus),它保证来自同一个客户端的所有请求总是传递给同一个客户端
后端容器。
支持 JWT(仅限 NGINX Plus),这允许 NGINX Plus 通过验证 JSON Web 令牌 (JWT) 来验证请求。
nginx 最重要的部分是annotation - 它指定哪些服务是 Websocket 服务。更多关于用法和configuration. 的信息也很有用tutorial 关于nginx 入口的配置,尽管它是关于GKE 的,它可能很有用。