繁体   English   中英

如何通过远程Kubernetes安装将自定义Docker容器部署为Jenkins从站?

[英]How to deploy custom Docker containers as Jenkins slaves from a remote Kubernetes installation?

使用Kubernetes插件: https ://wiki.jenkins.io/display/JENKINS/Kubernetes+Plugin

我阅读的大多数示例都描述了通过Kubernetes安装在同一环境/机器上部署Jenkins主服务器。 但是出于测试目的,我在一个单独的VM上运行了一个minikube环境(即不在Jenkins master运行的同一台机器上)。 在完成一些端口转发,按照本博客所述设置证书并配置Kubernetes云之后,我可以成功连接到VM。 另外,如果我尝试部署默认的JNLP容器,则将部署该从属容器,并且我的作业将在其中成功运行。

因此,现在我想在单个Pod中部署2个自定义容器,每个容器运行各自的应用程序(使用Flask的基本Web服务),这会将HTTP帖子从前端容器上的端口5001发送到后端容器5002。 我主要只是尝试在Jenkins全局配置中的Web UI中对此进行设置,但我尚未尝试在Jenkinsfile中设置pod模板。

有一点背景是,我希望每次触发新工作时都能部署一个单独的隔离测试环境。 我想让Kubernetes部署一个包含前端和后端容器的单独的Pod,然后对其交互进行测试。 我希望将这些Pod部署为Jenkins的奴隶,以便为每个构建提供正确的隔离环境以实现此目标。

以下是我尝试过的初始Kubernetes插件配置的屏幕截图。 是否需要公开端口50000并在每个容器中运行JNLP进程才能连接到主服务器?

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明

我发现Jenkins默认情况下会部署JNLP从站来驱动Pod中的JNLP连接,因此我的pod中将有3个容器:JNLP Slave,前端和后端。 可以在以下位置找到有关该JNLP映像的信息: https : //github.com/jenkinsci/docker-jnlp-slave 这个从属容器的默认配置不能完全满足我的要求,但是可以处理与Jenkins主服务器的连接。 因此,如文档中所述,我可能会对其进行修改或用新容器覆盖它,以推动将测试分发到前端和后端容器。

设置工作目录时也要当心。 我指的是我的应用程序的python文件所在的位置,它们正在被覆盖。 我假设这是Jenkins工作区目录,并且将覆盖那里的所有内容。

我还删除了该容器的命令,因为我的Docker镜像已经定义了一些初始命令,因此前端和后端容器不需要任何其他操作。

以下是工作容器配置:

前端容器配置 前端容器端口

后端(拦截器)容器配置 后端(拦截器)端口

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM