• k8s--基础--27.3--企业级devops平台--jenkins的CI/CD


    k8s–基础–27.3–企业级devops平台–jenkins的CI/CD


    说明

    这个实验没有做完,可以不要看
    
    • 1

    1、安装插件

    安装之后选择重新启动jenkins

    1.1、kubernetes插件

    kubernetes
    
    • 1

    在这里插入图片描述

    2、配置jenkins连接到我们的k8s集群

    2.1、新增云

    点击jenkins管理---->节点和云管理---->新增一个云,在下拉菜单中选择kubernets并添加

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

    在这里插入图片描述

    2.2、填写云kubernetes配置内容和测试

    http://192.168.187.154:6443 
    jenkins-k8s
    http://jenkins-service.jenkins-k8s.svc.cluster.local:8080
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    注意:

    1. Name值任意添加
    2. Kubernetes URL值添加K8S apiserver连接地址和端口
    3. 点击连接测试,如果显示Connection test successful,说明测试成功,Jenkins可以和k8s进行通过

    2.3、测试jenkins成功后就保存

    在这里插入图片描述

    3、配置pod-template

    3.1、配置pod template

    在这里插入图片描述

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

    jenkins-k8s
    test
    
    • 1
    • 2

    3.2、在上面的pod template下添加容器

    在这里插入图片描述

    jnlp
    cnych/jenkins:jnlp
    /home/jenkins
    
    • 1
    • 2
    • 3

    3.3、给上面的pod 中添加Service Account

    在这里插入图片描述

    jenkins-k8s-sa
    
    • 1

    在Service Account处输入jenkins-k8s-sa,这个sa就是我们最开始安装jenkins时的sa

    3.4、给上面的pod template添加卷

    添加卷------>选择Host Path Volume

    /var/run/docker.sock
    /root/.kube
    /home/jenkins/.kube
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    上面配置好之后,应用------>保存

    4、添加自己的dockerhub凭据

    4.1、创建dockerhub账号

    https://hub.docker.com/
    
    • 1

    4.2、添加自己的dockerhub凭据

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

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

    username:920786312 
    password:xxxx
    ID:dockerhub
    
    
    • 1
    • 2
    • 3
    • 4

    5、拷贝k8s权限

    在master上操作

    scp  -r /root/.kube/  node1:/root/
    
    • 1

    6、测试通过Jenkins部署k8s

    6.1、创建Pipeline任务

    在这里插入图片描述

    在这里插入图片描述

    6.2、填写流水线脚本

    node('testhan') {
        stage('阶段:克隆') {
            echo "阶段:克隆"
    		//这是开源的代码位置
            git url: "https://gitee.com/DanShenGuiZu/jenkins-sample.git"
            script {
    			//获取分支标签,作为镜像的版本
                build_tag = sh(returnStdout: true, script: 'git rev-parse --short HEAD').trim()
            }
        }
        stage('阶段:测试') {
          echo "阶段:测试"
        }
        stage('阶段:构建镜像') {
            echo "阶段:构建镜像"
    		// 920786312:hub.docker.com的账号
            sh "docker build -t 920786312/jenkins-demo:${build_tag} ."
        }
        stage('阶段:推送镜像') {
            echo "阶段:推送镜像"
    		//dockerhub是我们的凭证id,也就是我们配置的dockerhub的凭证
            withCredentials([usernamePassword(credentialsId: 'dockerhub', passwordVariable: 'dockerHubPassword', usernameVariable: 'dockerHubUser')]) {
    			// 登陆dockerhub
                sh "docker login -u ${dockerHubUser} -p ${dockerHubPassword}"
    			// 推送镜像
                sh "docker push 920786312/jenkins-demo:${build_tag}"
            }
        }
        stage('阶段:部署到开发环境') {
            echo "阶段:部署到开发环境"
    		//替换标签
    		sh "sed -i 's//${build_tag}/' k8s-dev.yaml"
    		//替换分支名称
            sh "sed -i 's//${env.BRANCH_NAME}/' k8s-dev.yaml"
    		// sh "bash running-devlopment.sh"
            sh "kubectl apply -f k8s-dev.yaml  --validate=false"
    	}	
    	stage('阶段:部署到UAT环境') {
    		def userInput = input(
                id: 'userInput',
                message: '是否部署到UAT环境?',
                parameters: [
                    [
                        $class: 'ChoiceParameterDefinition',
                        choices: "YES\nNO",
                        name: 'Env'
                    ]
                ]
            )
            echo "是否部署到UAT环境:${userInput}"
            if (userInput == "YES") {
    			//替换标签和分支名称
                sh "sed -i 's//${build_tag}/' k8s-qa.yaml"
                sh "sed -i 's//${env.BRANCH_NAME}/' k8s-qa.yaml"
    			// sh "bash running-qa.sh"
    			//部署
                sh "kubectl apply -f k8s-qa.yaml --validate=false"
                sh "sleep 6"
                sh "kubectl get pods -n qa"
            } else {
    			//退出
            }
        }
    	stage('阶段:部署到生产环境') {	
    		def userInput = input(
                id: 'userInput',
                message: '是否部署到生产环境?',
                parameters: [
                    [
                        $class: 'ChoiceParameterDefinition',
                        choices: "YES\nNO",
                        name: 'Env'
                    ]
                ]
            )
            echo "是否部署到生产环境:${userInput}"
            if (userInput == "YES") {
                sh "sed -i 's//${build_tag}/' k8s-prod.yaml"
                sh "sed -i 's//${env.BRANCH_NAME}/' k8s-prod.yaml"
    //            sh "bash running-production.sh"
                sh "cat k8s-prod.yaml"
                sh "kubectl apply -f k8s-prod.yaml --record --validate=false"
            }
        }
    }
    
    • 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
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85

    6.2.1、脚本说明–创建所需要的名称空间

    kubectl create ns devlopment
    kubectl create ns qatest 
    kubectl create ns production
    
    • 1
    • 2
    • 3

    在这里插入图片描述

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

    6.2.2、脚本说明–脚本替换名称说明

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

    注意:代码里面的xiaochao都要改为920786312

    7、测试结果

  • 相关阅读:
    JavaWeb(Maven的安装,配置,常用命令 IDEA配置,创建,发布Maven)
    【PostgreSQL内核学习(十四)—— (PortalRunMulti 和 PortalRunUtility)】
    操作系统 day08(进程通信)
    argmin是什么意思
    KEIL5 .33 调试M33单片机经常崩溃
    vue微前端系统的搭建
    分布式一致性算法Raft-理论篇
    java毕业设计单位职工房产管理Mybatis+系统+数据库+调试部署
    conda安装与镜像源配置
    echarts配合google地图,并自定义google地图的样式
  • 原文地址:https://blog.csdn.net/zhou920786312/article/details/126244516