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

文章描述了一种使用Jenkins创建流水线任务,结合Docker和Kubernetes(K8s)进行SpringCloud应用的自动化部署方法。首先在Jenkins中配置流水线,包括设置credentialsId,定义环境变量,然后通过脚本进行代码下载、镜像构建和推送至Harbor仓库。最后,将镜像部署到K8s集群中,利用deploy.yml文件更新应用版本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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


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

在这里插入图片描述

2.生成 credentialsId 的方法

在这里插入图片描述

在这里插入图片描述

生成成功在这里插入图片描述

2.自定义变量

在这里插入图片描述

3.配置流水线脚本
pipeline{
    agent any
    tools {
        jdk 'jdk11'
    }
    environment {
    	//xxxxxxxxx 为  
        DOCKER_CERT_PATH = credentials('xxxxxxxxx')
    }
    stages{
    	//初始化变量
    	stage('初始化'){
            steps{
                script{
                	//可以用来区分正式环境 测试环境变量
                    KIND = "Deployment"
                    if(CONF_VER== 'prod'){
                        KIND = "product"
                    }
                   	//ip:端口 为 docker 的ip和端口号/harbor 的上传地址
                    PATCH ="ip:端口号/asset_management_pro/asset_management_pro"
                    IMAGE = "${PATCH}:${BUILD_ID}"
                }
                echo "IMAGE ${IMAGE}"
            }
        }
        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{
            	sh """
            		//往 deploy.yml 中传递变量值
                	sed -i \"s#{KIND}#${KIND}#g\" yunyi-platform/yunyi-asset-manager/deploy.yml
                	sed -i \"s#{IMAGE}#${IMAGE}#g\" yunyi-platform/yunyi-asset-manager/deploy.yml
            		//读取deploy.yml文件 写deploy.yml所在的目录结构
                	sed -i \"s#{version}#${BUILD_ID}#g\" yunyi-platform/yunyi-asset-manager/deploy.yml
					//读取deploy.yml文件 写deploy.yml所在的目录结构
                	kubectl --kubeconfig=/kc1 apply -f yunyi-platform/yunyi-asset-manager/deploy.yml
                """

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

在这里插入图片描述
dockerfile 配置

FROM primetoninc/jdk:1.8

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

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


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

deploy.yml 配置

apiVersion: apps/v1
kind: {KIND}
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和端口号 / harbor 上传的地址 {version} 为传递进来的 版本号参数
        #ip:端口号/asset_management_pro/asset_management_pro:{version}
        image: {IMAGE}
        command: ["java", "-jar", "/opt/wy_asset_management_pro/xxxxx-SNAPSHOT.jar"]
      restartPolicy: Always
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值