Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go 同一网络中应用程序和服务器之间的通信_Go_Kubernetes_Continuous Integration_Circleci - Fatal编程技术网

Go 同一网络中应用程序和服务器之间的通信

Go 同一网络中应用程序和服务器之间的通信,go,kubernetes,continuous-integration,circleci,Go,Kubernetes,Continuous Integration,Circleci,我正在开发一个将在kubernetes上运行的CI/CD工具。应用程序将负责创建一个k8s作业对象,该对象将被视为从属对象,以便运行管道 从映像的运行完全取决于用户,因此我对它没有任何控制权,除了它将在与CI/CD应用程序相同的本地网络中运行之外 我的问题是,;在这种情况下,如何使CI/CD工具和从机之间的通信成为可能 为了增加更多的上下文,我想创建一些类似于Jenkins的东西。Jenkins与kubernetes插件一起在kubernetes上运行,并创建作为从属(代理)处理的pod,以便运

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

从映像的运行完全取决于用户,因此我对它没有任何控制权,除了它将在与CI/CD应用程序相同的本地网络中运行之外

我的问题是,;在这种情况下,如何使CI/CD工具和从机之间的通信成为可能

为了增加更多的上下文,我想创建一些类似于Jenkins的东西。Jenkins与kubernetes插件一起在kubernetes上运行,并创建作为从属(代理)处理的pod,以便运行管道。在从机中运行的映像完全由用户决定。从机有一个JNLP作为侧车容器,用于建立连接。如何在golang或python中实现相同的体系结构

到目前为止我做了什么?


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

由于Kubernetes是原生Go,我认为这可以通过Golang解决方案轻松实现。下面列出了一些值得研究的问题,假设您将解决方案作为Kubernetes服务运行,我可以开箱即用地思考这些问题:

  • 关于Kubernetes算子的研究。操作员将帮助您轻松扩展Kubernetes功能
  • 木筏。Raft是一种易于理解的一致算法。这可以用来实现领导人选举之类的事情,以防您遇到需要实施领导人选举的情况
  • Golang有本地SSH库,因此这应该使您使用SSH的想法非常可行。一、 然而,我认为可能会有其他选择,比如使用RPC在主服务器和从服务器之间进行通信,因为我可以想象,管理不同的证书来验证主服务器和从服务器之间的通信可能是一场噩梦