DevOps: 企業(yè)級CI/CD實戰(zhàn)
定 價:¥89
中 教 價:¥53.40 (6.00折)
庫 存 數(shù): 15
本書主要圍繞DevOps的核心CI/CD,詳細(xì)講解了企業(yè)級CI/CD的相關(guān)技術(shù)內(nèi)容。全書共11章,首先講解了持續(xù)集成系統(tǒng)Jenkins入門知識、Jenkins運維管理、Jenkins流水線的語法與進(jìn)階。接著講解了持續(xù)集成階段的工具平臺實踐、GitLab版本控制系統(tǒng)實踐、Maven等構(gòu)建工具實踐、SonarQube代碼質(zhì)量平臺實踐、Nexus Repository 3制品庫平臺實踐。持續(xù)部署分別基于云主機和Kubernetes環(huán)境的持續(xù)集成和持續(xù)部署實踐。最后講解了使用基礎(chǔ)設(shè)施即代碼工具Terraform管理阿里云平臺資源。通過本書的學(xué)習(xí),讀者將熟練掌握企業(yè)級CI/CD的實踐方法和思路。 本書適合具有1~3年運維或開發(fā)工作經(jīng)驗、或者對DevOps感興趣的讀者學(xué)習(xí)。
本書主要講解DevOps方法論中的CI/CD部分。從基礎(chǔ)理論到落地實踐,分別從持續(xù)集成階段工具和持續(xù)部署階段工具出發(fā)和落地。另外本書還融合了筆者多年開發(fā)經(jīng)驗與實踐的思考,以供讀者學(xué)習(xí)和借鑒。
前 言 創(chuàng)作背景 DevOps是一組實踐,由人、工具和文化理念組成。DevOps的核心是實現(xiàn)軟件開發(fā)團(tuán)隊和IT運維團(tuán)隊之間的流程自動化。自2018年起,筆者參與了大型企業(yè)中多個項目的DevOps項目實施和改進(jìn),從中積累了豐富的實踐經(jīng)驗。于是將實踐思考與開發(fā)經(jīng)驗整理成一本書分享給同路人共同學(xué)習(xí)和交流。 DevOps涵蓋的范圍非常廣,本書主要講解DevOps方法論中的CI/CD部分。從理論到實踐,分別從持續(xù)集成階段工具和持續(xù)部署階段工具出發(fā)和落地。注意:本書中的工具均采用開源版本。 目標(biāo)讀者 運維工程師。 開發(fā)工程師。 DevOps工程師。 路線圖 本書共11章: 第1章介紹了持續(xù)集成和持續(xù)部署的核心工具Jenkins的入門知識,包括Jenkins持續(xù)集成工具的安裝部署。 第2章分別通過用戶管理、權(quán)限管理、憑據(jù)管理3個方面講解Jenkins的系統(tǒng)運維管理。讀者可以掌握J(rèn)enkins運維管理技能。 第3章開始講解Jenkins的核心特性流水線即代碼實踐。讀者可以學(xué)習(xí)Pipeline定義、Pipeline核心語法、Pipeline開發(fā)工具、共享庫實踐。 第4章是對Pipeline的進(jìn)階實踐。讀者可以學(xué)習(xí)基于Groovy擴展流水線、流水線觸發(fā)器、流水線中常用的DSL方法。 第5章講解持續(xù)集成階段的代碼管理平臺實踐。讀者可以學(xué)習(xí)GitLab代碼管理平臺實踐和項目構(gòu)建工具實踐,了解從源代碼管理到編譯構(gòu)建的過程。 第6章講解持續(xù)集成階段的代碼質(zhì)量平臺實踐。讀者可以學(xué)習(xí)SonarQube平臺的安裝部署、配置管理、與Jenkins集成實踐。 第7章講解持續(xù)集成階段的制品庫平臺實踐。讀者可以學(xué)習(xí)使用Nexus Repository 3集中管理源代碼構(gòu)建制品和依賴,便于一次構(gòu)建,發(fā)布到不同的環(huán)境中運行。 第8章講解持續(xù)部署階段的云主機環(huán)境下的持續(xù)集成和持續(xù)部署流水線案例。讀者可以學(xué)習(xí)使用Jenkins持續(xù)集成生成制品,再通過集成Ansible進(jìn)行批量發(fā)布。 第9章講解Kubernetes環(huán)境持續(xù)集成和持續(xù)部署相關(guān)的基礎(chǔ)知識。讀者可以學(xué)習(xí)Docker容器、Kubernetes基礎(chǔ)知識,以及常用的發(fā)布策略原理,這些是對下一章實踐的鋪墊。 第10章講解持續(xù)部署階段的Kubernetes環(huán)境下的持續(xù)集成和持續(xù)部署流水線案例。讀者可以學(xué)習(xí)應(yīng)用從源代碼構(gòu)建生成鏡像、集成Helm發(fā)布到Kubernetes環(huán)境的整個過程。 第11章擴展Terraform基礎(chǔ)設(shè)施及代碼工具的實踐,講解了Terraform工具的實踐方式。讀者可以學(xué)習(xí)使用Terraform以代碼的方式管理阿里云平臺資源。 讀者服務(wù) 示例代碼。 學(xué)習(xí)視頻。 讀者可以通過掃碼訪問本書專享資源官網(wǎng),獲取示例代碼、學(xué)習(xí)視頻,加入讀者群,下載最新學(xué)習(xí)資源或反饋書中的問題。 勘誤和支持 由于筆者水平有限,書中難免會有疏漏和不妥之處,懇請廣大讀者批評指正。 致謝 首先,我要感謝我的家人,他們是我最可靠的后盾,一直在背后支持我,給我鼓勵和信心,讓我能夠?qū)W⒂诒緯淖珜。感謝清華大學(xué)出版社編輯,她為這本書的撰寫和出版做出了巨大的貢獻(xiàn)。她的專業(yè)知識和敏銳的洞察力幫助我不斷改進(jìn)書稿,使其更加出色。此外,我還要感謝那些曾經(jīng)為我提供幫助的人,包括我的導(dǎo)師、同事、朋友。他們的支持和鼓勵是我前進(jìn)的動力。最后,我想向所有的讀者表示感謝,希望你們能夠喜歡這本書,并且從中獲得更多的知識和技能。
李澤陽
李澤陽 DevOps領(lǐng)域?qū)嵺`者,Jenkins官方認(rèn)證工程師。一直深耕于DevOps和云原生領(lǐng)域,曾參與多個金融行業(yè)和互聯(lián)網(wǎng)行業(yè)大型團(tuán)隊DevOps項目實施與改進(jìn),積累了豐富的DevOps工程實戰(zhàn)經(jīng)驗。
第1章 Jenkins系統(tǒng)入門 1 1.1 Jenkins系統(tǒng)概述 1 1.1.1 Jenkins概述 1 1.1.2 Jenkins應(yīng)用場景 2 1.2 Jenkins系統(tǒng)安裝 3 1.2.1 準(zhǔn)備工作 4 1.2.2 安裝Jenkins 5 1.2.3 初始化 7 1.2.4 安裝Agent節(jié)點 11 1.3 Jenkins數(shù)據(jù)目錄 16 1.4 本章小結(jié) 18 第2章 Jenkins系統(tǒng)管理 19 2.1 用戶管理 19 2.1.1 Jenkins本地用戶 19 2.1.2 LDAP認(rèn)證集成 21 2.2 權(quán)限管理 24 2.2.1 準(zhǔn)備 24 2.2.2 安裝Role-based插件 26 2.2.3 創(chuàng)建角色 27 2.2.4 授權(quán)角色 29 2.2.5 測試權(quán)限 29 2.3 憑據(jù)管理 30 2.3.1 安裝憑據(jù)插件 30 2.3.2 創(chuàng)建憑據(jù) 32 2.4 本章小結(jié) 33 第3章 Jenkins Pipeline實戰(zhàn) 34 3.1 什么是Pipeline 34 3.1.1 Pipeline簡介 34 3.1.2 為什么使用Pipeline 35 3.1.3 什么是Jenkinsfile 36 3.2 Pipeline核心語法 36 3.2.1 agent節(jié)點 37 3.2.2 stages階段 38 3.2.3 post構(gòu)建后操作 38 3.2.4 environment環(huán)境變量 39 3.2.5 options運行選項 40 3.2.6 parameters參數(shù) 41 3.2.7 triggers觸發(fā)器 42 3.2.8 input交互 43 3.2.9 when階段運行控制 44 3.2.10 parallel并行運行 45 3.3 Pipeline開發(fā)工具 46 3.4 共享庫實踐 49 3.4.1 創(chuàng)建共享庫 49 3.4.2 編寫共享庫代碼 50 3.4.3 修改全局設(shè)置 50 3.4.4 加載共享庫 52 3.5 本章小結(jié) 53 第4章 Jenkins Pipeline進(jìn)階 54 4.1 Groovy編程語法 54 4.1.1 數(shù)據(jù)類型 54 4.1.2 控制語句 58 4.1.3 異常處理 61 4.1.4 函數(shù) 61 4.2 Jenkins觸發(fā)器 62 4.2.1 安裝觸發(fā)器 63 4.2.2 配置觸發(fā)器 63 4.2.3 解析Request參數(shù) 65 4.2.4 解析Header參數(shù) 68 4.2.5 解析Post參數(shù) 70 4.3 常用的DSL語句 73 4.3.1 獲取當(dāng)前觸發(fā)用戶 73 4.3.2 JSON數(shù)據(jù)解析 75 4.3.3 在Pipeline中使用憑據(jù) 76 4.3.4 自定義構(gòu)建ID和描述 77 4.4 本章小結(jié) 78 第5章 項目代碼管理 79 5.1 GitLab系統(tǒng)入門 79 5.1.1 GitLab概述 79 5.1.2 GitLab安裝部署 80 5.2 GitLab工作流 82 5.2.1 創(chuàng)建項目組和項目 82 5.2.2 生成和提交項目代碼 86 5.2.3 分支開發(fā)策略 87 5.3 提交流水線實踐 89 5.3.1 Jenkins配置 89 5.3.2 GitLab配置 92 5.3.3 編寫Pipeline 96 5.3.4 Pipeline優(yōu)化 100 5.4 項目構(gòu)建工具 102 5.4.1 Maven構(gòu)建 102 5.4.2 Gradle構(gòu)建 104 5.4.3 NPM構(gòu)建 106 5.5 本章小結(jié) 108 第6章 代碼質(zhì)量平臺實戰(zhàn) 109 6.1 SonarQube系統(tǒng)入門 109 6.1.1 SonarQube概述 109 6.1.2 SonarQube安裝 111 6.1.3 插件管理 113 6.2 SonarQube代碼掃描 115 6.2.1 SonarQube質(zhì)量配置 115 6.2.2 SonarQube質(zhì)量閾 116 6.2.3 Sonar Scanner配置 117 6.3 SonarQube系統(tǒng)集成 121 6.3.1 準(zhǔn)備工作 121 6.3.2 命令行方式 122 6.3.3 Jenkins插件 127 6.3.4 多分支代碼掃描 130 6.4 本章小結(jié) 134 第7章 制品庫平臺實戰(zhàn) 135 7.1 制品庫平臺入門 135 7.1.1 管理規(guī)范 135 7.1.2 Nexus Repository 3概述 136 7.2 Nexus Repository實踐 137 7.2.1 Nexus Repository 3安裝 137 7.2.2 搭建Maven私服倉庫 138 7.2.3 搭建Maven本地倉庫 140 7.2.4 制品上傳方式 141 7.3 Nexus Repository擴展實踐 144 7.3.1 調(diào)試REST API 144 7.3.2 上傳Raw類型制品 146 7.3.3 Jenkins插件上傳制品 147 7.4 本章小結(jié) 149 第8章 云主機環(huán)境持續(xù)部署 150 8.1 項目準(zhǔn)備工作 150 8.1.1 分支策略 150 8.1.2 環(huán)境準(zhǔn)備 151 8.1.3 Ansible配置 152 8.1.4 Pipeline設(shè)計 153 8.2 持續(xù)集成實踐 154 8.2.1 準(zhǔn)備工作 154 8.2.2 設(shè)置Pipeline 157 8.3 持續(xù)部署實踐 164 8.3.1 準(zhǔn)備工作 164 8.3.2 設(shè)置Pipeline 167 8.4 本章小結(jié) 173 第9章 Kubernetes基礎(chǔ) 175 9.1 Docker容器基礎(chǔ) 175 9.1.1 Docker簡介 175 9.1.2 Docker鏡像構(gòu)建 176 9.1.3 Docker鏡像管理 178 9.2 Kubernetes基礎(chǔ) 180 9.2.1 資源對象 181 9.2.2 Kubectl工具發(fā)布 183 9.2.3 Helm工具發(fā)布 183
9.3 Kubernetes部署策略 184 9.3.1 滾動更新 184 9.3.2 零停機部署 185 9.4 本章小結(jié) 186 第10章 Kubernetes持續(xù)部署 187 10.1 持續(xù)集成流水線 187 10.1.1 準(zhǔn)備工作 187 10.1.2 設(shè)置Pipeline 190 10.1.3 啟用GitOps 196 10.2 基于Kubectl持續(xù)部署 205 10.2.1 準(zhǔn)備工作 205 10.2.2 設(shè)置Pipeline 207 10.3 基于Helm持續(xù)部署 211 10.3.1 準(zhǔn)備工作 212 10.3.2 設(shè)置Pipeline 213 10.4 本章小結(jié) 218 第11章 基礎(chǔ)設(shè)施即代碼 219 11.1 Terraform入門 219 11.2 供應(yīng)商Provider 221 11.3 定義云資源 224 11.4 開通資源 226 11.5 本章小結(jié) 229