java 单机接口限流处理方案
252
2022-11-05
devops学习(五) Jenkins cd 持续部署(上)
在上一章结尾我们通过jenkins自动化做编译打包后得到了一个jar包,我们要将他部署到远程服务器上
一、jenkins关联远程服务器
1、添加构建完成后操作
说明
ssh server //定义的远程主机,我们在部署jenkins时定义的,不记得的回去翻一翻name: test //当时定义的主机名称source files: target/*.jar //需要将那些文件发送到远程服务器上 //这个路径是以当前jenkins的项目目录为路径去指定的 //相当于我们切换到了/var/jenkins_home/workspace/mytest目录下指定的文件 //我们要将target/目录下的所有jar包发送过去 //远程主机默认接收的目录是在定义主机时指定的/usr/local/test/ //并且在/usr/local/test会拷贝文件的上层目录target/xxx.jar
这样一来我们就将jenkins主机下mytest项目中的jar包发送到了远程服务器的/usr/local/test目录下
2、构建验证
如上,当jenkins构建后jar包就发送到了目标服务器上,使用shell就可用启动 但是存在一个问题,我们上面直接跑个jar包那就和传统形式没区别了 为了实现服务的持续部署高可用性等等,我们使用K8环境部署
二、构建业务镜像并部署
我们上面的程序是一个jar包,那么构建用的基础镜像就必须包含java环境
1、定义Dockerfile
//我们回到idea上创建一个新的目录dockermkdir docker
vi docker/Dockerfile
FROM daocloud.io/library/java:8u40-jdkCOPY mytest.jar /usr/local/WORKDIR /usr/local/CMD java -jar mytest.jar
2、定义部署服务yaml文件
vi docker/mytest-dev.yaml
apiVersion: apps/v1kind: Deploymentmetadata: name: mytest namespace: devopsspec: selector: matchLabels: app: mytest-init template: metadata: labels: app: mytest-init spec: containers: - name: mytest image: mytest:v1.0.1 ports: - name: containerPort: 9999 ---apiVersion: v1kind: Servicemetadata: name: mytest-svc namespace: devopsspec: ports: - port: 9999 targetPort: nodePort: 30005 selector: app: mytest-init type: NodePort
文件定义好之后,记得要推送到gitlab上面
3、配置jenkins"构建后" 操作
source files: target/*.jar docker/* exec: cd /usr/local/test/docker mv ../target/*.jar ./ docker build -t mytest:v1.0.1 . kubectl apply -f mytest-dev.yaml docker image prune -f
配置说明
source files: target/*.jar docker/* //这里在之前配置的后面添加docker/* //这样我们在发送文件到远程你主机的时候会将docker目录及以下的文件都发过去//EXEC 要执行的命令cd /usr/local/test/docker mv ../target/*.jar ./docker build -t mytest:v1.0.1 .kubectl apply -f mytest-dev.yamldocker image prune -f //清理虚悬镜像//说明 //第一个路径必须是绝对路径,虽然我们默认登陆的是/usr/local/test //但如果使用非绝对路径就会找不到 //报ERROR: Exception when publishing, exception message [Exec exit status not zero. Status [1]]
演示
4、构建测试访问
如上,我们已经完成了一次部署可以访问页面了,但是还存在很多问题
1、我这里的单节点还看不出来,如果要部署的节点有很多,我们不能在所有节点上都构建镜像 //需要搭建harbor仓库2、每次我们修改代码中的输出信息并不会去更新实际部署的应用 //后续应该用滚动重启而不是更新,相同镜像标签情况下apply无法完成更新3、 关于代码版本管理的问题 //gitlab tag --jenkins
如上问题会在后续解决(≧∇≦)ノ
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~