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