Harbor 權威指南:容器鏡像、Helm Chart 等雲原生製品的管理與實踐

張海寧 等

買這商品的人也買了...

商品描述

在雲原生生態中,容器鏡像和其他雲原生製品的管理與分發是至關重要的一環。本書對開源雲原生製品倉庫Harbor展開全面講解,由Harbor開源項目維護者和貢獻者傾力撰寫,內容涵蓋Harbor的架構、原理、功能、部署與配置、運維、定製化開發、API、項目治理和成功案例等,很多未公開發表的內容在本書中都有詳盡講解,如:Harbor的架構原理;OCI製品的支持方式;高可用製品倉庫的設計要點;鏡像等製品的掃描;權限和安全策略;備份與恢復策略;API使用指南等。

作者簡介

張海寧

VMware中國研發中心雲原生實驗室技術總監,Harbor開源項目創建者及維護者,擁有多年軟件架構設計及全棧開發經驗,為多個開源項目貢獻者,Cloud Foundry中國社區較早的技術佈道師之一,“亨利筆記”公眾號作者,從事雲原生、機器學習及區塊鍊等領域的創新工作。

鄒佳

VMware中國研發中心主任工程師,Harbor開源項目架構師及核心維護者,擁有十多年軟件研發及架構經驗,獲得PMP資格認證及多項技術專利授權。曾在HPE、IBM等多家企業擔任資深軟件工程師,專注於雲計算及雲原生等領域的研究與創新。

王岩

VMware中國研發中心高級研發工程師,Harbor開源項目維護者,負責Harbor多項核心功能的開發,專注於雲原生、Kubernetes、Docker等領域的技術研究及創新。

尹文開

VMware中國研發中心高級研發工程師,Harbor開源項目維護者,從Harbor的原型研發開始一直參與Harbor項目,長期從事容器領域的研究及開發工作。

任茂盛

VMware中國研發中心高級研發經理,Harbor開源項目維護者,在網絡、虛擬化、雲計算及雲原生領域有豐富的產品開發及管理經驗。在VMware先後負責vSphere、OpenStack、Tanzu等現代應用平台產品的開發。

姜坦

VMware中國研發中心主任工程師,Harbor開源項目核心維護者,畢業於北京航空航天大學,從事雲原生領域的軟件開發工作。

裴明明

網易杭州研究院輕舟雲原生架構師,Harbor開源項目維護者,主要負責網易輕舟雲原生DevOps體系設計、研發及落地等,在雲原生、DevOps、微服務架構等領域擁有豐富的經驗。

鄧謙

VMware中國研發中心研發工程師,Harbor開源項目貢獻者,參與了Harbor多個組件及功能的開發工作,多次參與Harbor的技術活動支持及分享,在雲原生及監控系統等領域擁有豐富的經驗。

何威威

VMware中國研發中心高級研發工程師,Harbor開源項目貢獻者,專注於性能測試調優、雲原生等領域的技術研發。

孔礬建

騰訊高級工程師,負責騰訊雲鏡像倉庫產品的研發;Harbor開源項目維護者,深耕容器鏡像存儲及分發、雲存儲、雲原生應用領域。

張子明

VMware中國研發中心高級研發工程師,Harbor開源項目貢獻者。擁有多年軟件全棧開發經驗,對雲原生、配置管理等領域有較深入的研究。

陳家豪

VMware中國研發中心研發工程師,專注於容器、網絡及分佈式技術的研發,積極參與開源社區的建設,是區塊鏈開源項目Hyperledger Cello的維護者之一,也是聯邦學習開源項目FATE及KubeFATE等的貢獻者。深耕虛擬化、雲計算及區塊鍊等領域。

張道軍

VMware中國研發中心主任工程師,Harbor開源項目貢獻者,畢業於北京航空航天大學。關注應用性能監控、性能調優、雲原生等領域。

陳德

騰訊專有云平台研發工程師,Harbor開源項目維護者,主要負責騰訊雲原生有狀態服務管理平台的設計及開發,並實現服務的自動化運維管理。

目錄大綱

第1章 雲原生環境下的製品管理... 1

1.1 雲原生應用概述... 2

1.2 容器技術簡介... 5

1.2.1 容器技術的發展背景... 5

1.2.2 容器的基本原理... 7

1.2.3 容器運行時... 8

1.3 虛擬機和容器的融合... 14

1.3.1 vSphere Pod. 14

1.3.2 Kata Containers. 16

1.4 容器鏡像的結構... 17

1.4.1 鏡像的發展... 17

1.4.2 Docker鏡像的結構... 18

1.4.3 Docker鏡像的倉庫存儲結構... 20

1.4.4 Docker鏡像的本地存儲結構... 24

