企業(yè)級(jí)DevOps應(yīng)用實(shí)戰(zhàn):基于GitLab CI/CD和云原生技術(shù) 溫紅化
定 價(jià):99.9 元
- 作者:溫紅化
- 出版時(shí)間:2024/2/1
- ISBN:9787111744610
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TP311.5
- 頁碼:
- 紙張:膠版紙
- 版次:
- 開本:16開
本書展示了以GitLab CI/CD 流水線為基礎(chǔ),結(jié)合時(shí)下十分火熱的云原生技術(shù),打造企業(yè)級(jí)DevOps應(yīng)用體系的全流程。
全書共分為3篇,第1篇為第1~3章,主要介紹云計(jì)算、云原生、微服務(wù)、敏捷開發(fā)、持續(xù)集成、DevOps、docker容器技術(shù)以及Kubernetes(簡(jiǎn)稱K8s)核心技術(shù)等。第2篇為第4~9章,主要介紹了GitLab安裝部署與基礎(chǔ)使用、GitLab CI/CD中Runner的類型以及部署、GitLab CI/CD流水線模型、GitLab CI/CD變量、GitLab CI/CD流水線的觸發(fā)方式以及GitLab CI/CD流水線中的緩存和附件等。第3篇為第10~13章,主要介紹了前后端項(xiàng)目的創(chuàng)建、GitLab CI/CD中基于SonarQube的靜態(tài)代碼檢查,以及GitLab CI/CD 中的編譯、構(gòu)建、發(fā)布、部署、測(cè)試和上線等流程。
全書以搭建企業(yè)級(jí)DevOps應(yīng)用平臺(tái)為目標(biāo),從云原生技術(shù)基礎(chǔ)容器以及Kubernetes技術(shù)入手;然后介紹了GitLab CI/CD的常見功能應(yīng)用;最后從零開始,以經(jīng)典的前后端項(xiàng)目為例,以解決企業(yè)內(nèi)研發(fā)流程的困境為思路,一步一步地將整個(gè)項(xiàng)目的DevOps流水線創(chuàng)建起來。此外,還結(jié)合Kubernetes技術(shù)進(jìn)行可動(dòng)態(tài)伸縮的彈性部署上線。
本書適合對(duì)docker技術(shù)、K8s技術(shù)、GitLab技術(shù)及DevOps技術(shù)感興趣的讀者和相關(guān)工作人員。隨書配備了案例源代碼、授課用PPT及教學(xué)視頻(掃碼觀看),可以幫助讀者更好地學(xué)習(xí)這些知識(shí)。
通過本書的學(xué)習(xí),讀者既可以掌握以docker容器技術(shù)和Kubernetes技術(shù)為代表的云原生技術(shù),又可以掌握GitLab CI/CD中豐富的流水線功能,最重要的是可以更容易地搭建起企業(yè)級(jí)應(yīng)用的DevOps平臺(tái)。
基于云原生和GitOps思想
匯集Docker、K8s、GitLab Cl/CD技術(shù)
CI/CD流水線設(shè)計(jì)與應(yīng)用實(shí)戰(zhàn)
提供源代碼、PPT及掃碼看視頻
隨著云原生技術(shù)的飛速發(fā)展以及敏捷開發(fā)的廣泛應(yīng)用,DevOps系統(tǒng)變得越來越重要。如今,我們很難想象一個(gè)研發(fā)團(tuán)隊(duì),如果沒有DevOps體系的支撐可以持續(xù)地健康發(fā)展。尤其隨著微服務(wù)架構(gòu)的深入人心,研發(fā)團(tuán)隊(duì)往往擁有多個(gè)微服務(wù)應(yīng)用,傳統(tǒng)的部署方式早已無法滿足實(shí)際需求。在虛擬化技術(shù)和云原生技術(shù)飛速發(fā)展的背景下,當(dāng)今互聯(lián)網(wǎng)時(shí)代的絕大多數(shù)微服務(wù)部署要基于云原生技術(shù),或者是虛擬化技術(shù)。
在DevOps體系中,Jenkins曾經(jīng)充當(dāng)了重要角色。但是隨著業(yè)務(wù)的不斷擴(kuò)張和規(guī)模的不斷擴(kuò)大,以Jenkins為基礎(chǔ)的DevOps流水線弊端日趨明顯。因此,基于GitLab CI/CD技術(shù)和云原生技術(shù)相結(jié)合的DevOps自動(dòng)化體系越來越受歡迎,導(dǎo)致越來越多的企業(yè)更喜歡使用GitLab CI/CD。
市面上關(guān)于GitLab CI/CD方面的書籍資料相對(duì)較少,有些也是僅僅停留在文檔介紹層面,很少有書籍基于實(shí)戰(zhàn)角度的介紹。因此,本書致力于從企業(yè)級(jí)實(shí)戰(zhàn)應(yīng)用的角度,介紹基于GitLab CI/CD和云原生技術(shù)相結(jié)合的DevOps體系建設(shè)。
本書共分為3篇。第1篇為DevOps技術(shù)基礎(chǔ),包含第1~3章:第1章介紹了云計(jì)算、云原生、微服務(wù)、敏捷開發(fā)、持續(xù)集成、DevOps等相關(guān)的技術(shù);第2章詳細(xì)介紹了docker容器技術(shù);第3章詳細(xì)介紹了Kubernetes技術(shù)。第2篇為GitLab CI/CD功能應(yīng)用,包含第4~9章:第4章介紹了如何安裝部署GitLab以及GitLab的基本應(yīng)用;第5章介紹了GitLab CI/CD中的Runner類型及其部署方式;第6章介紹了GitLab CI/CD中流水線模型的類型選擇與應(yīng)用;第7章介紹了GitLab CI/CD中的變量類型與使用技巧;第8章介紹了GitLab CI/CD流水線的各種觸發(fā)方式;第9章介紹了GitLab CI/CD中的緩存技術(shù)以及附件等。第3篇為企業(yè)級(jí)DevOps實(shí)戰(zhàn),包含第10~13章:第10章為環(huán)境準(zhǔn)備,介紹了如何創(chuàng)建后端SpringBoot項(xiàng)目、前端Vue項(xiàng)目以及基于pytest框架的自動(dòng)化測(cè)試體系;第11章介紹了靜態(tài)代碼檢查步驟,包含如何搭建SonarQube平臺(tái)、配置靜態(tài)檢查流水線和SpringBoot項(xiàng)目的單元測(cè)試流水線;第12章介紹了SpringBoot項(xiàng)目編譯Jar包以及構(gòu)建docker鏡像的流水線,同時(shí)搭建私有化dockerhub,并構(gòu)建前端項(xiàng)目的docker鏡像;第13章結(jié)合Kubernetes環(huán)境,對(duì)前后端項(xiàng)目進(jìn)行彈性擴(kuò)縮容方式的部署,并從實(shí)際應(yīng)用的角度設(shè)置了CI、測(cè)試、生產(chǎn)三套環(huán)境的部署以及自動(dòng)化測(cè)試等。
本書從基礎(chǔ)入手,層層遞進(jìn)。首先講解了DevOps體系的基礎(chǔ),即云原生技術(shù),以docker容器技術(shù)和Kubernetes技術(shù)為代表。然后從實(shí)際應(yīng)用的角度介紹GitLab CI/CD功能的使用,比如第6章介紹流水線模型時(shí),詳細(xì)介紹了如何根據(jù)業(yè)務(wù)場(chǎng)景選擇適合自己的流水線模型,而非簡(jiǎn)單地介紹GitLab CI/CD中的某幾個(gè)關(guān)鍵字的使用方法。最后通過比較典型的前后端項(xiàng)目組合的例子,從企業(yè)實(shí)際需求出發(fā),一步一步建立DevOps體系。本書特別強(qiáng)調(diào)靈活性,要因時(shí)因勢(shì)地做出最符合自身的選擇而非教條思維。堅(jiān)持DevOps流水線是為了服務(wù)產(chǎn)品研發(fā)而非阻礙產(chǎn)品研發(fā),這也是DevOps工作的出發(fā)點(diǎn)和落腳點(diǎn)。
本書涉及docker容器技術(shù)、Kubernetes技術(shù)、GitLab CI/CD技術(shù)以及綜合實(shí)戰(zhàn)。對(duì)docker技術(shù)感興趣的讀者可以重點(diǎn)閱讀第2章,對(duì)Kubernetes技術(shù)感興趣的讀者可以重點(diǎn)閱讀第3章,對(duì)GitLab CI/CD技術(shù)感興趣的讀者可以重點(diǎn)關(guān)注第4~9章。當(dāng)然,對(duì)DevOps感興趣的讀者,既可以從頭開始閱讀,也可以根據(jù)自己的技術(shù)基礎(chǔ),選擇性地閱讀。此外,本書還可以作為眾多DevOps工作者和愛好者手邊查閱的工具書?傮w來說,對(duì)于從事測(cè)試開發(fā)(尤其是從事研發(fā)質(zhì)量平臺(tái)建設(shè))、測(cè)試(向測(cè)試開發(fā)轉(zhuǎn)型)、運(yùn)維(向自動(dòng)化運(yùn)維轉(zhuǎn)型)及開發(fā)等崗位的讀者,均可從本書獲得提升自身價(jià)值的知識(shí)。
由于編者水平有限,書中難免有不足之處,懇請(qǐng)讀者批評(píng)指正。
溫紅化
中國(guó)科學(xué)院軟件研究所資深DevOps工程師,負(fù)責(zé)建設(shè)團(tuán)隊(duì)DevOps體系及自動(dòng)化測(cè)試體系,在自動(dòng)化測(cè)試、CI/CD流水線、工具開發(fā)和自動(dòng)化運(yùn)維等測(cè)試開發(fā)領(lǐng)域擁有豐富的實(shí)戰(zhàn)經(jīng)驗(yàn)。曾在華為、中興主持過大型產(chǎn)品團(tuán)隊(duì)的DevOps體系建設(shè)及自動(dòng)化測(cè)試體系建設(shè),對(duì)DevOps有深刻而獨(dú)到的見解。
第1篇DevOps技術(shù)基礎(chǔ)
第1章 DevOps技術(shù)背景
1.1云計(jì)算簡(jiǎn)介
1.1.1什么是虛擬化技術(shù)
1.1.2什么是云計(jì)算
1.1.3云計(jì)算的類型與應(yīng)用
1.2云原生簡(jiǎn)介
1.3微服務(wù)簡(jiǎn)介
1.4敏捷開發(fā)簡(jiǎn)介
1.5CICD簡(jiǎn)介
1.6DevOps簡(jiǎn)介
1.7GitLab CICD簡(jiǎn)介
第2章 容器技術(shù)基礎(chǔ)
2.1容器概述
2.1.1容器技術(shù)簡(jiǎn)介
2.1.2docker技術(shù)簡(jiǎn)介
2.2虛擬機(jī)及docker環(huán)境安裝
2.2.1VMware虛擬機(jī)的安裝
2.2.2VMware安裝CentOS 7操作系統(tǒng)的虛擬機(jī)
2.2.3docker環(huán)境安裝
2.3docker鏡像常用操作命令
2.4docker容器的基礎(chǔ)應(yīng)用
2.4.1docker容器的常用操作命令詳解
2.4.2docker容器實(shí)戰(zhàn):基于docker部署MySQL數(shù)據(jù)庫
2.5自定義docker鏡像
2.5.1Dockerfile常用的語法
2.5.2鏡像編譯實(shí)戰(zhàn):將flask應(yīng)用編譯為docker鏡像并部署
2.5.3發(fā)布鏡像到dockerhub
2.6docker-compose的應(yīng)用
2.6.1docker-compose的安裝
2.6.2docker-compose實(shí)戰(zhàn):編譯部署flask應(yīng)用與redis數(shù)據(jù)庫
2.7搭建私有dockerhub服務(wù)
2.8DockerSwarm集群
2.8.1DockerSwarm集群部署
2.8.2基于DockerSwarm實(shí)現(xiàn)服務(wù)彈性擴(kuò)縮容
第3章 Kubernetes核心技術(shù)
3.1初識(shí)Kubernetes
3.1.1Kubernetes的產(chǎn)生背景
3.1.2Kubernetes的組件
3.1.3Kubernetes的常見插件
3.2Kubernetes集群環(huán)境搭建
3.3Kubernetes快速體驗(yàn)
3.4Kubernetes的命名空間
3.4.1對(duì)命名空間進(jìn)行操作
3.4.2利用yaml配置文件方式處理命名空間
3.5Pod基礎(chǔ)操作
3.5.1通過命令行方式操作Pod
3.5.2通過yaml配置文件的方式操作Pod
3.5.3Pod的yaml配置文件的編寫方法
3.6Pod中常用配置
3.6.1Pod中的容器名稱和鏡像配置
3.6.2Pod中容器鏡像拉取策略配置
3.6.3Pod中容器的環(huán)境變量配置
3.6.4Pod中容器啟動(dòng)命令配置
3.6.5Pod中容器的端口配置
3.6.6Pod中容器的配額配置
3.6.7Pod中的容器探針配置
3.6.8Pod中的初始化容器
3.6.9Pod中的鉤子函數(shù)
3.6.10Pod的定向調(diào)度方式
3.6.11Pod的親和性調(diào)度方式
3.6.12污點(diǎn)與容忍的調(diào)度方式
3.7Pod控制器
3.7.1Pod控制器簡(jiǎn)介
3.7.2ReplicaSet控制器
3.7.3Deployment控制器
3.7.4Deployment控制器實(shí)現(xiàn)滾動(dòng)發(fā)布
3.7.5Deployment控制器實(shí)現(xiàn)版本回退
3.7.6Deployment控制器實(shí)現(xiàn)金絲雀發(fā)布
3.7.7HPA控制器實(shí)現(xiàn)全自動(dòng)動(dòng)態(tài)擴(kuò)縮容
3.7.8DaemonSet控制器
3.7.9Job和CronJob控制器
3.7.10StatefulSet控制器
3.8Kubernetes中Service服務(wù)組件
3.8.1ClusterIP類型的Service
3.8.2Headless類型的Service
3.8.3NodePort類型的Service
3.8.4ExternalName類型的Service
3.9Kubernetes中的存儲(chǔ)管理
3.9.1HostPath類型的存儲(chǔ)
3.9.2NFS類型的存儲(chǔ)
3.9.3PV和PVC
3.9.4ConfigMap配置存儲(chǔ)
3.9.5Secret安全存儲(chǔ)第2篇GitLab CICD功能應(yīng)用
第4章 GitLab基礎(chǔ)
4.1GitLab CICD簡(jiǎn)介
4.2GitLab環(huán)境部署
4.2.1基于Linux虛擬機(jī)部署GitLab
4.2.2基于docker部署GitLab
4.2.3基于Kubernetes部署GitLab
4.3GitLab基礎(chǔ)應(yīng)用
4.3.1GitLab創(chuàng)建組及項(xiàng)目
4.3.2GitLab代碼倉分支管理
4.3.3GitLab需求任務(wù)管理
4.4GitLab代碼管理
4.4.1配置SSH公鑰
4.4.2更新與提交代碼
4.5Git常用命令
4.5.1安裝Git客戶端
4.5.2Git常用的命令
第5章 GitLab CICD配置Runners
5.1GitLab-Runner簡(jiǎn)介
5.2注冊(cè)GitLab-Runner準(zhǔn)備工作
5.3配置shell類型的GitLab-Runner
5.4配置docker類型的GitLab-Runner
第6章 GitLab CICD流水線模型
6.1GitLab CICD流水線快速體驗(yàn)
6.2基本類型流水線
6.3有向圖(DAG)類型流水線
6.4父子類型流水線
6.5多項(xiàng)目類型流水線
第7章 GitLab CICD變量
7.1預(yù)定義變量
7.2yaml中自定義變量
7.3UI中自定義變量目錄
第8章GitLab CICD流水線的觸發(fā)方式
8.1通過指定分支名觸發(fā)
8.2通過MergeRequest觸發(fā)
8.3通過打tag觸發(fā)
8.4手動(dòng)按鈕觸發(fā)
8.5定時(shí)任務(wù)觸發(fā)
8.6通過trigger觸發(fā)
8.7通過檢測(cè)指定目錄文件修改觸發(fā)
8.8通過正則匹配方式觸發(fā)
第9章GitLab CICD中的緩存與附件
9.1相同分支不同Job之間實(shí)現(xiàn)數(shù)據(jù)共享
9.2不同分支相同Job之間實(shí)現(xiàn)數(shù)據(jù)共享
9.3不同分支不同Job之間實(shí)現(xiàn)數(shù)據(jù)共享
9.4將文件文件夾保存為附件
9.5基于artifacts在不同的Job和runner之間實(shí)現(xiàn)數(shù)據(jù)共享
第3篇企業(yè)級(jí)DevOps實(shí)戰(zhàn)
第10章環(huán)境準(zhǔn)備
10.1基于SpringBoot創(chuàng)建后端項(xiàng)目
10.2基于Vue創(chuàng)建前端項(xiàng)目
10.3基于pytest創(chuàng)建自動(dòng)化測(cè)試
10.4DevOps流水線設(shè)計(jì)
第11章GitLab CICD靜態(tài)代碼檢查
11.1后端Java項(xiàng)目的單元測(cè)試
11.2部署SonarQube平臺(tái)
11.3配置SonarQube集成GitLab
11.4配置SonarQube使用GitLab賬號(hào)授權(quán)登錄
11.5配置后端Java項(xiàng)目靜態(tài)代碼檢查
第12章GitLab CICD 編譯發(fā)布
12.1后端Java項(xiàng)目編譯Jar包
12.2后端Java項(xiàng)目構(gòu)建docker鏡像
12.3前端Web項(xiàng)目構(gòu)建docker鏡像
第13章GitLab CICD 部署應(yīng)用
13.1后端Java項(xiàng)目部署
13.2前端Web項(xiàng)目部署
13.3部署自動(dòng)化測(cè)試
13.4DevOps流水線應(yīng)用流程