Jenkins动态Salve调度其他集群Docker in Docker

集群使用containerd 作为运行时

调度到test k8s集群构建


test k8s 集群必须要存在这个devops命名空间

docker in docker 模版

pods 模版

yaml 复制代码
apiVersion: v1
kind: Pod
metadata:
spec:
  volumes:
  - name: certs-ca
    emptyDir: {}
  - name: certs-client
    emptyDir: {}
  - name: mvn-cache
    persistentVolumeClaim:
      claimName: mvn-cache-pvc
  containers:
  - name: dind
    image: docker:24.0-dind
    securityContext:
      privileged: true
    env:
    - name: DOCKER_TLS_CERTDIR
      value: /certs
    volumeMounts:
    - name: certs-ca
      mountPath: /certs/ca
    - name: certs-client
      mountPath: /certs/client
    tty: true
  - name: docker
    image: docker:24.0
    command:
    - cat
    tty: true
    env:
    - name: DOCKER_TLS_CERTDIR
      value: /certs
    - name: DOCKER_HOST
      value: tcp://localhost:2376
    - name: DOCKER_TLS_VERIFY
      value: "1"
    - name: DOCKER_CERT_PATH
      value: /certs/client
    volumeMounts:
    - name: certs-client
      mountPath: /certs/client
      readOnly: true

最后写jenkinsfile进行构建

c 复制代码
pipeline {
options{
    timestamps ()
    disableConcurrentBuilds()
    buildDiscarder(logRotator(numToKeepStr: '10'))
}

    environment {
    image ="docker.com/xxx/$JOB_NAME:$BUILD_ID"
    }
        agent { 
     kubernetes {
       cloud 'test-k8s'
       inheritFrom 'test'
     	 }
   			 } 
   parameters {
   string(name: 'BRANCH', defaultValue: 'v10.1.3', description: 'Enter the branch name')
 }


   stages {
      stage('Get Code ') {
         steps {
               script {
             def branch = params.BRANCH
          sh("ls -al ${env.WORKSPACE}")
          deleteDir()
          sh("ls -al ${env.WORKSPACE}")

         checkout scmGit(branches: [[name: '*/${branch}']], extensions: [], userRemoteConfigs: [[credentialsId: 'git', url: 'http://dockert-boot.git']])

            
         }
      }
}
stage ('Maven Buid') {
  steps {
       container('mvn') { 
           sh 'mvn clean install -DskipTests'
         }
             }
                 }
                     
                     
        stage('Docker Build and Push') {
            steps {
                container('docker') {  
                    withDockerRegistry(credentialsId: 'hub', url: 'https://hub.docker.com') {
                        script {
                           def builtImage = docker.build("${image}", ".")
                            builtImage.push()
                            sh "docker rmi ${image}"
                           
                        }
                    }
                }
            }
        }
                     
        stage('Connect K8s and TEST') {
            steps {
            container('kubectl') { 
                withKubeConfig(credentialsId: 'test-k8s') {
                   sh 'kubectl -n XX set image deployment/boot  boot=${image}'
                    
                }
                 }
            }
        }                     
    }
}

注意

模版也是

关键点否则无法调度test 集群,jenkins添加多集群管理不在讲了,之前有讲过

js 复制代码
    environment {
    image ="docker.com/xxx/$JOB_NAME:$BUILD_ID"
    }
        agent { 
     kubernetes {
       cloud 'test-k8s'
       inheritFrom 'test'
     	 }
   			 } 
相关推荐
迷路爸爸18013 分钟前
Docker 入门学习笔记 06:用一个可复现的 Python 项目真正理解 Dockerfile
笔记·学习·docker
斯普信云原生组16 分钟前
Docker 开源软件应急处理方案及操作手册——容器运行异常处理
docker·容器·eureka
VBsemi-专注于MOSFET研发定制26 分钟前
AI训练服务器8GPU功率链路设计实战:效率、可靠性与功率密度的平衡之道
运维·服务器·人工智能
木子欢儿33 分钟前
KasmVNC 指南:高性能网页原生 Linux 远程桌面方案
linux·运维·服务器
摆烂z42 分钟前
对外访问网络限制*.aliyuncs.com开放也拉不下来和查看docker容器结构
运维·docker·容器
炘爚43 分钟前
日志系统整体设计步骤以及功能函数梳理
运维·服务器·数据库
斯普信云原生组1 小时前
Docker 开源软件应急处理方案及操作手册——资源限制与性能瓶颈
docker·容器·eureka
MonkeyKing_sunyuhua2 小时前
Nginx + Let’s Encrypt 免费 SSL 证书 的完整配置过程
运维·nginx·ssl
我科绝伦(Huanhuan Zhou)2 小时前
分享一个很实用的K8S巡检脚本
linux·docker·kubernetes
Net_Walke2 小时前
【Ubuntu】共享文件夹 /mnt/hgfs 下不显示问题解决
linux·运维·ubuntu