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'
     	 }
   			 } 
相关推荐
Gofarlic_oms12 小时前
利用API实现ANSYS许可证管理自动化集成
运维·服务器·开发语言·matlab·自动化·负载均衡
杨浦老苏3 小时前
大模型安全接入网关LinkAI
人工智能·docker·ai·群晖·隐私保护
档案宝档案管理3 小时前
权限分级管控,全程可追溯,筑牢会计档案安全防线
运维·网络·人工智能
倔强的石头1065 小时前
【Linux指南】基础IO系列(八):实战衔接 —— 给微型 Shell 添加完整重定向功能
linux·运维·服务器
观北海5 小时前
AiScan-N:AI全自动化渗透测试工具的深度技术解析
运维·自动化
Ujimatsu5 小时前
虚拟机安装Ubuntu 26.04.x及其常用软件(2026.4)
linux·运维·ubuntu
jc06206 小时前
6.1云原生之Docker
c++·docker·云原生
Agent产品评测局8 小时前
制造业生产调度自动化落地,完整步骤与避坑指南:2026企业级智能体选型与实战全景
运维·人工智能·ai·chatgpt·自动化
狂奔的sherry8 小时前
一次由 mount 引发的 Linux 文件系统“错觉”
linux·运维·服务器
志栋智能8 小时前
超自动化巡检:让合规与审计变得轻松简单
运维·网络·人工智能·自动化