0
点赞
收藏
分享

微信扫一扫

10、基于Docker容器部署动态Agent

动态Agent

Jenkins也支持基于Cloud环境使用动态Agent
◼ Jenkins能通过“集群管理和分布式构建”插件组中插件,在远程的基础设施之上创建并运行虚拟机或容器实
例
◼ 在这些虚拟机或容器实例上运行支持JNLP或SSH协议接入Jenkins,从而为其提供分布式构建功能的临时节点
使用时,即为“动态Agent”
常用的集群管理和分布式构建插件示例
◼ Docker插件:在Docker Engine上,基于容器模板,动态创建并运行容器作为Agent节点
◼ Kubernetes:在Kubernetes集群上,基于Pod模板,动态创建并运行Pod作为Agent节点
◼ OpenStack Cloud:基于OpenStack运行动态Agent
◼ Libvirt Agents:基于libvirt服务,动态创建Xen或QEMU/KVM虚拟机作为Agent节点
◼ Amazon Elastic Container Service (ECS) / Fargate:基于Amazon EC2 Container服务运行动态Agent
◼ Azure VM Agents
◼ Alibaba Cloud ECS
◼ ……

基于Docker容器的动态Agent

基于Docker插件,Jenkins能够在指定的Docker Engine上,按需创建并运行容器作为Agent使用,并在任
务结束后,自动终止Agent容器

配置基于Docker容器的动态Agent

基于Docker容器创建和运行动态Agent的简明步骤
   ◼ 准备一台部署了Docker Engine的主机
   ◼ (远程主机)配置Docker Engine支持远程接入
      ◆Jenkins与Docker Daemon可基于SSL/TLS协议加密通信
   ◼ 在Jenkins上的节点管理中,配置Cloud环境
   ◼ 添加基于Docker的Cloud环境

设定Docker Engine接收远程请求
   ◼ 修改Docker的Unit File,在其ExecStart中添加监听的地址和端口
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2376


   ◼ 重载Unit File后,重启Docker Service
      ◆~# systemctl daemon-reload && systemctl restart docker.service
   ◼ 测试远程访问Docker Engine
      ◆~# curl -Ss docker01.magedu.com:2376/version | jq .

在Jenkins上,添加节点,配置Docker Clouds
 配置Docker Cloud细节
   ◼ Docker Host URI:目标Docker主机的URI
      ◆可通过DOCKER_HOST环境变量设置
      ◆格式:unix:///var/run/docker.sock 或tcp://127.0.0.1:2376
   ◼ Server credentials:认证到Docker Host的凭据
   ◼ 高级配置项
      ◆Docker API Version:用于指定要使用的Docker API版本,在URL中的用法为“/v${VERSION}”
      ◆Docker Hostname or IP address:在某些自动生成URL的路径中,替换为此处指定的主机名或IP地址
   ◼ Container Cap:最大允许同时运行的容器数,默认为100

而后,需要在该Docker Cloud上添加至少一个Docker Agent Template

配置过程如下
一:在jenkins agent主机上

安装docker编辑配置文件
apt-get -y install docker
编辑配置文件,更改为以下内容
vim /usr/lib/systemd/system/docker.service 
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2376 --containerd=/run/containerd/containerd.sock
[root@ubuntu2004 ~]#systemctl daemon-reload
[root@ubuntu2004 ~]#systemctl restart docker

在hosts文件中进行域名解析
vim /etc/hosts
10.0.0.102 jenkins.magedu.com

二:在jenkins master主机上

对jenkins agent所在主机进行域名解析
vim /etc/hosts
10.0.0.102 docker.magedu.com
请求agent主机的docker服务,显示version信息,表明agent的docker可以正常被请求
curl http://docker.magedu.com:2376/version
可以使用jesion格式对其美化
curl http://docker.magedu.com:2376/version | jq .

安装docker plugin插件

10、基于Docker容器部署动态Agent_Docker容器部署动态Agent

配置云节点Configure Clouds--add a new cloud

10、基于Docker容器部署动态Agent_Docker容器部署动态Agent_02

在Docker Cloud上添加jnlp Agent模板

10、基于Docker容器部署动态Agent_Docker容器部署动态Agent_03

10、基于Docker容器部署动态Agent_Docker容器部署动态Agent_04

container settings--extra hosts(到gitlab拉取代码也需要对其进行域名解析,否则会拉取失败)

10、基于Docker容器部署动态Agent_Docker容器部署动态Agent_05

10、基于Docker容器部署动态Agent_Docker容器部署动态Agent_06

10、基于Docker容器部署动态Agent_Docker容器部署动态Agent_07

在流水线作业中使用docker-dyn-jnlp-agent节点并立即构建

10、基于Docker容器部署动态Agent_Docker容器部署动态Agent_08

在Docker Cloud上添加ssh Agent模板(Docker Agent templates再添加模板add docker template)

10、基于Docker容器部署动态Agent_Docker容器部署动态Agent_09

10、基于Docker容器部署动态Agent_Docker容器部署动态Agent_10

10、基于Docker容器部署动态Agent_Docker容器部署动态Agent_11

container settings--extra hosts(到gitlab拉取代码也需要对其进行域名解析,否则会拉取失败。下拉箭头,回车输入gitlab的域名解析)

10、基于Docker容器部署动态Agent_Docker容器部署动态Agent_12

举报

相关推荐

0 条评论