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

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
        
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Jenkins是一款开源的持续集成工具,它可以帮助开发团队自动化地构建、测试和部署软件项目。在Jenkins配置Docker插件后,我们可以结合Docker技术来进行自动化部署Docker是一种轻量级的容器化技术,它可以将应用程序和其依赖的环境打包成一个可移植的容器,方便在不同的环境中部署和运行。 而Kubernetes(简称K8s)是一个开源的容器编排平台,它可以管理和调度Docker容器集群。通过在K8s中创建Pod、Service等资源对象,我们可以实现Spring Cloud项目的自动化部署。 首先,我们可以使用Jenkins的Pipeline功能来编写自动化部署的流水线脚本。流水线脚本可以定义一系列的步骤,包括构建、测试和部署等。在流水线脚本中,我们可以使用Docker插件来创建Docker镜像,并将其推送到Docker仓库。接着,我们可以使用K8s插件来在Kubernetes集群中创建相关的资源对象,如Deployment和Service等。 在自动化部署过程中,我们可以将Spring Cloud项目的源代码与Dockerfile放在一个Git仓库中,并通过Jenkins的Webhook功能来触发自动化部署流水线。当有新的代码提交时,Jenkins会自动拉取最新的代码,并执行流水线脚本。在流水线脚本中,我们可以使用Maven或Gradle等工具来构建和打包Spring Cloud项目。然后,通过Docker插件创建可运行的Docker镜像,并将其推送到Docker仓库。 最后,使用K8s插件在Kubernetes集群中创建相关的资源对象,如Deployment和Service等。通过创建Deployment对象,我们可以定义应用程序的副本数和容器的镜像。通过创建Service对象,我们可以定义应用程序可以访问的网络端口和负载均衡规则。 通过JenkinsDocker和Kubernetes的自动化部署,我们可以实现Spring Cloud项目的快速、可靠和可重复部署。这种自动化部署的方式可以提高开发效率和部署质量,同时也降低了运维成本和风险。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值