Jenkins集成Kubernetes集群

前文

Jenkins安装部署使用_南宫乘风的博客-CSDN博客

Jenkins入门配置_南宫乘风的博客-CSDN博客

Jenkins集成Sonar Qube_南宫乘风的博客-CSDN博客

Jenkins的流水线(Pipeline)

Jenkins流水线整合钉钉_南宫乘风的博客-CSDN博客Kubernetes安装Jenkins_南宫乘风的博客-CSDN博客

目录

1、Kubernetes 环境安装 Jenkins

2、Jenkins 安装插件

3、云配置

4、Template 模板配置

5、Jenkins-slave 启动测试

6、实战环境

7、运行结果


1、Kubernetes 环境安装 Jenkins

https://blog.csdn.net/heian_99/article/details/124985786

2、Jenkins 安装插件

插件:
kubernets
pipeline
docker pipeline
docker
Kubernetes Cli
Config File Provider
Pipeline Utility Steps

Jenkins源:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

3、云配置

Dashboard > 系统管理 > 节点管理 > configureClouds

参考:https://github.com/jenkinsci/kubernetes-plugin

 

 

 

 

 

这里是配置连接Kubernetes集群,启动 Jenkins Slave 代理的相关配置。

4、Template 模板配置

这里配置 Jenkins Slave 在 kubernetes 集群中启动的 Pod 的配置,这里将设置四个镜像,分别是:

  • Jenkins Slave: 用于执行 Jenkins Job 命令。
  • Helm-Kubectl: 用于执行 Helm 命令。
  • Docker 用于编译、推送 Docker 镜像
  • Maven: 用于Maven编译、打包。

这里将这四个镜像融入到一个 Pod 之中,方便执行各种命令来完成持续部署交互过程。

 

 

[root@master01 Jenkins]# cat maven.yaml 
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: maven-pvc
  namespace: jenkins
spec:
  storageClassName: "nfsdata"
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 10Gi
Kubernetes地址:https://kubernetes.default.svc.cluster.local/

Jenkins-master:http://jenkins.jenkins.svc.cluster.local:8080

Jenkins-slave:jenkins.jenkins.svc.cluster.local:50000



jnlp-slave
cnych/jenkins:jnlp6

maven
maven:3.8.5-openjdk-8-slim

docker
registry.cn-shanghai.aliyuncs.com/mydlq/docker:18.06.2-dind

helm-kubectl
registry.cn-shanghai.aliyuncs.com/mydlq/helm-kubectl:2.13.1


/var/run/docker.sock
/usr/bin/docker
/etc/docker

注意:docker需要填写sleep

 

 

5、Jenkins-slave 启动测试

 

def label = "jnlp-slave"

podTemplate(label: label,cloud: 'kubernetes' ){
    node (label) {
        stage('Git阶段'){
            echo "1、开始拉取代码"
            sh "git version"
        }
        stage('Maven阶段'){
            container('maven') {
                echo "2、开始Maven编译、推送到本地库"
                sh "mvn -version"
            }
        }
        stage('Docker阶段'){
            container('docker') {
                echo "3、开始读取Maven pom变量,并执行Docker编译、推送、删除"
                sh "docker version"
            }
        }
         stage('Helm阶段'){
            container('helm-kubectl') {
                echo "4、开始检测Kubectl环境,测试执行Helm部署,与执行部署"
                sh "helm version"
            }
        }
    }
}

 

6、实战环境

 

 

pipeline {
        agent 
        {
        label 'jnlp-slave'
        }
 
    // 存放所有任务的合集
    stages {
        stage('拉取Git代码') {
            steps {
                echo '拉取Git代码'
				 sh 'git clone https://gitee.com/chengfeng99/java-demo.git'
            }
        }
 
        stage('检测代码质量') {
            steps {
                echo '检测代码质量'
                withSonarQubeEnv('sonarqube') { // Will pick the global server connection you have configured       
            // 这里使用名字叫做maven的容器运行
            container("maven") {
                sh '''
				cd /home/jenkins/agent/workspace/k8s-demo/java-demo
				mvn sonar:sonar  -Dsonar.projectname=${JOB_NAME} -Dsonar.projectKey=${JOB_NAME} -Dsonar.java.binaries=target/ -Dsonar.login=19d0d6b885e18455d257d61da08776bd4e180c04
				'''
            }
            }
        }
 }
        stage('构建代码') {
            steps {
                echo '构建代码'
                   container('maven') {
                    sh ''' 
					cd /home/jenkins/agent/workspace/k8s-demo/java-demo
					mvn clean  package  -Dmaven.test.skip=true
					'''
                    //打包跳过测试
                }
            }
        }
 
        stage('制作自定义镜像并发布Harbor') {
            steps {
                echo '制作自定义镜像并发布Harbor'
            }
        }
 
        stage('基于Harbor部署工程') {
            steps {
                echo '基于Harbor部署工程'
            }
        }
    }
}

7、运行结果

 

 

posted @ 2022-05-26 21:27  南宫乘风  阅读(214)  评论(0编辑  收藏  举报