1、构建流程图
- 自动触发jenkins部署通过svn或Git的hooks来实现,是否自动触发根据项目内部沟通决定,我们目前没有自动触发,原因是QA在测试的过程中不希望被自动触发的部署打断,不过也可以方便的在jenkins上手动触发执行;
- jenkins从Git拉代码 --> 编译 --> JS/CSS合并压缩 --> 其他初始化操作 -->
生成最终线上运行的代码包,通过Dockerfile打包成镜像上传到docker hub,然后触发kubernetes滚动更新; - 镜像包含了基础镜像+项目代码,基础镜像就是根据项目运营环境打包的一个最小化的运行环境(不包含项目代码),根据项目依赖的技术栈不同我们打包了很多不通类型的基础镜像,例如包含nginx服务的基础镜像,包含jdk+tomcat的基础镜像;
- 如果发现程序上线出错或有bug短时间内无法解决,可通过jenkins快速回滚到上一镜像版本,十分方便;
- 如果发现流量突然增高,可以通过kubernetes快速调整容器副本数量。
- 使用Harbor来做镜像仓库
总体流程就是,三台服务器分别部署jenkins,git/harbor,docker,分别安装好了以后,在jenkins中配置git/harbor拉取代码和上传镜像的shell脚本,并在jenkins中利用shell脚本推送新镜像到docker中运行。
2、k8s集群部署
整体来说就是采用yaml文件来对每个服务进行集群部署,每个服务集群要进行交互的话,还要开放ip+端口来供外部服务访问,具体实现步骤参考上面链接部署,过程比较繁杂。