zoukankan      html  css  js  c++  java
  • Jenkins自动化部署完整流程

    jenkins+maven+gitlab+harbor+k8s的 CI/CD

     首先需要安装jenkins,maven,gitlab,harobor,k8s等工具:

    1. jenkins安装   安装文档:https://www.cnblogs.com/momoyan/p/12770919.html
    2. maven安装    安装文档:https://blog.csdn.net/qq_38270106/article/details/97764483
    3. gitlab安装      安装文档:  https://www.cnblogs.com/momoyan/p/14033256.html
    4. harbor安装    安装文档:https://www.cnblogs.com/dalianpai/p/11800371.html
    5. k8s安装         安装文档:https://blog.csdn.net/weixin_42214548/article/details/109001157
    6. docker安装   安装文档:https://www.cnblogs.com/momoyan/p/9129200.html

    1.Jenkins配置

    安装完之后,开始配置:

    1.1.安装jenkins插件

    点击系统管理,管理插件,安装 GitHub Branch Source PluginGitlab Authentication pluginGitlab Hook PluginGitLab PluginMaven Repository Server PluginPublish Over SSHWorkspace Cleanup Plugin 这些插件

    插件下载地址:

    1.2.新建任务

    1.3.配置jenkins项目

    (1)写好描述 主要是写上项目名

     (2)配置git地址

    注:第一个红框标起来的是git地址,是从gitlab上获取的,首先登陆gitlab,如下图,从这里获取

    而第二个红框标识的证书而是需要从jenkins初始页面凭据添加的,首先点击jenkins首页的凭据,依次点击

     之后点击

     类型选择:

     之后设置成如图样子,注意username要和登陆jenkins的用户一样,证书生成也不多说,在jenkins本机生成,贴上去即可,ID选项不用管,之后会自动生成一串ID:

     设置好凭据后,回到创建jenkins项目的界面,选择:

     如果出现大片红色报错,没关系,那一定是gitlab没有配置jenkins的密钥,去配置一下,首先打开gitlab,点到相应项目中,再点击图中位置,填写好.ssh/id.rsa.pub中的内容即可:

     再回到jenkins看看是否可以了呢,可以了就不会报一片红~  继续下一步

    (3)构建触发器选择基本默认,有别的需要可以自定义:

    这个选项中的url之后会用到,需要配置到gitlab~

     (4)接下来就是maven打包这里,配置pom.xml的绝对路径,然后输入打包命令,将会自动完成:

     (5) 接下来就是配置建立后的步骤:

     添加shell,完成要完成的动作(根据自己需求来)

    HOST="192.168.147.138"
    
    API_PORT=80
    
    IMAGE_NAME="192.168.147.138/docker-tomcat/tomcat:v$BUILD_NUMBER"
    
    docker build -t $IMAGE_NAME .
    
    docker push %IMAGE_NAME

    sed -i "s/BUILD_NUMBER/$BUILD_NUMBER/g" docker-tomcat.yaml

     再添加一段ssh,通过这个把生成的包或者文件传到master并执行命令:

     

    配置好点击保存,这样,jenkins就算完成了,接下来去到gitlab看下:

    点到相应的项目中,配置url,这个url在jenkins配置的时候出现过,复制过来即可,保存

     配置好以后,拉到底下,我们测试一下:

     出现这样说明配置成功了:

     这样子整套CI/CD流程也就做完了,提交代码后会自动打包部署。

    测试:

     写博客的这个项目我并没有保存,毕竟也是公司环境,所以我拿之前配置好的一个项目(项目名:docker)做下测试,记录下成果:

    首先我提交代码,看jenkins变化:

    部署已经成功了,看下部署过程:

     

     部署已经完成了,去机器上看下:

       kubectl get po

     下图可以看到这个pod镜像是刚打出来的,v33版本

       kubectl describe pod ng-364889701-m09zn

     去harbor看下镜像,是有的:

    版本回滚

    那么我们发现一个问题,cicd是做好了,可是如果版本有问题,怎样回滚呢,其实也是很好解决的,可以用k8s自己的rolling update机制去完成,不但可以回滚版本,还可以弹性伸缩pod数量。

    首先先试一下回滚,查看一下之前的版本:

    kubectl rollout history deployment ng

     让我们用一条命令回滚到上一版本:

    kubectl rollout undo deployment ng

    看下现在pod用的是否是上个版本的镜像:

    kubectl get po

     之前我们是v33版本,回滚到v32版本也是成功了,接下来说下怎样回滚到指定版本:

      kubectl rollout history deployment ng

     通过一条   

    kubectl rollout undo deployment deploy名 --to-revision=2

    指定版本前方所对应的数字即可。

    弹性伸缩

    接下来说如何弹性伸缩:

    手动伸缩通过命令:

    kubectl scale deployment deploy名 --replicas=2
    例如:
    kubectl scale deployment ng --replicas=2

    设定replicas数量即可,如图:

  • 相关阅读:
    git常用命令及多人协同开发及遇到的问题
    LightOJ
    LightOJ
    LightOJ
    LightOJ
    LightOJ
    LightOJ
    LightOJ
    LightOJ
    Codeforces Round #604 (Div. 2) E. Beautiful Mirrors
  • 原文地址:https://www.cnblogs.com/momoyan/p/14094853.html
Copyright © 2011-2022 走看看