最近四年主要工作内容主要以kubernetes与自动化运维为主,也对k8s的生态有着长期地关注,在kvm和vmware虚拟化和容器化有着丰富的经验。在过往的工作经历中自动化部署和k8s对服务器的资源动态管理、应用的高可用、服务的自动注册等有着深刻的体会。容器化对业务的快速部署、效率的提高有着重大意义。
我喜欢新技术,业务运维能力强,能快速故障定位、协同解决问题,在工作后自学 docker、虚拟化、kubernetes、jaeger、loki、cicd这些前言技术,从传统运维转向容器化运维。
项目要求:
在公司内部署一套CI/CD平台,用来实现自动化发版到不同环境
要求:
● 两套环境,一套做开发环境,一套做测试环境
● 结合docker,实现容器化,并实现统一编排
● 开发者只负责提交源码
● 实现半自动上线到正式环境过渡到全自动上线
● 不同环境使用不同的域名,准备不同的配置文件
● 同种开发语言使用一套部署脚本
● 开发人员绑定hosts或使用内部DNS来自动解析
● 部署脚本模块化
● 因项目不同,会有定时任务和守护进程
项目结果
● 准备两台虚拟机并安装docker。开始着手准备Dockerfile来构建基础镜像,在制作完成镜像之后上传到内网镜像仓库。公司项目分为php、nodejs、go三种语言。按照每种语言开始编写脚本.
● 脚本实现功能:自动判断部署环境获取不同配置文件后对项目进行构建编译
● 镜像保存之后开始调用部署脚本,通过执行docker-compose拉取相应的镜像,将项目运行起来
● 项目运行后会有定时任务和项目守护进程同时存在
在gitlab中使用webhook钩子将分支PUSH信息发送给jenkins;jenkins收到POST信息之后开始根据规则进行过滤,对于符合条件的请求调用pipeline程序执行Jenkinsfile,每一个环境都有一个Jenkinsfile