书籍详情
Harbor权威指南:容器镜像、Helm Chart等云原生制品的管理与实践
作者:张海宁,邹佳,王岩,尹文开,任茂盛 等 著
出版社:电子工业出版社
出版时间:2020-11-01
ISBN:9787121396854
定价:¥128.00
购买这本书可以去
内容简介
在云原生生态中,容器镜像和其他云原生制品的管理与分发是至关重要的一环。本书对开源云原生制品仓库Harbor展开全面讲解,由Harbor开源项目维护者和贡献者倾力撰写,内容涵盖Harbor的架构、原理、功能、部署与配置、运维、定制化开发、API、项目治理和成功案例等,很多未公开发表的内容在本书中都有详尽讲解,如:Harbor的架构原理;OCI制品的支持方式;高可用制品仓库的设计要点;镜像等制品的扫描;权限和安全策略;备份与恢复策略;API使用指南等。无论是对于Harbor用户、开发者和贡献者,还是对于云原生软件开发工程师、测试工程师、运维工程师、IT架构师和IT技术经理,抑或是对于计算机相关学科的高校学生来说,本书都有非常重要的指导和参考价值。
作者简介
张海宁 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
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
猜您喜欢