• 02 使用jenkins实现K8s持续集成


    1.项目架构的代码仓库使用gitlab托管

    架构描述我不打算用过多文字描述了,来我们一起直接看图吧....
    
    • 1

    二.将测试代码上传到gitlab

    1.注册gitlab账户

    此处使用本地搭建仓库
    
    • 1

    2.创建仓库名称为"idiaoyan"

    如下图所示,安装图解方式创建相应的用户即可。
    
    • 1

    在这里插入图片描述

    3.将本地代码上传到"idiaoyan"仓库在这里插入图片描述

    #(1)解压静态文件
    上传代码到/data/code下
    [root@master code]# unzip yiliaoqixie
    #(2)Git本地提交代码到本地仓库
    cd /data/code
    git init
    git config --global user.name "liuyan"
    git config --global user.email "liuyan@qq.com"
    git config --global credential.helper store  #后面拉取不要密码
    mv yiliaoqixie/* idiaoyan/
    cd idiaoyan/
    #(3)git推送代码到gitlab的远程仓库
    git add .
    git commit -m "add code"
    git push -u origin master
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    三.提交dockerfile文件

    1.编写dockerfile

    #(1)编写dockerfile内容如下
    cat > Dockerfile <<EOF
    FROM idy.com/harbor/alpine:latest
    
    LABEL auther="idy.com"
    
    LABEL school="oldboyedu" \
          class="linux" \
          address="北京,上海,深圳"
    
    RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && \
        apk update && \
        apk add nginx && \
        rm -rf /var/cache/ && \
        rm -rf /usr/share/nginx/html/*
    
    # ADD idiaoyan.tar.gz /usr/share/nginx/html/
    ADD . /usr/share/nginx/html/
    
    EXPOSE 80
    
    COPY default.conf /etc/nginx/http.d/default.conf
    
    CMD ["nginx","-g","daemon off;"]
    EOF
    #(2)本地测试编译
    [root@master idiaoyan]# docker build -t yiliao:v1 .
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    2.启动容器测试可用性

    [root@master idiaoyan]# docker container run -itdp 80:80 yiliao:v1
    
    • 1

    在这里插入图片描述

    3.推送dockerfile文件到仓库中

    [root@master idiaoyan]# git add Dockerfile
    [root@master idiaoyan]# git commit -m "add Dockerfile"
    [master 6d3fc7b] add Dockerfile
     1 file changed, 16 insertions(+)
     create mode 100644 Dockerfile
    [root@master idiaoyan]# git push -u origin master
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    4.部署Jenkins并配置项目源码管理(gitlab环境)

    1.部署jenkins服务

    Jenkins 快速部署

    1.1上传Jenkins 相关文件

    上传以下文件
    在这里插入图片描述

    1.2 部署jenkins 服务

    cd /data/jenkins
    jenkins.gz  && mv jenkins/* ./
    unzip jenkins.tar.zip
    docker load -i jenkins.tar
    
    #直接启动:
    docker run -d --name myjenkins -p 8080:8080 -p 50000:50000 cr.idiaoyan.cn/public/jenkins:2.319.2-b17bf827
    #docker-compose.yml启动
    #可能遇到问题,检查对象的目录文件
    version: '3.8'
    services:
      myjenkins:
        container_name: myjenkins
        hostname: myjenkins
        image: cr.idiaoyan.cn/public/jenkins:2.319.2-b17bf827
        restart: unless-stopped
        ports:
          - 8080:8080
          - 50000:50000
        environment:
          - TZ=CST-8
        volumes:
          - /data/jenkins/mount/jenkins.yml:/var/jenkins_home/jenkins.yml  
          - /data/jenkins/mount/Dockerfile_openresty:/var/jenkins_home/tools/Dockerfile_openresty
          - /usr/bin/docker:/usr/bin/docker
          - /run/docker.sock:/run/docker.sock
          - /data/jenkins/mount/workspace/:/var/jenkins_home/workspace/
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    在这里插入图片描述

    1.2 创建项目

    在这里插入图片描述

    1.2.1 添加项目的存储库RUL

    在上一步完成之后,会弹出如下图所示对话框,依次点击"源码管理" ---> "Git" ---> "Repositories" ---> ”Repository URL"中添加项目的存储库RUL
    
    • 1

    在这里插入图片描述

    1.2.2 添加凭证(Credentials)信息

    依次点击上一步Credentials的"添加"按钮 ---> "jenkins",
    就会弹出如下图所示的对话框,然后根据你的账号密码登录即可。
    
    • 1
    • 2

    在这里插入图片描述

    1.2.3 配置构建指令

    如下图所示:
    依次点击"构建" ---> "增加构建步骤" ---> 选择"执行shell" ---> "保存"
    • 1
    • 2

    在这里插入图片描述

    1.2.4 点击立即构建

    如下图所示,点击"立即构建",就可以成功构建当前的"idiaoyan"这个工程了。
    
    • 1

    在这里插入图片描述

    1.2.5 查看控制台输出

    在这里插入图片描述

    5.使用Jenkins实现自动构建镜像并推送到私有仓库

    1.重新编辑"执行shell的命令"

    #jenkins 认证harbor仓库
    [root@jenkins jenkins]# docker login idy.com
    Username (admin): admin
    Password: idy123456
    Login Succeeded
    
    • 1
    • 2
    • 3
    • 4
    • 5
    docker build -t idy.com/harbor/yiliao:$version .
    docker image push  dy.com/harbor/yiliao:$version
    
    • 1
    • 2

    在这里插入图片描述

    2.添加字符参数

    如下图所示:
    依次点击"General" ---> "参数化构建过程" ---> "添加参数" ---> 选择"字符参数" ---> 填写"version"变量即可。
    
    • 1
    • 2

    在这里插入图片描述
    在这里插入图片描述

    3.开始传入参数构建

    如上图所示,依次点击"Build with Parameters" ---> 输入"version"变量的版本信息 ---> "开始构建"。
    如下图所示,构建完成之后,我们可以依次点击"#2"的下拉菜单 ---> 选择查看"控制台输出"的信息。
    
    • 1
    • 2

    在这里插入图片描述

    4.构建完成后查看镜像是否生成

    如下图所示,我们查看了"控制台输出",很明显能看到镜像推送成功了,而且在存储库的确有相关的tag记录哟。
    温馨提示:
    	我们假设私有仓库的存储卷路径为"$volume",则其对应的"yiliao"项目的tag存储为位于"$volume/docker/registry/v2/repositories/yiliao/_manifests/ta
    gs/"
    
    • 1
    • 2
    • 3
    • 4

    4.1 使用 jenkins pipline 实现 拉取,构建,推送

    后面jenkins CICD均有pipline 完成,以下是pipline 脚本,其中添加字符参数与上方一至

    pipeline{
        agent any
    	// 参数化构建
        parameters {
        //string(defaultValue: '', description: '回滚到指定的版本,这里填入时间戳', name: 'rollback_version', trim: true)
    	string(defaultValue: '', description: '回滚到指定的版本,这里填入时间戳', name: 'version', trim: true)
    	}	
        // 丢弃旧的构建
    	options {
    		buildDiscarder(logRotator(artifactDaysToKeepStr: '', artifactNumToKeepStr: '', daysToKeepStr: '15', numToKeepStr: '20'))
    	}	
    	// 定义环境变量
    	 environment {
    	    //gitlab相关信息	
    		harbor_address="idy.com"
    		work_space_yiliao="/var/jenkins_home/workspace/test-yiliao"
    	 }	
        stages("Build") {
    		stage('拉取代码'){
    		steps {
    			script{
    			sh "cd ${work_space_yiliao}  &&  rm -r -f idiaoyan"
    			//拉取代码的方式:ssh或者http,根据项目实际情况选择
    			sh "git clone http://192.168.221.143:9000/liuyan/idiaoyan.git idiaoyan"
    				}
    			}
    		
    		}
    			
    		stage('构建镜像'){
    		steps {
    			script{
    			sh "cd ${work_space_yiliao}/idiaoyan && docker build -t idy.com/harbor/yiliao:$version ."	       
    			//sh "docker image push  idy.com/harbor/yiliao:$version"	  
    				}
    			}
    		
    		}	
    			
    		stage('推送镜像'){
    		steps {
    			script{   
    			sh "docker image push  idy.com/harbor/yiliao:$version"	  
    				}
    			}
    		
    		}	
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49

    4.2 查看推送结果

    • 查看harbor
      在这里插入图片描述

    • 查看Jenkins 推送结果
      在这里插入图片描述

    5. k8s 持续集成

    做到这里,发现自己K8s 知识很乱很不系统。学完K8s再继续编辑这部分;
    其实简单的来做就是把K8S 命令(命令式)加入jenkins pipline 中

  • 相关阅读:
    ARM 版 OpenEuler 22.03 部署 KubeSphere v3.4.0 不完全指南
    【数字IC设计/FPGA】FIFO与流控机制
    PS占用CPU太高,导致电脑异常卡顿
    Linux进程控制(2)
    kubeadm搭建kubernetes(k8s)
    利用completablefuture异步执行并发任务,并堵塞,全部完成后获取返回结果。
    第15节-PhotoShop基础课程-吸取工具组
    Go基础4
    上交所行情文件解析之mktdt04
    企业为啥邀请媒体做专访?有哪些注意事项?
  • 原文地址:https://blog.csdn.net/admin321123/article/details/127967407