docker相当于是一个容器,可以集合所有软件在里面
jenkins是一个自动化部署工具
正好最近在项目中用到了这些技术,我来抛砖引玉吧。
首先说结论:
1.k8s是非常好的一项技术,很稳定。如果发现正在运行的pod的数量不等于用户设定的期望值,k8s则会自动创建或者删除pod,直到两者相等。这样既保障了服务的不间断运行,同时还可以动态缩放服务的规格。用户只要调整pod的replicate的数量即可,其他的都交给k8s就好,非常省心。
2.要用jenkins来集成命令行操作,虽然我个人非常偏爱使用命令行,但是我不得不承认用jenkins集成命令行操作会极大的提升工作效率。
下面说实现步骤:(本文以azure平台为例)
1.编写dockerfile
2.在jenkins创建任务,并执行包含如下命令的脚本
2.1gitpull源代码到本地
2.2dockerbuild命令生成镜像文件
2.3docker定义镜像文件版本号并上传到azure平台
2.4kubectl命令来创建k8s的deployment&service.
2.5每次版本更新可以调用updateimage来编译新的镜像版本并提供给k8s使用
注意在创建k8s的deployment和service的时候需要编写yaml格式的配置文件,deployment配置包括名称,镜像文件地址,cpu最大最小分配值,内存最大最小分配值等。service配置文件包括名称,引用的deployment名称,以及是否使用loadbalancer等。
更多详细信息可以参考我的wiki.https://github.com/faminghou/mywiki
先创建一个自由风格的软件项目
勾选"参数化构建过程",然后选择参数类型,比如"字符参数"
在构建步骤中选择"build/publishdockerimage"(前提是安装好docker插件)
如果不想使用docker插件,可以直接通过脚本的方式,但是tag还是通过${var}的方式给到docekrbuild命令
保存后点击"buildwithparameters"按钮,开始构建,输入tag参数值后,点击"开始构建"