SpringCloud+Jenkins+Docker+K8s 自动化部署配置

SpringCloud+Jenkins+Docker+K8s 自动化部署配置


1.在 jenkins 中创建流水线任务

SpringCloud+Jenkins+Docker+K8s 自动化部署配置_第1张图片

2.生成 credentialsId 的方法

SpringCloud+Jenkins+Docker+K8s 自动化部署配置_第2张图片

SpringCloud+Jenkins+Docker+K8s 自动化部署配置_第3张图片

生成成功SpringCloud+Jenkins+Docker+K8s 自动化部署配置_第4张图片

2.配置流水线脚本
pipeline{
    agent any
    tools {
        jdk 'jdk11'
    }
    environment {
    	//xxxxxxxxx 为  
        DOCKER_CERT_PATH = credentials('xxxxxxxxx')
    }
    stages{
        stage('下载代码'){
            steps{
               //AAAAAAA 为jeckins 配置的gitlab 的用户id 可生成在上一步有生成步骤
               //http://bbbb.git 为git代码克隆地址
               git branch: 'master', credentialsId: 'AAAAAAA', url: 'http://bbbb.git'               
            }
 
        }

        stage('构建镜像'){
            steps{
                sh '''
                	//切换项目,目录层级,并打包
                    cd yunyi-platform/yunyi-parent
                    mvn package
                    //切换到要构建镜像项目的层级,去构建项目镜像
                    cd ..
                    cd yunyi-asset-manager
                    //ip:端口号 docker 的 ip 和端口号
                    docker build --network host  -t ip:端口号/asset_management_pro/asset_management_pro:${BUILD_ID} .
                '''
            }
        }    
        stage('推送镜像到Harbor'){
            steps{
                sh '''
                	//docker 的登录 账号 密码 和 ip
                    docker login -u 账号 -p 密码 ip:端口号
                    //把项目推送到 Harbor所建立的项目文件中
                    //ip:端口号为docker的ip和端口号
                    //第一个 /asset_management_pro 为Harbor创建的项目名称
                    //第二个为 在项目目录下建立asset_management_pro 会自动生成
                    docker push ip:端口号/asset_management_pro/asset_management_pro:${BUILD_ID}
                '''
            }
        }
        stage('部署到k8s'){
            steps{
            	//读取deploy.yml文件 写deploy.yml所在的目录结构
                sh 'sed -i "s#{version}#${BUILD_ID}#g" yunyi-platform/yunyi-asset-manager/deploy.yml'
				//读取deploy.yml文件 写deploy.yml所在的目录结构
                sh ' kubectl --kubeconfig=/kc1 apply -f yunyi-platform/yunyi-asset-manager/deploy.yml'

            }
        }
    }
}
 
3.项目添加文件 dockerfiledeploy.yml

SpringCloud+Jenkins+Docker+K8s 自动化部署配置_第5张图片
dockerfile 配置

FROM primetoninc/jdk:1.8

#WORKDIR指令用于指定容器的一个目录,容器启动时执行的命令会在该目录下执行。
WORKDIR /opt/wy_asset_management_pro

#拷贝依赖jar到容器中
COPY target/yunyi-asset-manager-1.0.14-SNAPSHOT.jar /opt/wy_asset_management_pro


WORKDIR /opt/wy_asset_management_pro
#暴露端口
EXPOSE 8200
#运行程序
ENTRYPOINT exec java -jar yunyi-asset-manager-1.0.14-SNAPSHOT.jar &

deploy.yml 配置

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: asset-management #起一个名称随便但不能用下划线
  name: asset-management
spec:
  replicas: 1
  selector:
    matchLabels:
      app: asset-management
  template:
    metadata:
      labels:
        app: asset-management
    spec:
      containers:
      - name: asset-management
        imagePullPolicy: IfNotPresent
        #ip:端口 为 docker 的ip和端口号
        image: "ip:端口号/asset_management_pro/asset_management_pro:{version}"
        command: ["java", "-jar", "/opt/wy_asset_management_pro/yunyi-asset-manager-1.0.14-SNAPSHOT.jar"]
      restartPolicy: Always
        

你可能感兴趣的:(Docker,docker,jenkins,spring,cloud)