登录
首页 >  Golang >  Go问答

应用程序与服务器的网络通信

来源:stackoverflow

时间:2024-03-10 17:36:26 300浏览 收藏

编程并不是一个机械性的工作,而是需要有思考,有创新的工作,语法是固定的,但解决问题的思路则是依靠人的思维,这就需要我们坚持学习和更新自己的知识。今天golang学习网就整理分享《应用程序与服务器的网络通信》,文章讲解的知识点主要包括,如果你对Golang方面的知识点感兴趣,就不要错过golang学习网,在这可以对大家的知识积累有所帮助,助力开发能力的提升。

问题内容

我正在开发一个在 kubernetes 上运行的 CI/CD 工具。该应用程序将负责创建一个k8s作业对象,该对象将被视为从属以运行管道。

从属设备运行的映像完全取决于用户,因此我对它没有任何控制权,除了它与 CI/CD 应用程序在同一本地网络中运行这一事实。 p>

我的问题是;在这种情况下,如何使 CI/CD 工具和从站之间能够进行通信?

为了添加更多上下文,我想创建类似于 Jenkins 的东西。 Jenkins 与 kubernetes 插件一起在 kubernetes 上运行并创建 pod,这些 pod 被视为从属(代理)以运行管道。在从站中运行的映像完全取决于用户。从站有一个 JNLP 作为 sidecar 容器,用于建立连接。如何在 golang 或 python 中实现相同的架构?

到目前为止我做了什么?

我尝试对此进行研究,发现 Jenkins 使用套接字来建立连接。但是,为了使用套接字,我必须在两侧都有套接字;在服务器端和客户端。据我所知,Jenkins 使用我作为用户提供的图像在从属设备中使用,并且它没有有服务器端套接字。那么它是如何建立连接的呢?


解决方案


由于 Kubernetes 本身就是 Go,我认为这可以通过 Golang 解决方案轻松实现。这是一些值得我花时间研究的事情的列表,假设您将解决方案作为 Kubernetes 服务运行:

  1. 有关 Kubernetes 运算符的研究。 Operator 将帮助您轻松扩展 Kubernetes 功能。 https://github.com/operator-framework/getting-started
  2. 木筏。 Raft 是一种旨在易于理解的共识算法。如果您需要实施领导者选举,这可以用来实现诸如领导者选举之类的事情。 https://raft.github.io/
  3. Golang 拥有原生 SSH 库,因此这应该会让您使用 SSH 的想法变得非常可行。然而,我认为可能有其他选择,例如使用 RPC 在主设备和从设备之间进行通信,因为我可以想象管理不同的证书来针对从设备验证主设备可能是一场噩梦。

本篇关于《应用程序与服务器的网络通信》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>