[CI/CD翻译]Jenkins的WebSocket支持

603 阅读2分钟

原文链接:www.jenkins.io/blog/2020/0…

原文作者:www.jenkins.io/blog/author…

发布时间:2020年2月2日

我很高兴地报告,JEP-222已经在Jenkins周报中登陆,从2.217开始。这项改进为Jenkins带来了实验性的WebSocket支持,在连接入站代理或运行CLI时可用。WebSocket协议允许通过HTTP(S)端口进行双向、流式通信。

虽然Jenkins的许多用户可以受益,但实施这个系统对CloudBees来说特别重要,因为现代云平台上的CloudBees Core(即在Kubernetes上运行)如何配置网络。当管理员希望将一个入站(以前称为 "JNLP")的外部代理连接到Jenkins控制器,如在集群外运行的Windows虚拟机,并使用代理服务包装器,直到现在,唯一的选择是使用一个特殊的TCP端口。这个端口需要使用低级别的网络配置,向外部流量开放。例如,nginx ingress控制器的用户需要为集群中的每个Jenkins服务代理一个单独的外部端口。这样做的说明很复杂,而且很难排除故障。

使用WebSocket,在有反向代理的情况下,现在可以更简单地连接入站代理:如果HTTP(S)端口已经在提供流量,大多数代理将允许WebSocket连接,无需额外配置。WebSocket模式可以在代理配置中启用,Kubernetes插件中对基于pod的代理的支持也即将到来。你将需要一个4.0或更高版本的代理,它以通常的方式与Jenkins捆绑在一起(带有该版本的Docker镜像即将推出)。

Jenkins的另一个对反向代理用户来说很麻烦的部分是CLI。除了22号端口的SSH协议(从外部打开也很麻烦),CLI已经有能力使用HTTP(S)传输。不幸的是,用于实现这一功能的技巧使一些代理机构感到困惑,而且不具有很好的可移植性。Jenkins 2.217提供了一个新的-webSocket CLI模式,应该可以避免这些问题;同样,你需要下载一个新版本的jenkins-cli.jar来使用这个模式。

WebSocket代码已经针对Kubernetes实施的样本(包括OpenShift)进行了测试,但可能仍然存在一些错误和限制,并且尚未测试重度构建负载下代理的可扩展性。目前,请将此功能视为测试版质量,并让我们知道它的工作情况!


通过www.DeepL.com/Translator(免费版)翻译