Jenkins和Docker以及Kubernetes结合考虑
今天搞了一下Jenkins和Docker的结合,我在想几个问题:
- 构建是经常的,构建最大的目标还是生成一个包或者应用
- 发布应用也是频繁的,发布本质上是把这个包放到可运行的环境中便于测试
- 如果每次构建我们都需要去Build一个环境,包括配置连接池等和应用相关的资源的话,那就太消耗时间和CPU了
- 在日常项目中更多的变动应该还是在代码上,因此考虑的就是把针对某个项目的环境发布成一个images,然后基于这个images进行应用代码的发布。
基于这种考虑就没必要每次构建通过Jenkins基于Dockfile去build image,而应该尽量采用事先构建的images模板。
把Jenkins作为kubernetes pod来用今天也尝试了一下,无奈虚拟环境性能不行放弃,我个人感觉放在kubernetes集群外运行就可以了,没必要放进去作为Pod来统一管理。
Kubernetes还是专门作为一个应用运行环境,而不是发布构建持续集成的环境比较好点 :)
基于上次的maven project,改造了一下把应用部署到kubernetes环境中的WebLogic Pod。当然只能做功能测试,如果性能测试的话,我还要考虑考虑。
项目的脚本部分改动

project=easy-springmvc-maven
war_name=easy-springmvc-maven.war
war_path=http://192.168.0.104:8080/jenkins/job/jeekins-test/ws/target
file_path=/home/ericnie/.jenkins/workspace/jenkins_test/target/ now=$(date +"%Y%m%d%H%M%S")
echo "============begin weblogic pod check========"
echo "the shell execute time is ${now}" weblogic_num=`kubectl get pods | grep helloworld-service | wc -l` if [ "${weblogic_num}" == "" ]; then
kubectl delete -f /home/ericnie/rc.yaml
echo "delete the weblogic pod"
fi sleep 20s
echo "==========create weblogc pod==========="
kubectl create -f /home/ericnie/rc.yaml
sleep 10s
weblogic_ip=`kubectl get pods -o wide | grep helloworld-service | grep Running | awk '{for(i =1; i <=NF; i++){ if($i~/[0-9]\.[0-9]/) print $i}}'`
echo "weblogic ip is ${weblogic_ip}" sleep 60s
echo "==========deploy the application========"
java -cp /home/ericnie/Middleware/wlserver/server/lib/weblogic.jar weblogic.Deployer -adminurl t3://${weblogic_ip}:7001 -user weblogic -password welcome1 -name ${war_name} -targets AdminServer -deploy -upload -source ${file_path}/${war_name} echo "=========job finish,you can acess!======"
jenkins console输出
[jenkins_test] $ /bin/sh -xe /tmp/jenkins7532164656453389066.sh
+ project=easy-springmvc-maven
+ war_name=easy-springmvc-maven.war
+ war_path=http://192.168.0.104:8080/jenkins/job/jeekins-test/ws/target
+ file_path=/home/ericnie/.jenkins/workspace/jenkins_test/target/
++ date +%Y%m%d%H%M%S
+ now=
+ echo '============begin weblogic pod check========'
============begin weblogic pod check========
+ echo 'the shell execute time is 20171031153657'
the shell execute time is
++ kubectl get pods
++ grep helloworld-service
++ wc -l
+ weblogic_num=
+ '[' == ']'
+ kubectl delete -f /home/ericnie/rc.yaml
replicationcontroller "helloworld-service" deleted
service "helloworldsvc" deleted
+ echo 'delete the weblogic pod'
delete the weblogic pod
+ sleep 20s
+ echo '==========create weblogc pod==========='
==========create weblogc pod===========
+ kubectl create -f /home/ericnie/rc.yaml
replicationcontroller "helloworld-service" created
service "helloworldsvc" created
+ sleep 10s
++ kubectl get pods -o wide
++ grep helloworld-service
++ grep Running
++ awk '{for(i =1; i <=NF; i++){ if($i~/[0-9]\.[0-9]/) print $i}}'
+ weblogic_ip=10.0.35.3
+ echo 'weblogic ip is 10.0.35.3'
weblogic ip is 10.0.35.3
+ sleep 60s
+ echo '==========deploy the application========'
==========deploy the application========
+ java -cp /home/ericnie/Middleware/wlserver/server/lib/weblogic.jar weblogic.Deployer -adminurl t3://10.0.35.3:7001 -user weblogic -password welcome1 -name easy-springmvc-maven.war -targets AdminServer -deploy -upload -source /home/ericnie/.jenkins/workspace/jenkins_test/target//easy-springmvc-maven.war
weblogic.Deployer invoked with options: -adminurl t3://10.0.35.3:7001 -user weblogic -name easy-springmvc-maven.war -targets AdminServer -deploy -upload -source /home/ericnie/.jenkins/workspace/jenkins_test/target//easy-springmvc-maven.war
<Oct , :: PM CST> <Info> <J2EE Deployment SPI> <BEA-> <Initiating deploy operation for application, easy-springmvc-maven.war [archive: /home/ericnie/.jenkins/workspace/jenkins_test/target/easy-springmvc-maven.war], to AdminServer .>
Task initiated: [Deployer:]deploy application easy-springmvc-maven.war on AdminServer.
Task completed: [Deployer:]deploy application easy-springmvc-maven.war on AdminServer.
Target state: deploy completed on Server AdminServer + echo '=========job finish,you can acess!======'
=========job finish,you can acess!======
Finished: SUCCESS
欢迎提出意见探讨。
Jenkins和Docker以及Kubernetes结合考虑的更多相关文章
- Jenkins+GitLab+Docker+SpringCloud+Kubernetes实现可持续自动化微服务
现有混合云平台的场景下,即有线下和线上的环境,又有测试与正式的场景,而且结合了Docker,导致打包内容有所区分,且服务的发布流程复杂起来,手工打包需要在编译阶段就要根据环境到处更改配置,因此纯手工发 ...
- jenkins构建docker镜像上传到harbor并发布到kubernetes
很早之前写过一篇jenkins集成docker的文章,使用的是CloudBees Docker Build and Publish plugin插件.这篇文章是直接使用shell脚本做的,主要是这次有 ...
- Jenkins 与Docker/Kubernetes的自动化CI流水(笔记)
一.CI/CD 持续集成(continuous Integration,CI):代码合并.构建.部署.测试都在一起.不断执行这个过程,并对结果反馈. 持续部署(Continuous Deploymen ...
- Kubernetes笔记(三):Gitlab+Jenkins Pipeline+Docker+k8s+Helm自动化部署实践(干货分享!)
通过前面两篇文章,我们已经有了一个"嗷嗷待哺"的K8s集群环境,也对相关的概念与组件有了一个基本了解(前期对概念有个印象即可,因为只有实践了才能对其有深入理解,所谓"纸上 ...
- Jenkins与Docker相关的Plugin使用
原文地址:http://blog.csdn.net/ztsinghua/article/details/52128140 Jenkins与Docker相关的Plugin 在Jenkins Plugin ...
- Jenkins+Git+Docker+K8s部署
准备工作 Jenkins已安装 Docker和K8s部署运行成功 代码管理工具使用Git 最近公司项目使用Jenkins+Git+Docker+K8s进行持续化构建部署,这里笔者整理了一下构建部署的相 ...
- Docker vs. Kubernetes vs. Apache Mesos: Why What You Think You Know is Probably Wrong
Docker vs. Kubernetes vs. Apache Mesos: Why What You Think You Know is Probably Wrong - Mesosphere h ...
- 【k8s实战一】Jenkins 部署应用到 Kubernetes
[k8s实战一]Jenkins 部署应用到 Kubernetes 01 本文主旨 目标是演示整个Jenkins从源码构建镜像到部署镜像到Kubernetes集群过程. 为了简化流程与容易重现文中效果, ...
- jenkins和docker 使用docker作为slave
使用docker作为jenkins slave. 文章来自:http://www.ciandcd.com文中的代码来自可以从github下载: https://github.com/ciandcd 参 ...
随机推荐
- VMware无法识别USB设备
VMware虚拟机开始还能识别USB设备/U盘,突然就不行了,在网上找了好久,提供的方法大致如下: 1. 首先Ctrl+R启动运行,输入services.msc,找到一个VMware USB dr ...
- MySQL的读写分离---主从复制、主主复制
1.复制是基于BinLog日志 存在三种日志格式:Statement:存储Sql语句,存储日志量是最小的.有可能复制不一致Row:存储event数据,存储日志量大,但是不能很直接进行读取:Mixed: ...
- 【python】发送邮件
从网上找了一些用python发邮件的教程,学习一下: 1.发送普通的文本邮件 http://www.cnblogs.com/xiaowuyi/archive/2012/03/17/2404015.ht ...
- 多路复用I/O模型epoll() 模型 代码实现
epoll模型 int epoll_create(int maxevent) //创建一个epoll的句柄 然后maxevent表示监听的数目的大小int epoll_ctl(int epollfd, ...
- Dubbo 用户手册学习笔记 —— Dubbo架构
Dubbo的架构 节点角色说明 节点 角色说明 Provider 服务提供方 Consumer 服务消费方 Registry 服务注册与发现的注册中心 Monitor 统计服务的调用次数和调用时间的监 ...
- WordPress 前端投稿/编辑发表文章插件 DJD Site Post(支持游客和已注册用户)汉化版 免费下载
插件简介 前面逍遥乐给大家推荐了 WordPress用户前端化专业版WP User Frontend Pro WordPress中文汉化插件v2.1.9 今天逍遥乐给大家带来的wordpress插件是 ...
- gulp配合vue压缩代码格式化
实际项目就是一个单页面.因此,我觉得用gulp足够,并且不需要webpack和vue-cli因为没有必要使用组件. 先来说一下项目结构 1. 然后来看看我的包管理package.json都用了啥,你也 ...
- SpringMVC组件配置
web.xml . springmvc-servlet.xml 配置SpringMVC四大组件. web.xml 配置前端控制器:前端控制器就是个servlet <!-- 配置前端控制器 --& ...
- Team Service 编译项目并生成项目
第一步:生成GitHub帐号连接 在Service中选择Github 在弹出的GitHub连接中点击授权,即会弹出另一个窗口,输入Github的用户名及口令,即可授权. 第二步:创建Build定义 解 ...
- 洛谷——P2708 硬币翻转
P2708 硬币翻转 题目背景 难度系数:☆☆☆☆☆(如果你看懂了) 题目描述 从前有很多个硬币摆在一行,有正面朝上的,也有背面朝上的.正面朝上的用1表示,背面朝上的用0表示.现在要求从这行的第一个硬 ...