当前位置:   article > 正文

【K8S运维知识汇总】第5天3: 使用Jenkins进行持续构建交付dubo服务的提供者

【K8S运维知识汇总】第5天3: 使用Jenkins进行持续构建交付dubo服务的提供者

docker在执行的时候执行entrypoint.sh,这是一个shell脚本,docker进程在执行这个shell脚本的话,会给脚本分配一个pid,这个pid是1,docker应该是维持一个pid等于1 的进程,一定在前台运行,生命周期在running状态
在这里插入图片描述

如果不用exec直接在shell脚本里写,java -jar,shell脚本就退出了,pid=1进程就退出了,切不到java进程,docker容器就退出了,docker容器就从running变成exited
这是shell脚本的知识,如果写了exec,就相当于exec后面的东西,代替了当前的shell脚本,从shell进程变成了pid等于1 的进程,java -jar启动的程序,dubbo程序变成了前台运行,且pid=1

不用exec,实际上相当于在entrypoint.sh弄了一个子进程,类似开了一个终端,执行了一个ps-a之类的,类似从init进程,fork出来的一个子进程。exec就是把当前的进程号给他了,到java进程手里了,这样就让写的最根本原因,为了让。docker容器生命周期,要保持在running状态而不会变成exec状态。这个是docker容器应用里比较常用的方式。nohup是后台,所以要exec

在这里插入图片描述

现在就是把base里底包做出来了,以后可以做若干底包
在这里插入图片描述

有maven软件,Dubbo服务的底包了, 现在可以配置流水线,流水线的方式去构造
在这里插入图片描述

需要保留多少次老的构建discard old builds,保留3天和30个
在这里插入图片描述

这个一个工程是参数化构建的,
在这里插入图片描述

需要加10个参数,第一个参数是string parameter,参数类型是string,名字是app_name,默认值default value,description描述/
trim the string,会自动把你填的空格删除

在这里插入图片描述

第二个参数类型是string,字符串类型的参数,名字是image_name,上面是docker提供者的一个项目,下面是一个镜像
在这里插入图片描述

第三个参数类型仍然是字符串,git版本控制仓库的地址,比如dubbo-demo-service的项目的地址,在gitee上
在这里插入图片描述

在这里插入图片描述

加不加.git其实无所谓
在这里插入图片描述

第四个也是字符串类型的参数。项目在git中央仓库所对应的,分支或者版本号,这个项目在git里有分支,master和apollo
在这里插入图片描述

要拉到本地就checkout 版本号。这样才能去编译出来指定的哪一版本代码,要制定就找commit id,是最标准的唯一的。git上的tag其实可以篡改的,所以commit id比较好
在这里插入图片描述

在graph上就可以看到每一次提交对应一个唯一的commit id,是不能被篡改的
在这里插入图片描述

可以checkout 分支,但是在构建的时候是分支上的最新代码,
在这里插入图片描述

第5个参数仍然是字符串,名字add_tag,给docker镜像增加标签,要拼一个git_ver作为标签拼进来,再加上一个时间戳
在这里插入图片描述
在这里插入图片描述

第6个参数,mvn_dir,在哪一个目录去执行对这个项目的编译操作,/就是在当前根目录
在这里插入图片描述

第7个参数仍然是string parameter,编译完成项目后,产生的jar包或者war包,所在的目录
在这里插入图片描述

在这里插入图片描述

第8个参数仍然是string类型,mvn_cmd执行编译所要的命令
在这里插入图片描述

在这里插入图片描述

第9个参数,是choice类型,base_image,可以选择之前做的base/jre7:7u80和base/jre8:8u12,这些就是项目使用的docker底包
在这里插入图片描述

第10个参数也是choice parameter,使用的maven软件版本
在这里插入图片描述

做流水线就需要10个参数,app_name,image_name,git_repo,git_ver,add_tag,mvn_dir,target_dir,_mvn_cmd,base_image,maven

还需要些pipeline-script
在这里插入图片描述
定义了一些stage步骤
在这里插入图片描述

实际上执行的是shell脚本
在这里插入图片描述

把项目clone到了这里
在这里插入图片描述

最后剪出分支
在这里插入图片描述
在这里插入图片描述

build,也是cd到工作目录,执行后面的/var/jenkins_home/maven-版本
在这里插入图片描述

也就是在这里
在这里插入图片描述

下来就是packages打包,用maven编译好项目,就需要去打包,把所有产生的jar包挪到指定文件夹里
在这里插入图片描述

