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'
     	 }
   			 } 
相关推荐
云运维笔记1 小时前
IP地址从入门到精通:网络通信的核心基石
运维·网络·计算机网络
bosins2 小时前
WSL2 启动即崩溃?调整超时参数解决 Docker 阻塞问题
linux·docker·wsl
码农学院2 小时前
企业官网改版后 AI 引用归零的复盘:301 重定向断层让爬虫索引掉线,修复方案与恢复数据
运维·geo优化·ai优化aio
kuroomi3 小时前
Ingress-Nginx与kubernetes 网络
linux·运维·网络·kubernetes
当下新鲜事3 小时前
空调机房冷冻泵与冷却泵技术分析:赛莱默B&G背包式智能变频管道泵的工程应用
运维·物联网·业界资讯
一直在努力学习的菜鸟4 小时前
Docker 完整知识体系图
docker
Doris__HE4 小时前
【元脑服务器NF5476G7-NF5476M7技术规格分享】
运维·服务器·网络·数据库·性能优化
java_logo7 小时前
Docker 部署 Gotenberg 完整教程:Compose 搭建文档转 PDF API
docker·pdf·chromium·libreoffice·文档转换·轩辕镜像·gotenberg
闲云野鹤在人间7 小时前
docker 入门 | 第7章 容器监控 和 第8章 容器日志 详解
运维·docker·容器·架构·云计算
亚川楼宇自控系统数据中心厂家7 小时前
IBMS 集成如何打通数据中心的子系统数据孤
运维