關(guān)于我們
書單推薦
新書推薦
|
企業(yè)級Go項目開發(fā)實戰(zhàn) 讀者對象:1.Go語言的初學(xué)者;2.利用Go語言開發(fā)項目的工程師,尤其是中初級工程師;
這是一本手把手教讀者如何零基礎(chǔ)快速掌握企業(yè)級Go項目全流程開發(fā)的實戰(zhàn)性著作。內(nèi)容初稿源于極客時間上的專欄(有超過25000人付費學(xué)習(xí)),圖書內(nèi)容在專欄的基礎(chǔ)上做了全面的更新和大量的補充。
作者是騰訊云的技術(shù)專家,有多年的企業(yè)級Go項目開發(fā)經(jīng)驗。全書圍繞一個可部署、可運行的企業(yè)級Go應(yīng)用(附源碼,可二次開發(fā))展開,覆蓋項目全生命周期的所有環(huán)節(jié),不僅將每個環(huán)節(jié)涉及的原理、步驟講解得非常詳細(xì),而且把項目涉及的Go語言知識點全部娓娓道來。每個知識點都朝著*佳實踐方向去設(shè)計,采用了業(yè)界共識程度*高的Go包、Go設(shè)計模式、Go開發(fā)規(guī)范、Go簡潔架構(gòu)等,不僅能讓讀者事半功倍地掌握企業(yè)級Go項目的開發(fā)方法,而且能學(xué)到一線大廠的*佳實踐。 本書內(nèi)容翔實,篇幅較大,一共31章,分為六個部分:第一部分是項目開始前的準(zhǔn)備工作,包括貫穿全書的實戰(zhàn)項目IAM的介紹與部署,以及Go開發(fā)環(huán)境的搭建;第二至六部分詳細(xì)講解了項目的設(shè)計、管理、開發(fā)、測試、部署等。包含了規(guī)范設(shè)計、文檔編寫、開發(fā)流程管理、功能設(shè)計與實現(xiàn)、項目測試、性能優(yōu)化、高可用、高安全、水平擴展等方方面面。旨在幫助讀者徹底學(xué)會如何構(gòu)建企業(yè)級 Go 項目,并解決 Go 項目開發(fā)所面臨的各類問題。
第一部分 項目準(zhǔn)備
第1章 Go開發(fā)環(huán)境準(zhǔn)備2 1.1 機器選擇2 1.1.1 開發(fā)機選擇3 1.1.2 辦公機選擇3 1.2 Windows終端模擬器安裝和配置3 1.3 Linux服務(wù)器申請和配置4 1.3.1 Linux服務(wù)器申請4 1.3.2 登錄Linux服務(wù)器5 1.3.3 Linux服務(wù)器配置6 1.3.4 依賴安裝和配置8 1.4 Go編譯環(huán)境安裝和配置9 1.4.1 Go編譯工具安裝和配置10 1.4.2 Protobuf編譯環(huán)境安裝11 1.5 Go IDE安裝和配置12 1.6 本章總結(jié)14 第2章 快速部署IAM系統(tǒng)15 2.1 為什么選擇IAM系統(tǒng)作為實戰(zhàn)項目15 2.2 IAM系統(tǒng)概述16 2.2.1 IAM資源授權(quán)流程16 2.2.2 IAM系統(tǒng)架構(gòu)介紹17 2.2.3 通過使用流程理解架構(gòu)18 2.3 下載IAM項目代碼20 2.4 安裝和配置數(shù)據(jù)庫21 2.4.1 配置scripts/install/environment.sh21 2.4.2 安裝和配置MariaDB21 2.4.3 安裝和配置Redis22 2.4.4 安裝和配置MongoDB22 2.5 安裝和配置IAM系統(tǒng)24 2.5.1 準(zhǔn)備工作25 2.5.2 安裝和配置iam-apiserver28 2.5.3 安裝iamctl32 2.5.4 安裝和配置iam-authz-server34 2.5.5 安裝和配置iam-pump36 2.5.6 安裝和配置 iam-watcher38 2.5.7 安裝 man 文件39 2.5.8 測試IAM系統(tǒng)是否安裝成功40 2.6 彩蛋:一鍵安裝40 2.7 本章總結(jié)41 第二部分 項目設(shè)計 第3章 規(guī)范設(shè)計44 3.1 有哪些地方需要制定規(guī)范44 3.2 開源規(guī)范45 3.2.1 開源協(xié)議概述45 3.2.2 開源協(xié)議選擇46 3.2.3 開源規(guī)范有什么47 3.2.4 開源規(guī)范詳細(xì)內(nèi)容47 3.2.5 運營開源項目48 3.3 文檔規(guī)范49 3.3.1 README 文檔規(guī)范49 3.3.2 項目文檔規(guī)范50 3.3.3 API文檔規(guī)范51 3.4 Commit Message規(guī)范53 3.4.1 Commit Message規(guī)范有哪些53 3.4.2 與Commit Message相關(guān)的3個 重要內(nèi)容59 3.4.3 Commit Message規(guī)范自動化66 3.5 版本規(guī)范67 3.5.1 什么是語義化版本規(guī)范67 3.5.2 語義化版本規(guī)范示例69 3.5.3 如何確定版本號69 3.6 本章總結(jié)69 第4章 目錄結(jié)構(gòu)設(shè)計71 4.1 如何規(guī)范目錄71 4.2 平鋪式目錄結(jié)構(gòu)72 4.3 結(jié)構(gòu)化目錄結(jié)構(gòu)73 4.3.1 Go應(yīng)用:主要存放前后端代碼75 4.3.2 Go應(yīng)用:主要存放測試相關(guān)的 文件和代碼78 4.3.3 Go應(yīng)用:存放與應(yīng)用部署相關(guān) 的文件78 4.3.4 項目管理:存放管理Go項目的 各類文件79 4.3.5 文檔:主要存放項目的各類文檔80 4.3.6 不建議的目錄82 4.4 一些建議82 4.5 本章總結(jié)83 第5章 工作流設(shè)計84 5.1 集中式工作流84 5.2 功能分支工作流85 5.3 Git Flow工作流88 5.3.1 Git Flow的5種分支88 5.3.2 Git Flow開發(fā)流程88 5.4 Forking工作流91 5.5 本章總結(jié)93 第6章 研發(fā)流程設(shè)計95 6.1 如何設(shè)計Go項目的研發(fā)流程95 6.2 在設(shè)計研發(fā)流程時,需要關(guān)注 哪些點96 6.3 業(yè)界相對標(biāo)準(zhǔn)的研發(fā)流程96 6.3.1 需求階段96 6.3.2 設(shè)計階段98 6.3.3 開發(fā)階段98 6.3.4 測試階段100 6.3.5 發(fā)布階段100 6.3.6 運營階段102 6.4 角色與分工102 6.5 如何管理應(yīng)用的生命周期104 6.6 應(yīng)用生命周期管理技術(shù)有哪些104 6.7 研發(fā)模式105 6.8 CI/CD:自動化構(gòu)建和部署應(yīng)用106 6.8.1 持續(xù)集成107 6.8.2 持續(xù)交付107 6.8.3 持續(xù)部署107 6.9 DevOps:研發(fā)運維一體化108 6.9.1 AIOps:智能運維108 6.9.2 ChatOps:聊著天就把事情 給辦了109 6.9.3 GitOps:一種實現(xiàn)云原生的 持續(xù)交付模型109 6.9.4 NoOps:無運維110 6.10 如何選擇合適的應(yīng)用生命周期 管理技術(shù)111 6.11 本章總結(jié)111 第7章 如何寫出優(yōu)雅的Go項目112 7.1 優(yōu)雅Go項目實現(xiàn)思路112 7.2 編寫高質(zhì)量的Go應(yīng)用113 7.2.1 代碼結(jié)構(gòu)114 7.2.2 代碼規(guī)范115 7.2.3 代碼質(zhì)量116 7.2.4 編程哲學(xué)119 7.2.5 軟件設(shè)計方法124 7.3 高效管理項目125 7.3.1 高效的開發(fā)流程125 7.3.2 使用Makefile管理項目126 7.3.3 自動生成代碼126 7.3.4 善于借助工具127 7.3.5 對接CI/CD127 7.4 編寫高質(zhì)量的項目文檔128 7.5 本章總結(jié)128 第8章 Go語言設(shè)計模式?130 8.1 創(chuàng)建型模式131 8.1.1 單例模式131 8.1.2 工廠模式133 8.2 行為型模式136 8.2.1 策略模式136 8.2.2 模板模式138 8.3 結(jié)構(gòu)型模式139 8.3.1 代理模式139 8.3.2 選項模式140 8.4 本章總結(jié)144 第三部分 項目管理 第9章 如何編寫Makefile148 9.1 規(guī)劃Makefile要實現(xiàn)的功能149 9.2 設(shè)計合理的Makefile結(jié)構(gòu)151 9.3 掌握Makefile編寫技巧153 9.3.1 善用通配符和自動變量153 9.3.2 善用函數(shù)153 9.3.3 依賴需要用到的工具154 9.3.4 把常用功能放在/Makefile中, 不常用的放在分類Makefile中154 9.3.5 編寫可擴展的Makefile155 9.3.6 將所有輸出存放在一個目錄下, 方便清理和查找156 9.3.7 使用帶層級的命名方式156 9.3.8 做好目標(biāo)拆分157 9.3.9 設(shè)置OPTIONS157 9.3.10 定義環(huán)境變量158 9.3.11 自己調(diào)用自己159 9.4 本章總結(jié)159 第10章 IAM項目研發(fā)流程實戰(zhàn)160 10.1 開發(fā)階段160 10.1.1 代碼開發(fā)160 10.1.2 代碼提交165 10.2 測試階段167 10.3 IAM項目的Makefile項目管理 技巧168 10.3.1 Makefile help命令自動解析169 10.3.2 在options中指定變量值169 10.3.3 自動生成CHANGELOG169 10.3.4 自動生成版本號169 10.3.5 保持行為一致170 10.4 本章總結(jié)171 第11章 靜態(tài)代碼檢查172 11.1 為什么選擇golangci-lint做靜態(tài) 代碼檢查172 11.2 golangci-lint命令173 11.3 golangci-lint配置175 11.4 如何使用golangci-lint進(jìn)行靜態(tài) 代碼檢查178 11.5 golangci-lint使用技巧180 11.6 本章總結(jié)182 第12章 生成Swagger API文檔183 12.1 Swagger介紹183 12.2 Swagger和OpenAPI的區(qū)別184 12.3 用go-swagger來生成Swagger API 文檔184 12.3.1 安裝swagger工具185 12.3.2 swagger命令行工具介紹185 12.4 如何使用swagger命令生成 Swagger文檔186 12.4.1 解析注釋生成Swagger文檔186 12.4.2 go-swagger其他常用功能介紹192 12.5 IAM Swagger文檔194 12.6 本章總結(jié)195 第四部分 項目開發(fā) 第13章 錯誤處理198 13.1 錯誤碼設(shè)計198 13.1.1 期望錯誤碼實現(xiàn)的功能199 13.1.2 常見的錯誤碼實現(xiàn)方式199 13.1.3 錯誤碼設(shè)計建議201 13.1.4 業(yè)務(wù)Code碼設(shè)計201 13.1.5 如何設(shè)置HTTP狀態(tài)碼202 13.2 IAM項目錯誤碼設(shè)計規(guī)范203 13.2.1 錯誤碼設(shè)計規(guī)范203 13.2.2 錯誤信息規(guī)范說明204 13.2.3 IAM API返回值說明204 13.3 錯誤包204 13.3.1 錯誤包需要具有哪些功能204 13.3.2 錯誤包的實現(xiàn)208 13.3.3 如何記錄錯誤212 13.4 一個錯誤碼的具體實現(xiàn)215 13.5 錯誤碼實際使用示例218 13.6 本章總結(jié)219 第14章 日志處理220 14.1 如何設(shè)計日志包220 14.1.1 基礎(chǔ)功能220 14.1.2 高級功能222 14.1.3 可選功能224 14.1.4 設(shè)計時需要關(guān)注的點226 14.2 如何記錄日志226 14.2.1 在何處打印日志227 14.2.2 在哪個日志級別打印日志228 14.2.3 如何記錄日志內(nèi)容229 14.2.4 記錄日志的佳實踐總結(jié)230 14.3 拓展內(nèi)容:分布式日志解決方案 。‥FK/ELK)230 14.4 有哪些優(yōu)秀的開源日志包231 14.4.1 標(biāo)準(zhǔn)庫log包232 14.4.2 glog232 14.4.3 logrus232 14.4.4 zap233 14.4.5 開源日志包選擇233 14.5 從零開始編寫一個日志包234 14.5.1 定義日志級別和日志選項234 14.5.2 創(chuàng)建Logger及各級別日志 打印方法236 14.5.3 將日志記錄到支持的輸出中237 14.5.4 自定義日志輸出格式239 14.5.5 測試日志包239 14.6 IAM項目日志包設(shè)計實戰(zhàn)240 14.7 本章總結(jié)244 第15章 GORM ORM應(yīng)用245 15.1 GORM基礎(chǔ)知識245 15.2 通過示例學(xué)習(xí)GORM246 15.2.1 自動遷移表結(jié)構(gòu)248 15.2.2 插入表記錄248 15.2.3 獲取符合條件的記錄248 15.2.4 更新表記錄248 15.2.5 刪除表記錄249 15.2.6 獲取表記錄列表249 15.3 GORM常用操作講解249 15.3.1 模型定義250 15.3.2 連接數(shù)據(jù)庫251 15.3.3 創(chuàng)建記錄251 15.3.4 刪除記錄252 15.3.5 更新記錄253 15.3.6 查詢數(shù)據(jù)253 15.3.7 高級查詢254 15.3.8 原生SQL255 15.3.9 GORM鉤子255 15.4 iam-apiserver中的CURD操作256 15.5 本章總結(jié)260 第16章 Web服務(wù)功能實現(xiàn)261 16.1 Web服務(wù)的核心功能261 16.1.1 基礎(chǔ)功能262 16.1.2 高級功能262 16.2 Web框架為什么選擇Gin263 16.3 Gin是如何支持Web服務(wù)的基礎(chǔ) 功能的264 16.3.1 HTTP/HTTPS支持268 16.3.2 JSON數(shù)據(jù)格式支持269 16.3.3 路由匹配270 16.3.4 路由分組270 16.3.5 一進(jìn)程多服務(wù)271 16.3.6 參數(shù)解析、參數(shù)校驗、邏輯 處理、返回結(jié)果272 16.4 Gin是如何支持Web服務(wù)的高級 功能的274 16.4.1 中間件274 16.4.2 認(rèn)證、RequestID、跨域277 16.4.3 優(yōu)雅關(guān)停277 16.5 本章總結(jié)279 第17章 IAM應(yīng)用構(gòu)建280 17.1 如何構(gòu)建應(yīng)用框架280 17.2 應(yīng)用構(gòu)建三劍客281 17.2.1 命令行參數(shù)解析工具:Pflag281 17.2.2 配置解析神器:Viper285 17.2.3 現(xiàn)代化的命令行框架:Cobra291 17.3 構(gòu)建應(yīng)用的基礎(chǔ):應(yīng)用的三大 基本功能297 17.4 iam-apiserver是如何構(gòu)建應(yīng)用 框架的298 17.5 App包的設(shè)計和實現(xiàn)300 17.5.1 構(gòu)建應(yīng)用301 17.5.2 命令行程序構(gòu)建301 17.5.3 命令行參數(shù)解析302 17.5.4 配置文件解析305 17.6 IAM應(yīng)用構(gòu)建的優(yōu)秀特性306 17.7 構(gòu)建應(yīng)用的注意事項307 17.8 本章總結(jié)307 第18章 IAM認(rèn)證功能實現(xiàn)309 18.1 認(rèn)證與授權(quán)的區(qū)別309 18.2 4種基本的認(rèn)證方式310 18.2.1 基礎(chǔ)認(rèn)證310 18.2.2 摘要認(rèn)證311 18.2.3 開放授權(quán)認(rèn)證312 18.2.4 令牌認(rèn)證314 18.3 基于JWT的Token認(rèn)證機制實現(xiàn)314 18.3.1 JWT簡介314 18.3.2 JWT認(rèn)證流程315 18.3.3 JWT格式315 18.4 如何設(shè)計IAM項目的認(rèn)證功能318 18.5 IAM項目是如何實現(xiàn)Basic 認(rèn)證的320 18.6 IAM項目是如何實現(xiàn)Bearer 認(rèn)證的326 18.6.1 iam-authz-server Bearer認(rèn)證 實現(xiàn)326 18.6.2 iam-apiserver Bearer認(rèn)證 實現(xiàn)330 18.7 IAM項目認(rèn)證功能設(shè)計技巧333 18.8 本章總結(jié)334 第19章 IAM API服務(wù)構(gòu)建335 19.1 RESTful API介紹335 19.1.1 什么是RESTful API336 19.1.2 RESTful API設(shè)計原則337 19.1.3 RESTful API示例341 19.2 RPC API介紹341 19.2.1 什么是RPC 341 19.2.2 gRPC簡介342 19.2.3 Protocol Buffers介紹343 19.2.4 gRPC示例344 19.3 REST與gRPC351 19.4 iam-apiserver服務(wù)介紹352 19.4.1 iam-apiserver功能介紹352 19.4.2 iam-apiserver使用方法介紹353 19.5 iam-apiserver代碼實現(xiàn)357 19.5.1 iam-apiserver配置處理357 19.5.2 iam-apiserver啟動流程359 19.5.3 iam-apiserver的RESTful API 請求處理流程360 19.5.4 iam-apiserver代碼架構(gòu)361 19.6 iam-apiserver服務(wù)核心功能實現(xiàn) 講解369 19.6.1 與應(yīng)用框架相關(guān)的特性369 19.6.2 與編程規(guī)范相關(guān)的特性375 19.6.3 其他特性383 19.7 本章總結(jié)387 第20章 IAM Authz服務(wù)構(gòu)建388 20.1 權(quán)限基礎(chǔ)知識介紹388 20.1.1 權(quán)限相關(guān)術(shù)語介紹389 20.1.2 權(quán)限模型介紹389 20.1.3 相關(guān)開源項目395 20.1.4 開源項目選擇建議396 20.2 iam-authz-server的功能介紹396 20.2.1 github.com/ory/ladon包介紹396 20.2.2 iam-authz-server使用方法 介紹399 20.3 iam-authz-server的代碼實現(xiàn)401 20.3.1 iam-authz-server的配置處理401 20.3.2 iam-authz-server啟動流程402 20.3.3 iam-authz-server的RESTful API請求處理流程402 20.3.4 iam-authz-server的代碼架構(gòu)403 20.4 iam-authz-server關(guān)鍵代碼分析404 20.4.1 資源授權(quán)404 20.4.2 緩存設(shè)計406 20.4.3 數(shù)據(jù)一致性412 20.5 本章總結(jié)412 第21章 IAM Pump服務(wù)構(gòu)建414 21.1 數(shù)據(jù)采集方式的分類414 21.2 數(shù)據(jù)采集系統(tǒng)設(shè)計415 21.2.1 設(shè)計時需要解決的核心問題415 21.2.2 數(shù)據(jù)上報功能設(shè)計416 21.2.3 數(shù)據(jù)采集功能設(shè)計416 21.2.4 數(shù)據(jù)采集應(yīng)用模型417 21.3 數(shù)據(jù)采集系統(tǒng)落地項目: iam-authz-server+iam-pump417 21.3.1 iam-authz-server:數(shù)據(jù)上報 設(shè)計417 21.3.2 啟動數(shù)據(jù)上報服務(wù)420 21.3.3 異步上報授權(quán)日志422 21.3.4 優(yōu)雅關(guān)停數(shù)據(jù)上報423 21.4 iam-pump:數(shù)據(jù)采集設(shè)計423 21.4.1 數(shù)據(jù)采集插件定義424 21.4.2 初始化數(shù)據(jù)采集插件425 21.4.3 健康檢查426 21.4.4 定期消費Redis數(shù)據(jù)426 21.4.5 優(yōu)雅關(guān)停數(shù)據(jù)采集服務(wù)428 21.4.6 使用分布式鎖機制,避免 重復(fù)消費428 21.5 本章總結(jié)429 第22章 分布式作業(yè)系統(tǒng)設(shè)計與實現(xiàn)430 22.1 任務(wù)分類430 22.2 作業(yè)系統(tǒng)的常見實現(xiàn)431 22.3 IAM作業(yè)系統(tǒng)設(shè)計與實現(xiàn)434 22.3.1 IAM作業(yè)系統(tǒng)實現(xiàn)所使用的 Go包435 22.3.2 IAM作業(yè)系統(tǒng)特點437 22.3.3 IAM作業(yè)系統(tǒng)實現(xiàn)438 22.3.4 IAM作業(yè)系統(tǒng)實現(xiàn)解讀440 22.4 本章總結(jié)441 第23章 IAM SDK設(shè)計與實現(xiàn)442 23.1 什么是SDK442 23.2 SDK設(shè)計要點443 23.2.1 如何給SDK命名443 23.2.2 SDK的目錄結(jié)構(gòu)443 23.2.3 SDK的設(shè)計方法444 23.3 公有云廠商采用的SDK設(shè)計 方式445 23.3.1 API層:創(chuàng)建客戶端實例446 23.3.2 基礎(chǔ)層:構(gòu)建并執(zhí)行HTTP 請求447 23.4 marmotedu-sdk-go客戶端設(shè)計與 創(chuàng)建451 23.4.1 marmotedu-sdk-go客戶端 設(shè)計453 23.4.2 項目級別客戶端創(chuàng)建455 23.4.3 應(yīng)用級別客戶端創(chuàng)建455 23.4.4 服務(wù)級別客戶端創(chuàng)建456 23.5 marmotedu-sdk-go的實現(xiàn)456 23.5.1 RESTClient客戶端實現(xiàn)457 23.5.2 Request模塊實現(xiàn)459 23.5.3 請求認(rèn)證463 23.6 本章總結(jié)464 第24章 IAM客戶端工具構(gòu)建465 24.1 常見客戶端介紹465 24.2 大型系統(tǒng)客戶端的特點466 24.3 iamctl的核心實現(xiàn)468 24.3.1 iamctl的功能468 24.3.2 iamctl代碼結(jié)構(gòu)468 24.3.3 iamctl命令行選項469 24.3.4 iamctl配置文件解析469 24.4 iamctl中子命令是如何構(gòu)建的470 24.4.1 如何優(yōu)雅地構(gòu)建一個命令470 24.4.2 自動生成命令471 24.4.3 命令自動補全472 24.4.4 更友好的輸出473 24.5 iamctl是如何調(diào)用API的473 24.5.1 客戶端配置文件474 24.5.2 SDK調(diào)用475 24.5.3 RESTful API調(diào)用475 24.6 本章總結(jié)475 第五部分 項目測試 第25章 代碼測試478 25.1 如何測試Go代碼478 25.2 測試命名規(guī)范479 25.2.1 測試文件的命名規(guī)范479 25.2.2 測試包的命名規(guī)范479 25.2.3 測試函數(shù)的命名規(guī)范480 25.2.4 測試變量的命名規(guī)范480 25.3 4種基本測試類型481 25.3.1 單元測試481 25.3.2 性能測試486 25.3.3 模糊測試489 25.3.4 示例測試490 25.4 Go語言其他測試類型493 25.4.1 TestMain函數(shù)493 25.4.2 Mock測試494 25.4.3 Fake測試499 25.5 何時編寫和執(zhí)行單元測試用例499 25.5.1 編碼前:TDD測試500 25.5.2 編碼中:增量測試500 25.5.3 編碼后:存量測試500 25.6 測試覆蓋率500 25.7 IAM項目測試實戰(zhàn)502 25.7.1 IAM項目是如何執(zhí)行測試 用例的502 25.7.2 IAM項目測試案例分享504 25.8 其他測試工具和包507 25.9 本章總結(jié)507 第26章 性能分析509 26.1 生成性能數(shù)據(jù)文件509 26.1.1 通過命令行生成性能數(shù)據(jù) 文件509 26.1.2 通過代碼生成性能數(shù)據(jù)文件510 26.1.3 通過net/http/pprof生成 性能數(shù)據(jù)文件511 26.2 生成IAM測試用例的性能數(shù)據(jù)513 26.3 CPU性能分析513 26.4 內(nèi)存性能分析521 26.5 本章總結(jié)523 第27章 API Server性能測試和 調(diào)優(yōu)524 27.1 API性能測試指標(biāo)524 27.2 API性能測試方法525 27.2.1 Wrk的安裝方法525 27.2.2 Wrk的使用方法526 27.3 API Server性能測試實踐527 27.3.1 性能測試腳本介紹528 27.3.2 關(guān)閉Debug配置選項530 27.3.3 使用wrktest.sh測試IAM API 性能530 27.4 API Server性能分析533 27.5 API Server性能測試注意事項536 27.6 本章總結(jié)537 第六部分 項目部署 第28章 基于虛擬機部署IAM系統(tǒng)540 28.1 部署方案540 28.2 Nginx安裝和配置542 28.2.1 Nginx功能簡介542 28.2.2 Nginx安裝和配置步驟544 28.2.3 Nginx常用命令544 28.3 Keepalived安裝和配置545 28.3.1 Keepalived介紹545 28.3.2 Keepalived安裝步驟546 28.3.3 Keepalived配置文件解析546 28.4 部署IAM系統(tǒng)549 28.4.1 部署IAM系統(tǒng)中的服務(wù)549 28.4.2 配置Nginx作為反向代理550 28.4.3 配置Nginx處理負(fù)載均衡552 28.4.4 配置Keepalived556 28.5 IAM系統(tǒng)安全性加固564 28.5.1 iptables簡介564 28.5.2 網(wǎng)絡(luò)數(shù)據(jù)包處理流程565 28.5.3 iptables工具的使用566 28.5.4 IAM安全加固(內(nèi)網(wǎng)不 安全)569 28.5.5 IAM安全加固(內(nèi)網(wǎng)安全)573 28.6 彈性伸縮574 28.6.1 系統(tǒng)擴容575 28.6.2 系統(tǒng)縮容575 28.7 本章總結(jié)575 第29章 IAM容器化部署576 29.1 Docker鏡像的構(gòu)建原理和方式576 29.1.1 通過docker commit命令 構(gòu)建鏡像576 29.1.2 通過Dockerfile來構(gòu)建鏡像577 29.1.3 其他鏡像構(gòu)建方式579 29.2 編寫Dockerfile文件580 29.2.1 Dockerfile指令介紹580 29.2.2 Dockerfile佳實踐581 29.3 編寫Kubernetes資源定義文件582 29.3.1 為什么選擇YAML格式來 定義Kubernetes資源582 29.3.2 Kubernetes資源定義概述584 29.3.3 常用的Kubernetes資源定義586 29.3.4 YAML文件編寫技巧593 29.3.5 使用Kubernetes YAML時的 一些推薦工具594 29.4 Kubernetes部署實戰(zhàn):部署準(zhǔn)備 工作596 29.4.1 開通騰訊云容器服務(wù)鏡像 倉庫596 29.4.2 安裝Docker599 29.4.3 準(zhǔn)備一個Kubernetes集群601 29.5 Kubernetes部署實戰(zhàn):安裝IAM 系統(tǒng)602 29.6 Kubernetes部署實戰(zhàn):測試IAM 系統(tǒng)605 29.7 Kubernetes部署實戰(zhàn):銷毀 Serverless集群及其資源605 29.8 本章總結(jié)606 第30章 Helm應(yīng)用部署607 30.1 Helm基礎(chǔ)知識介紹607 30.1.1 Helm是什么607 30.1.2 Helm中的三大基本概念608 30.1.3 我們?yōu)槭裁匆褂肏elm609 30.2 Helm基本操作實戰(zhàn)611 30.2.1 安裝Helm611 30.2.2 Helm快速入門611 30.2.3 Helm命令616 30.3 使用Helm部署IAM系統(tǒng)617 30.3.1 制作IAM Chart包618 30.3.2 IAM Chart包部署621 30.3.3 多環(huán)境部署IAM系統(tǒng)624 30.4 本章總結(jié)624 第31章 基于GitHub Actions的CI 實戰(zhàn)625 31.1 GitHub Actions的基礎(chǔ)知識625 31.1.1 GitHub Actions的基本概念626 31.1.2 工作流程文件介紹626 31.2 GitHub Actions的進(jìn)階用法629 31.2.1 為工作流加一個Badge標(biāo)記629 31.2.2 構(gòu)建矩陣630 31.2.3 使用密鑰630 31.2.4 使用Artifact保存構(gòu)建產(chǎn)物631 31.3 GitHub Actions實戰(zhàn)632 31.4 IAM GitHub Actions實戰(zhàn)636 31.5 本章總結(jié)639
你還可能感興趣
我要評論
|