DevOps 概述
结为金丹客,方为我辈人。
DevOps 是什么?
DevOps(Development和Operations的组合词)是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。——维基百科
也就是说,其实DevOps 的重点在于提高开发和运维的效率,其中主要分为2部分,持续集成(CI) 和持续部署(CD),CI侧重于对于开发铜须代码质量的把控,CD侧重于运维同学交付的标准和结果。 CI 和CD结合在一起,才能产生高性能,低错误的一套交付流程。
在使用过程中,对于开发研发的新功能,持续集成最终通过满足CD条件,即可直接进入CD部署环节,实现代码迭代升级的持续化。在软件开发过程中,无论是开发人员,测试人员,运维人员,项目管理人员等,均可从此流程中获取各个职位关注的信息,减少了因为沟通或者环境或人为因素带来 的错误,极大的提升效率。
image.png对于K8S 的支持
很多公司使用jenkins 作为CI 的平台,或者也有gitlab 的CICD pipeline 来实现devops 标准,但是和 k8s 结合起来的并不多。 CICD流程的容器化其实在k8s 是非常容易实现的,但是可能搭建的难度稍微高一点,这里成功的阻碍了大多数公司的devops流程的容器化。
通过结合CI 工具(如jenkins ,argo ,travis-ci ,drone )完成持续集成之后,结合Helm 工具,可以更加简化k8s 的部署流程,对于运维来说,更加透明化。
思路
准备条件
- 代码存储,一般公司有自己的gitlab或gitee,难道还有用svn 的?
- 提交规范,参考git-flow 规范
- 静态检查,参考sonarqube 或者其他的静态代码检查工具
- 单元测试, 不同的build 工具,可以自行寻找组件,一般比较多
- 项目容器化, 简单点就是项目自己维护自己的Dockerfile, 复杂点用插件
- nexus 私服
- 镜像仓库, 可以使用阿里云或者其他的,自己搭建harbor也可以,但是一定是最终网络和k8s 集群的机器是可以互通的
- build 环境,Docker引擎的支持,Jenkins-X master-slave 集群,以及各种工具镜像,如maven ,gradle 等。
- 基础镜像的支持,一般公司都会有自己的企业基础镜像吧,这样后期改点东西比较简单
- helm 工具,helm 环境
- 整个流程遵循pipeline 规范
- 遵循pipeline ,需要一个共享存储服务,可以使用nfs 搭建或者ceph
以上,所有的组件均可以在k8s 平台上实现。
网友评论