PREFACE
前言
随着云原生技术的飞速发展以及敏捷开发的广泛应用,DevOps系统变得越来越重要。如今,我们很难想象一个研发团队,如果没有DevOps体系的支撑可以持续地健康发展。尤其随着微服务架构的深入人心,研发团队往往拥有多个微服务应用,传统的部署方式早已无法满足实际需求。在虚拟化技术和云原生技术飞速发展的背景下,当今互联网时代的绝大多数微服务部署要基于云原生技术,或者是虚拟化技术。
在DevOps体系中,Jenkins曾经充当了重要角色。但是随着业务的不断扩张和规模的不断扩大,以Jenkins为基础的DevOps流水线弊端日趋明显。因此,基于GitLab CI/CD技术和云原生技术相结合的DevOps自动化体系越来越受欢迎,导致越来越多的企业更喜欢使用GitLab CI/CD。
市面上关于GitLab CI/CD方面的书籍资料相对较少,有些也是仅仅停留在文档介绍层面,很少有书籍基于实战角度的介绍。因此,本书致力于从企业级实战应用的角度,介绍基于GitLab CI/CD和云原生技术相结合的DevOps体系建设。
本书共分为3篇。第1篇为DevOps技术基础,包含第1~3章:第1章介绍了云计算、云原生、微服务、敏捷开发、持续集成、DevOps等相关的技术;第2章详细介绍了docker容器技术;第3章详细介绍了Kubernetes技术。第2篇为GitLab CI/CD功能应用,包含第4~9章:第4章介绍了如何安装部署GitLab以及GitLab的基本应用;第5章介绍了GitLab CI/CD中的Runner类型及其部署方式;第6章介绍了GitLab CI/CD中流水线模型的类型选择与应用;第7章介绍了GitLab CI/CD中的变量类型与使用技巧;第8章介绍了GitLab CI/CD流水线的各种触发方式;第9章介绍了GitLab CI/CD中的缓存技术以及附件等。第3篇为企业级DevOps实战,包含第10~13章:第10章为环境准备,介绍了如何创建后端SpringBoot项目、前端Vue项目以及基于pytest框架的自动化测试体系;第11章介绍了静态代码检查步骤,包含如何搭建SonarQube平台、配置静态检查流水线和SpringBoot项目的单元测试流水线;第12章介绍了SpringBoot项目编译Jar包以及构建docker镜像的流水线,同时搭建私有化dockerhub,并构建前端项目的docker镜像;第13章结合Kubernetes环境,对前后端项目进行弹性扩缩容方式的部署,并从实际应用的角度设置了CI、测试、生产三套环境的部署以及自动化测试等。
本书从基础入手,层层递进。首先讲解了DevOps体系的基础,即云原生技术,以docker容器技术和Kubernetes技术为代表。然后从实际应用的角度介绍GitLab CI/CD功能的使用,比如第6章介绍流水线模型时,详细介绍了如何根据业务场景选择适合自己的流水线模型,而非简单地介绍GitLab CI/CD中的某几个关键字的使用方法。最后通过比较典型的前后端项目组合的例子,从企业实际需求出发,一步一步建立DevOps体系。本书特别强调灵活性,要因时因势地做出最符合自身的选择而非教条思维。坚持DevOps流水线是为了服务产品研发而非阻碍产品研发,这也是DevOps工作的出发点和落脚点。
本书涉及docker容器技术、Kubernetes技术、GitLab CI/CD技术以及综合实战。对docker技术感兴趣的读者可以重点阅读第2章,对Kubernetes技术感兴趣的读者可以重点阅读第3章,对GitLab CI/CD技术感兴趣的读者可以重点关注第4~9章。当然,对DevOps感兴趣的读者,既可以从头开始阅读,也可以根据自己的技术基础,选择性地阅读。此外,本书还可以作为众多DevOps工作者和爱好者手边查阅的工具书。总体来说,对于从事测试开发(尤其是从事研发质量平台建设)、测试(向测试开发转型)、运维(向自动化运维转型)及开发等岗位的读者,均可从本书获得提升自身价值的知识。
由于编者水平有限,书中难免有不足之处,恳请读者批评指正。