1.4.5 OCI鏡像規範... 25

1.5 鏡像管理和分發... 34

1.5.1 Docker鏡像管理和分發... 34

1.5.2 OCI分發規範... 35

1.5.3 OCI Artifact 37

1.6 鏡像倉庫Registry. 40

1.6.1 Registry的作用... 41

1.6.2 公有Registry服務.... 43

1.6.3 私有Registry服務... 43

1.6.4 Harbor Registry. 44

第2章 功能和架構概述... 47

2.1 核心功能... 47

2.1.1 訪問控制... 48

2.1.2 鏡像簽名... 49

2.1.3 鏡像掃描... 50

2.1.4 高級管理功能... 52

2.2 組件簡介... 58

2.2.1 整體架構... 58

2.2.2 核心組件... 59

2.2.3 可選組件... 63

第3章 安裝Harbor 65

3.1 在單機環境下安裝Harbor 65

3.1.1 基本配置... 66

3.1.2 離線安裝... 74

3.1.3 在線安裝... 76

3.1.4 源碼安裝... 77

3.2 通過Helm Chart安裝Harbor 80

3.2.1 獲取Helm Chart 80

3.2.2 配置Helm Chart 81

3.2.3 安裝Helm Chart 95

3.3 高可用方案... 96

3.3.1 基於Harbor Helm Chart的高可用方案... 96

3.3.2 多Kubernetes集群的高可用方案... 99

3.3.3 基於離線安裝包的高可用方案... 101

3.4 存儲系統配置... 105

3.4.1 AWS的Amazon S3. 106

3.4.2 網絡文件系統NFS. 108

3.4.3 阿里雲的對象存儲OSS. 108

3.5 Harbor初體驗... 110

3.5.1 管理控制台... 110

3.5.2 在Docker中使用Harbor 120

3.5.3 在Kubernetes中使用Harbor 121

3.6 常見問題... 124

第4章 OCI Artifact的管理... 125

4.1 Artifact功能的實現... 125

4.1.1 數據模型... 126

4.1.2 處理流程... 128

4.2 鏡像及鏡像索引... 131

4.3 Helm Chart 134

4.3.1 Helm 3. 135

4.3.2 ChartMusuem的支持... 139

4.3.3 ChartMuseum和OCI倉庫的比較... 141

4.4 雲原生應用程序包CNAB. 142

4.5 OPA Bundle. 145

4.6 其他Artifact 147

第5章 訪問控制... 149

5.1 概述... 149

5.1.1 認證與授權... 149

5.1.2 資源隔離... 150

5.1.3 客戶端認證... 152

5.2 用戶認證... 153

5.2.1 本地數據庫認證... 153

5.2.2 LDAP認證... 154

5.2.3 OIDC認證.... 159

5.3 訪問控制與授權... 169

5.3.1 基於角色的訪問策略... 169

5.3.2 用戶與分組.... 170

5.4 機器人賬戶... 173

5.5 常見問題... 175

第6章 安全策略... 177

6.1 可信內容分發... 177

6.1.1 TUF與Notary. 178

6.1.2 內容信任... 182

6.1.3 Helm 2 Chart簽名... 186

6.2 插件化的漏洞掃描... 188

6.2.1 整體設計... 190

6.2.2 掃描器管理... 192

6.2.3 掃描API規範... 193

6.2.4 掃描管理... 197

6.2.5 異步掃描任務... 201

6.2.6 與掃描相關的API 202

6.3 使用漏洞掃描功能... 207

6.3.1 系統掃描器... 207

6.3.2 項目掃描器... 209

6.3.3 項目漏洞掃描... 210

6.3.4 全局漏洞掃描... 213

6.3.5 自動掃描... 214

6.3.6 與漏洞關聯的部署安全策略... 214

6.3.7 已支持的插件化掃描器... 216

6.4 常見問題... 218

第7章 內容的遠程複製... 220

7.1 基本原理... 220

7.2 設置Artifact倉庫服務... 223

7.3 複製策略... 225

7.3.1 複製模式... 225

7.3.2 過濾器... 225

7.3.3 觸發方式... 226

7.3.4 創建複製策略... 228

7.3.5 執行複制策略... 229

7.4 Harbor實例之間的內容複製... 231

7.5 與第三方倉庫服務之間的內容複製... 232

7.5.1 與Docker Hub之間的內容複製... 233

7.5.2 與Docker Registry之間的內容複製... 234

7.5.3 與阿里雲鏡像倉庫之間的內容複製... 235

7.5.4 與AWS ECR之間的內容複製... 236

7.5.5 與GCR之間的內容複製... 236

7.5.6 與Helm Hub之間的內容複製... 237

7.6 典型使用場景... 238

