1,將Jenkins構建好的鏡像,部署在k8s中,需要安裝: Kubernetes Continuous Deploy插件。 2, [root@centos7 ~]# kubectl create secret docker-registry registry-pull-secret --docker-username=admin --docker-password=Harbor12345 --docker-email=2345@qq.com --docker-server=192.168.0.12 secret/registry-pull-secret created [root@centos7 ~]# 3, # 設置集群參數 kubectl config set-cluster kubernetes \ --certificate-authority=./ca.pem \ --embed-certs=true \ --server=${KUBE_APISERVER} # 設置客戶端認證參數 kubectl config set-credentials admin \ --client-certificate=./admin.pem \ --embed-certs=true \ --client-key=./admin-key.pem # 設置上下文參數 kubectl config set-context kubernetes \ --cluster=kubernetes \ --user=admin # 設置默認上下文 kubectl config use-context kubernetes 4, // 公共 def registry = "192.168.0.12" // 項目 def project = "welcome" def app_name = "demo" def image_name = "${registry}/${project}/${app_name}:${BUILD_NUMBER}" def git_address = "git@192.168.0.12:/home/git/java-demo.git" // 認證 def secret_name = "registry-pull-secret" def docker_registry_auth = "34de57a6-c6a2-4910-997b-150749833513" def git_auth = "b087ae08-04bc-4d3f-bda8-bf7cb85279e8" def k8s_auth = "34ce7b04-7513-46c2-9419-ff0591ba0005" podTemplate(label: 'jenkins-slave', cloud: 'kubernetes', containers: [ containerTemplate( name: 'jnlp', image: "${registry}/library/jenkins-slave-jdk:1.8" ), ], //掛載宿主機的docker及docker命令,掛載到容器中 volumes: [ hostPathVolume(mountPath: '/var/run/docker.sock', hostPath: '/var/run/docker.sock'), hostPathVolume(mountPath: '/usr/bin/docker', hostPath: '/usr/bin/docker') ], ) { node("jenkins-slave"){ // 第一步 stage('拉取代碼'){ checkout([$class: 'GitSCM', branches: [[name: '${Branch}']], userRemoteConfigs: [[credentialsId: "${git_auth}", url: "${git_address}"]]]) } // 第二步 stage('代碼編譯'){ sh "mvn clean package -Dmaven.test.skip=true" } // 第三步 stage('構建鏡像'){ withCredentials([usernamePassword(credentialsId: "${docker_registry_auth}", passwordVariable: 'password', usernameVariable: 'username')]) { sh """ echo ' FROM lizhenliang/tomcat RUN rm -rf /usr/local/tomcat/webapps/* ADD target/*.war /usr/local/tomcat/webapps/ROOT.war ' > Dockerfile docker build -t ${image_name} . docker login -u ${username} -p '${password}' ${registry} docker push ${image_name} """ } } // 第四步 stage('部署到K8S平台'){ sh """ sed -i 's#\$IMAGE_NAME#${image_name}#' deploy.yml sed -i 's#\$SECRET_NAME#${secret_name}#' deploy.yml """ kubernetesDeploy configs: 'deploy.yml', kubeconfigId: "${k8s_auth}" } } }