持续集成和持续部署环境搭建

Gitlab仓库搭建

    1.yum install gitlab-ce

    2.grep "^[a-z]"  /etc/gitlab/gitlab.rb

    3. external_url "http://192.168.10.30"  标识服务器的IP地址

    4.修改完配置文件执行操作    gitlab-ctl   reconfigure

    5. gitlab-ctl start /  stop / restart

    6. 打开web页面设置登陆密码

    7.默认的用户名为root

Jenkins的安装和部署

   1.jenkins的运行依赖java运行环境 必须先安装好java

   2.配置好jenkins的官方repo

   3. yum install java

扫描二维码关注公众号,回复: 2842025 查看本文章

   4.yum install jenkins

   5.首次登陆需要打开/var/lib/jenkins/secrets/initialAdminPassword查看默认密码

   6.jenkins插件

      1.Gitlab                           从gitlab中获取代码

      2.Gitlab Hook Plugin       gitlab触发jenkins构建项目插件

Jenkins免密码从Gitlab服务器中拉取代码

   1.在jenkins服务器上生产SSH密钥对   执行 ssh-keygen

   2.把jenkins服务器上的ssh公钥拷贝到Gitlab服务器上

        1.针对所有项目设置ssh public key

      2.针对单个项目设置ssh public key

    

  3.测试免密码使用git从Gitlab远程仓库拉取代码     git clone [email protected]:root2/myweb.git

  4.把之前在服务器生成的ssh私钥文件拷贝到jenkins服务器当中

  

5.jenkins不能拉取空仓库    至少包含README.md文件      否则构建任务的时候会提示失败

6.构建成功输出控制台信息

使用jenkins把从gitlab上拉取的代码远程拷贝到web服务器上

   1.建立jenkins服务器和web服务器的免密码远程连接登录   ssh-copy-id 192.168.74.130

    创建新的任务 此次任务全部使用shell脚本来创建 不再需要配置源码管理  直接配置构建选项

    使用shell脚本的方式需要注意用户的权限问题  因为jenkins程序默认使用的是jenkins这个普通用户

       1.jenkins用户执行脚本的权限

       2.jenkins用户从gitlab中拉取代码的权限

       3.jenkins用户把代码远程拷贝到web服务器的权限

    解决方案:

       1.把jenkins的启动用户改成root

       2.给普通用户设置相应的权限

   

 

 sonar安装使用

    一个用于代码质量管理的开放平台,通过插件机制  可以集成不同的测试工具,代码分析工具 ,持续集成工具.

    安装好sonar后通过安装jenkins插件SonarQube Plugin使得jenkins关联到sonar scanner

HAproxy实现include配置文件

   通过自带参数 -f 实现配置文件导入功能,可以按照业务配置不同的 XX.cfg文件,然后在haproxy服务启动脚本里面进行配置即可

   避免把所有的配置信息都写在一个主配置文件中 而使得主配置文件因配置项过多而后期难以进行维护

    # cat /usr/lib/systemd/system/haproxy.service 

   [Unit]
    Description=HAProxy Load Balancer  After=syslog.target network.target  [Service]  EnvironmentFile=/etc/sysconfig/haproxy  ExecStart=/usr/sbin/haproxy-systemd-wrapper -f /etc/haproxy/haproxy.cfg -f /etc/haproxy/pubcfg -p /run/haproxy.pid $OPTIONS  ExecReload=/bin/kill -USR2 $MAINPID

    #创建配置文件目录

      # mkdir /etc/haproxy/pubcfg

      # vi /etc/haproxy/pubcfg/haproxy1.cfg 

    重新加载配置文件:

     # systemctl  reload  haproxy 

 HAproxy实现后端服务器动态添加和删除

     通过haproxy动态增减web集群中的主机,打开haproxy的主机在线维护功能,主要原理是haproxy监听本地socket文件

     1.修改haproxy主配置文件

        stats socket /var/lib/haproxy/haproxy.sock mode 600 level admin   #设置socket文件路径,权限为600级别为admin,还有其他级别,但是动态添加主机需要admin权限

     2.创建保存socket文件的目录

        mkdir /var/lib/haproxy

     3./etc/init.d/haproxy restart       ls/var/lib/haproxy/haproxy.socket

     4.安装socat命令,socat是和socket通信的命令  

        yum install socat

     5.echo "disable server web_port/web1" | socat stdio /var/lib/haproxy/haproxy.socket        #关闭指定backend下的某台web服务器

     6.echo "enable server web_port/web1" | socat stdio /var/lib/haproxy/haproxy.socket

     7.haproxy配置如下

     listen web_port
       bind :80
       mode http
       balance leastconn
       server web1 172.20.127.177:22 check
       server web2 172.20.127.178:22 check

     8.web_port 表示在haproxy配置文件中listen对应的名称

     9.web1   表示在haproxy配置文件中对应的每个后端主机设置的名称  可以把这个这个名称设置成IP地址

CI和CD概念

  CI
    1.开发提交代码到GitLib代码仓库
    2.(webhook)对应的监控工具监控推送新代码事件的发生
    3.使用CI工具(jenkins)对代码进行静态分析 打包前测试
    4.(调用构建工具)对代码进行打包
    5.打包后测试(单元测试 集成测试)

  CD
    1.开发人员提交代码和开发配套的dockerfile把这两部分内容都提交到gitlab中
    2.jenkins首先对提交代码进行测试 构建成应用程序包
    3.jenkins调用docker build 通过dockerfile和程序包打包成docker镜像
    4.把docker镜像推送到docker 镜像仓库中
    5.开发人员开发k8s清单文件mainfest模板
    6.使用ansible的模板引擎对清单模板文件进行渲染
    7.ansible把渲染后的清单文件提交给k8s k8s根据清单创建Pod

猜你喜欢

转载自www.cnblogs.com/yxh168/p/9491307.html