现状:
网络媒体行业,运维和开发流程都很传统(落后)。有 200 来台物理服务器,由于没有个 IaaS 平台,OS 直接安装在物理机上,靠的是人力一台一台安装维护,传统 LNMP 架构,环境搭建配置基本靠脚本来做。用 docker 容器来跑部分应用,应用部署和更新都是用 ftp 上传。用 Nagios 和 Cacti 做系统和应用的监控报警,需要在被监控的机器上一个个安装客户端并配置。没有集中的日志收集和分析处理平台,各个应用和系统日志都分散在不同机器上。用 bucula 做数据备份。用 gitlab 做代码托管,没有启动 CI/CD,也没有 code review,不写测试,基本靠开发人员手工点击无明显 bug 就上线了。
考虑到这样下去实在落后,对公司对个人成长都有极大的坏处,必须做出改变了。看到一篇讲京东 JDOS2.0 的文章,受里面提到的技术栈启发,决定对现有架构做改造。
首先是搭建 IaaS 平台,可选方案有 Vmware vSphere 和 OpenStack,前者需要商业授权,价格昂贵,但相对稳定且对运维人员要求不高;后者开源免费但稳定性存疑,并且专业要求高;怎么选?
其次是 PaaS 平台,打算选择 Kubernetes+docker 的方案。集中日志处理,采用 ElasticSearch + Logstash + Kibana 方案;采用 Jenkins 做 CI/CD ;运维方面,使用 Ansible 做自动化配置管理。
最后需要实现的一个一站式解决方案如下:
1、开发者提交代码到源码管理库
2、触发 Jenkins Master 生成构建任务
3、Jenkins Master 使用 Kubernetes 生成 Jenkins Slave Pod
4、Jenkins Slave 拉取源码进行编译打包
5、将打包好的文件和 Dockerfile 发送到构建节点
6、在构建节点中构建生成镜像
7、将镜像推送到镜像中心 Harbor
8、根据需要在不同环境生产 /更新应用容器
可以想见,要达到上面的效果,有大量的工作要做,有无数的坑等着。各位有何看法?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.