Jenkins + DockerSwarm 实现弹性伸缩持续集成 发布日期:2020-03-31 14:36:37     博主推荐★

1、jenkins配置https://blog.ahamu.cn/blog/detail.html?id=275

2、swarm基础知识https://blog.ahamu.cn/blog/detail.html?id=328

3、swarm准备

    在几台服务器安装Docker,安装方式参考Centos7上安装docker

    所有节点防火墙开放端口2377,主节点与备选主节点防火墙额外开放端口9999

    开启主节点与备选主节点上docker的远程调用端口

查看配置文件路径systemctl show --property=FragmentPath docker // FragmentPath=/usr/lib/systemd/system/docker.service
编辑配置文件内容vi /usr/lib/systemd/system/docker.service
修改对应项ExecStart=/usr/bin/dockerd => ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock -H tcp://0.0.0.0:9999
重新加载配置文件,重启docker systemctl daemon-reloadsystemctl restart docker

4、设置Jenkins

    【系统管理】-【插件管理】-【可选插件】安装 Docker Swarm Plugin 插件

    【系统管理】-【全局安全配置】-【代理】

    防火墙没有开放所有端口,这里只能指定端口8081,否者jenkins master节点与运行在 Swarm 上的slave节点无法通信

    【系统管理】-【系统设置】-【云】


    其中Docker swarm api url 为master1的网络地址和之前设置的docker的远程调用端口
    由于没有配置调用校验,所以不能使用默认的2375端口,改用不常用的端口9999,否则会被恶意调用,将其用来运行挖矿等恶意程序

    Docker Agent template 为jenkins slave节点的模板
    模板可以配置多个,其中Label为标签
    在进行构建的时候指定运行节点为 SWARM-NODE-NODEJS 即可通过 Image 指定的镜像启动slave节点

    Env 为环境变量
    格式为 "key1=value1 key2=value2" 

    Host Binds 为文件映射配置
    配置 /var/run/docker.sock:/var/run/docker.sock 使容器中的docker client 与 宿主机上的 docker server正确通信


5、使用示例

    新建一个自由风格的任务,取名test,勾选 限制项目运行的节点,输入上面的Label   SWARM-NODE-NODEJS:DOCKER

    在下面构建步骤中勾选执行shell,输入 "node -v" "docker version" 方便查看运行效果

最后点击【应用】【保存】

回到首页运行该构建任务

镜像最小的至少800M,这是最大的缺点,但是除了第一次启动耗费时间很长,其他还是很快的
除去下载镜像的时间,大概一到两分钟之后,slave节点启动

在master1上查看Swarm中的任务状态,可以看见一个jenkins slave运行

同样jenkin也开始显示构建状态

查看控制台输出


6、总结

    这里所介绍的只是整个持续集成中的弹性伸缩,如果需要完成完整的持续集成流程,需要继续配置webhook与构建后操作,实现自动测试编译发布,这里不作详述。

    没有构建任务时,只需要保存主节点在线。一旦构建的webhook被触发,主节点会去Swarm里面启动子节点,构建任务完成后,子节点被删掉,只保持最少的节点在线,灵活使用资源。



博文地址:https://blog.ahamu.cn/blog/detail.html?id=329
   
推荐文章
  • 1
    phper转java记录篇-spring boot
    2020/06/10
  • 2
    thinkphp5.0使用路由之后,post请求的
    2020/05/19
  • 3
    springboot单元测试aop失效
    2020/05/15
  • 4
    脑海中的JVM
    2020/05/12
  • 5
    IDEA搜索插件时显示search results
    2020/05/12
  • 6
    spring boot 配置加载源码查找
    2020/04/20
  • 7
    通过javap命令分析java汇编指令
    2020/04/16
  • 8
    IDEA小知识:查看JVM内存使用情况的步骤
    2020/04/16
  • 9
    springboot-加载自定义的properti
    2020/04/14
  • 10
    Jenkins执行shell脚本无法启动子进程解决
    2020/04/03
  • 11
    mac idea激活找专业的
    2020/04/02
  • 12
    Jenkins + DockerSwarm 实现弹
    2020/03/31
  • 13
    mac swarm学习过程
    2020/03/31
  • 14
    spring cloud
    2020/03/18
  • 15
    JAVA开发中遇到的问题记录002
    2020/03/12
  • 16
    JAVA开发中遇到的问题记录001
    2020/03/07
  • 17
    php -i查看信息
    2020/02/23
  • 18
    phpStorm中使用xdebug工具调试dock
    2019/12/09
  • 19
    讲的比较好的B+树执行原理的文章
    2019/12/09
  • 20
    如何用Dockerfile构建镜像
    2019/12/09
最喜标签
NYOJ 面试 AJAX ping CentOS 灰度算法 YII2