7.6.1 Artifact的分發... 238

7.6.2 雙向同步... 239

7.6.3 DevOps鏡像流轉... 240

7.6.4 其他場景... 241

第8章 高級管理功能... 242

8.1 資源配額管理... 242

8.1.1 基本原理... 242

8.1.2 設置項目配額... 247

8.1.3 設置系統配額... 247

8.1.4 配額的使用... 249

8.1.5 配額超限的提示... 252

8.2 垃圾回收... 253

8.2.1 基本原理... 253

8.2.2 觸發方式... 256

8.2.3 垃圾回收的執行... 257

8.3 不可變Artifact 258

8.3.1 基本原理... 259

8.3.2 設置不可變Artifact的規則... 260

8.3.3 使用不可變Artifact的規則... 262

8.4 Artifact保留策略... 263

8.4.1 基本原理... 263

8.4.2 設置保留策略... 265

8.4.3 模擬運行保留策略... 269

8.4.4 觸發保留策略... 271

8.5 Webhook. 272

8.5.1 基本原理... 273

8.5.2 設置Webhook. 276

8.5.3 與其他系統的交互... 280

8.6 多語言支持... 284

8.7 常見問題... 286

第9章 生命週期管理... 288

9.1 備份與恢復... 288

9.1.1 數據備份... 288

9.1.2 Harbor的恢復... 290

9.1.3 基於Helm的備份與恢復... 291

9.1.4 基於鏡像複製的備份和恢復... 292

9.2 版本升級... 295

9.2.1 數據遷移... 296

9.2.2 升級Harbor 299

9.3 系統排錯方法... 300

9.4 常見問題... 305

9.4.1 配置文件不生效... 305

9.4.2 Docker重啟後Harbor無法啟動... 305

9.4.3 在丟失secret key的情況下刪除已簽名的鏡像... 306

9.4.4 丟失了系統管理員admin的密碼... 307

第10章 API的使用方法... 308

10.1 API概述... 308

10.1.1 核心管理API概述... 309

10.1.2 Registry API概述... 313

10.2 核心管理API 315

10.2.1 用戶管理API 315

10.2.2 項目管理API 317

10.2.3 倉庫管理API 319

10.2.4 Artifact管理API 319

10.2.5 遠程複製API 322

10.2.6 掃描API 324

10.2.7 垃圾回收API 326

10.2.8 項目配額API 327

10.2.9 Tag保留API 328

10.2.10 不可變Artifact API 329

10.2.11 Webhook API 330

10.2.12 系統服務API 331

10.2.13 API控制中心... 332

10.3 Registry API 336

10.3.1 Base API 337

10.3.2 Catalog API 337

10.3.3 Tag API 337

10.3.4 Manifest API 338

10.3.5 Blob API 338

10.4 API編程實例... 339

10.5 小結... 340

第11章 異步任務系統... 341

11.1 系統設計... 341

11.1.1 基本架構... 342

11.1.2 任務編程模型... 350

11.1.3 任務執行模型... 353

11.1.4 任務執行流程解析... 354

11.1.5 系統日誌... 357

11.1.6 系統配置... 358

11.1.7 REST API 360

11.2 核心代碼解讀... 364

11.2.1 代碼目錄結構... 365

11.2.2 主函數入口... 366

11.2.3 系統的啟動過程... 367

11.2.4 API服務器的啟動過程... 371

11.2.5 任務運行器的執行過程... 375

11.2.6 系統中的關鍵子模塊... 379

11.3 常見問題... 400

11.3.1 如何排除故障... 401

11.3.2 狀態不一致... 402

第12章 應用案例... 404

12.1 Harbor功能的集成... 404

12.1.1 vSphere 7.0. 404

12.1.2 Tanzu Kubernetes Grid. 412

12.1.3 P2P鏡像分發... 414

12.1.4 雲原生的聯邦學習平台... 420

12.2 成功案例... 423

12.2.1 網易輕舟微服務平台... 423

12.2.2 京東零售鏡像服務... 428

12.2.3 品高雲企業級DevOps實戰... 431

12.2.4 騫雲SmartCMP容器即服務... 434

12.2.5 前才雲容器雲平台... 435

12.2.6 360容器雲平台的Harbor高可用方案..440

第13章 社區治理和發展... 443

13.1 Harbor社區治理... 443

13.1.1 治理模式... 443

13.1.2 安全響應機制... 446

13.1.3 社區參與方式... 449

13.1.4 參與項目貢獻... 451

13.2 項目展望... 463

13.2.1 鏡像代理... 463

13.2.2 P2P鏡像預熱... 464

13.2.3 Harbor Operator 466

13.2.4 非阻塞垃圾回收... 467

附錄A 詞彙表... 471