下面要写dockerfile了
在这里插入图片描述

这个dockerfile是在jenkins流水线脚本自己写出来的
在这里插入图片描述

整体拼成以恶搞docker的tag,然后push到docker仓库
在这里插入图片描述

往这里贴
在这里插入图片描述
在这里插入图片描述

保留3天30份
在这里插入图片描述

10个参数
在这里插入图片描述

真正构建项目
在这里插入图片描述

构建可以点击这两个

在这里插入图片描述

流水线想要构架,需要填写10个参数,就会按照script进行构建
在这里插入图片描述
在这里插入图片描述

harbor里可以创建app私有仓库
在这里插入图片描述

拉取master分支的最新代码,时间戳就是19年12月1日_12点,编译地址是在项目根目录/,产生的目录是在dubbo-server/target,产生的jar包。
用的底包是base/jre8:8u12
在这里插入图片描述

开始第一次构建,这个10个参数也是为了避免甩锅
在这里插入图片描述

点进去

在这里插入图片描述

点击console output
在这里插入图片描述

第一次编译不成功很正常,因为要去国外的org拖jar包
在这里插入图片描述

常用的mvn命令,clean是把本地缓存清理掉。package 和install是对应要不要保存的问题,install就保存在本地,package是不保留在本地,-E只输出错误,-Q是静默的(就是在jenkins里根本看不到输出
在这里插入图片描述

用了流水线,就可以把200多个项目抽象成一条流水线,传不同的参数,现在dubbo服务交付提供的时候,交付dubbo服务的monitor,最后交付dubbo服务的消费者,然后dubbo服务这一套就交付到k8s里了
在这里插入图片描述

第一次构建比较慢,第二次就可以用本地缓存了,maven软件在/root/m2/repostry,很多jar包就不用去网上下载了
在这里插入图片描述

编译好后,可以推到harbor仓库里,对应的docker镜像应该是(镜像的4个组成部分,registry(harbor.od.com),repository(app),下的dubbo-demo-service:tag(master分支_191201_1200)
app仓库里会出现这么一个docker镜像
在这里插入图片描述

进入下个阶段,docker build。jenkins调用build的时候,使用的宿主机的docker引擎,
在这里插入图片描述

push完以后就完成了
在这里插入图片描述

在这里插入图片描述

发现变蓝了
在这里插入图片描述

docker镜像就来了
在这里插入图片描述

点进去可以看到tag
在这里插入图片描述

有了镜像,需要交付到k8s里,需要配置资源配置清单
在这里插入图片描述

去做资源配置清单。只需要一个dp.yaml
在这里插入图片描述

不需要svc。也不需要ingress
在这里插入图片描述

注意改时间戳,打这个tag是为了方便找出问题
在这里插入图片描述

要发到namespace里,app,把这个app namespace创建出来
在这里插入图片描述

在这里插入图片描述

紧跟着要在这个app里加入一个secret,把app名称空间和secret创建出来了
在这里插入图片描述

必须有这个,不然没法从private的仓库里拉镜像
在这里插入图片描述

label随便打。spec里有container,对应的镜像就是harbor.od.com/app/dubbo-demo-service:master_192101_1200.,ports是暴露出来的端口,是20880

在这里插入图片描述

env很重要,制作底包的时候,在entrypoint.sh要接收一个jar_ball环境变量,通过这个传到docker的环境变量里。

云原生的程序,配置一般通过三种方式,1.通过环境变量,2.通过启动参数,3.通过启动名称空间

在这里插入图片描述

image拉取策略有三种,always永远都去远程仓库拉,never永远不去远程仓库拉,ifnotpresent,如果没有再去远程仓库拉。
在这里插入图片描述

service account不配置,默认就是defaulte。run asuser指的是用root方式启动
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在启动应用配置清单,先去配置zk
在这里插入图片描述

连接到zk里
在这里插入图片描述

根里只有zookeeper,没有dubbo
在这里插入图片描述

去应用dubbo服务提供者
在这里插入图片描述
在这里插入图片描述

查看是否很顺利的交付到k8s里,在app名称空间里
在这里插入图片描述

这个pod已经起来了
在这里插入图片描述

最后会提示dubbo服务已经启动
在这里插入图片描述
在这里插入图片描述

这样就在k8s里完美交付了一个dubbo服务的提供者,用jenkins去持续构建,把dubbo服务的提供者列出来,通过资源配置清单,交付到k8s里,去zk列出来list,dubbo服务的接口

在这里插入图片描述

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
  

闽ICP备14008679号