书籍作者:张海宁 | ISBN:9787121396854 |
书籍语言:简体中文 | 连载状态:全集 |
电子书格式:pdf,txt,epub,mobi,azw3 | 下载次数:2488 |
创建日期:2021-02-14 | 发布日期:2021-02-14 |
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板 |
在云原生生态中,容器镜像和其他云原生制品的管理与分发是至关重要的一环。本书对开源云原生制品仓库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开源项目维护者,主要负责腾讯云原生有状态服务管理平台的设计及开发,并实现服务的自动化运维管理。
l 全面讲解精通Harbor所需的方方面面:架构、原理、功能、部署与配置、运维、定制化开发、API、项目治理和成功案例等
l 很多用户关注的内容在书中都有详尽讲解:Harbor的架构原理;OCI制品的支持方式;高可用制品仓库的设计要点;镜像等制品的扫描;权限和安全策略;备份与恢复策略;API使用指南等。
l 并对用户使用Harbor的常见问题进行分析和解答
l 涵盖众多企业使用Harbor的案例
推荐序1
我在准备动笔写这篇序的时候,一瞬间仿佛回到了多年前的大学校园。当时张海宁(Henry)正在攻读我的硕士研究生,研究领域是数据挖掘和机器学习。在那个互联网经济尚待崛起的年代,我们对互联网的未来充满期盼。
时至今日,随着各种新技术产业和商业模式动能的释放,放眼全球,整个世界已经运行在一个巨大的软件体系之上。以A(人工智能)B(大数据)C(云计算)为代表的互联网企业和互联网核心技术,更是以不可想象的步伐引领着社会的变革和前行。云计算作为强大的技术底座,深度融合人工智能、大数据和边缘计算等技术,为现实世界建立起精确的数字化模型,形成一套可以对物理世界感知、洞察及反馈的高效体系。以云计算、5G、互联网、物联网为代表的信息基础设施,正结合大数据、人工智能等技术,使传统基础设施向数字化、智能化的融合基础设施转型和升级,并为科研、技术、产业等领域提供创新型基础设施。
从发展的历程上看,云计算早期主要注重基础设施的灵活交付能力,使计算资源能够方便地为用户所用。经过十多年的高速发展,云计算已经迈进2.0时代,以应用为中心和基础设施为代码的云原生(Cloud Native)技术正驱动着现代化应用前进的步伐。如今,云原生技术已经成为应用主流的设计、开发和运维模式,容器则作为云原生技术的基石,得到普遍采用。越来越多的企业在云原生平台上构建了物联网、大数据和人工智能的基础能力,在产业智能化的浪潮中推动着数字化的创新,带来影响深远的社会价值和商业价值。
Henry作为资深的技术专家,一直活跃在云原生的舞台上。他于2014年率领团队创建和研发了开源镜像仓库Harbor项目,解决了用户管理容器镜像的诸多痛点,如权限控制、远程复制、漏洞分析等,Harbor也一跃成为非常受欢迎的开源容器镜像管理软件。值得一提的是,秉承着开放、包容的理念,Harbor项目于2018年被捐献给云原生计算基金会(CNCF),成为首个原创于中国的CNCF项目,由广大社区用户共同维护。最近更传来喜讯:Harbor成为首个成熟度达到CNCF毕业级别的中国开源项目。
目前,我所带领的微众银行人工智能团队正致力于联邦学习的前沿学术研究和应用场景落地。在2019年年初,我们开源了工业级联邦学习框架FATE(Federated AI Technology Enabler),旨在解决人工智能中数据使用和隐私保护的问题。在联邦学习中,多个组织参与数据方面的合作,各方需要相互信任并运行相同的软件,因此,将FATE项目开源是很好的选择,将促进联邦学习生态圈的培育和发展。Henry所在的团队和我们紧密合作,为FATE项目赋予了云原生的能力,FATE和Harbor两个项目在开源领域胜利会师,实现了基于容器镜像的敏捷部署和自动化运维,大大降低了联邦学习平台的使用门槛,也彰显了开源的力量和云原生+AI的价值。
本书由Harbor项目维护者和贡献者倾力编撰,立意新颖,思路清晰,涵盖了Harbor的设计思想、技术原理、配置架构和应用案例等丰富内容,既高屋建瓴地阐释了云原生技术的核心原理,也深入浅出地解析了容器落地的优秀实践,是云计算、人工智能、大数据等计算机领域的工程师、架构师、开发者和开源贡献者了解云原生应用,特别是容器和镜像技术的优秀参考书,也适合理工类大学生阅读和学习。
杨 强
微众银行首席人工智能官、香港科技大学教授
推荐序2
随着LAMP(Linux、Apache、MySQL和PHP)技术的广泛应用,开源技术如雨后春笋般发展。在云计算普及的时代,开发人员越来越多地使用Docker和Kubernetes等开源云原生管理工具和平台。来自中国的开发人员也成为CNCF举足轻重的贡献者。
在这样的背景下,云原生成为了中国开源社区参与度和贡献度非常显著的技术。VMware从一开始就参与了相关工作,在2011年将Cloud Foundry等内部项目开源给云原生社区。VMware也是中国云原生社区的先行者之一,一直积极支持技术社区的活动,例如2016年,VMware发起“云原生论坛”,并在2018年推动了国际云原生大会KubeCon+CloudNativeCon在中国的落地。
Harbor是一个企业级开源镜像仓库,能够对云原生制品的内容进行存储、签名和扫描,用户对Harbor的接受度也证明了VMware在云原生开源领域的影响力。Harbor最初是VMware中国研发中心云原生实验室的内部项目,在2014年由我和本书作者之一张海宁等联合发起,于2016年年初首先在中国开源社区推广。开源后,Harbor很快就展现了云原生基础软件的普适性,首先获得国内主流互联网公司、大型企业和初创公司的青睐和应用。
Harbor也逐渐从国内发展到国外,获得了全球云原生社区的一致认可。2018年8月, Harbor成为中国第一个原创的CNCF项目,也是VMware捐献给CNCF的第一个项目。截至2020年年中,Harbor在GitHub上获得12000多颗星,拥有190多位代码贡献者,这些贡献者来自全球80多个组织,如Anchore、网易云、前才云科技、腾讯云和OVHcloud等,月下载量超过3万次。
同时,Harbor项目成立了由多个社区主导的工作组,例如远程复制工作组、P2P分发工作组、镜像扫描工作组等,负责制定和开发Harbor各个具体功能的路线图,社区的参与大大丰富和完善了Harbor的功能。
在Harbor项目取得成功的基础上,VMware中国联手各行业龙头企业的创新部门、初创公司及大学与研究机构等,发起VMware创新网络(VMware Innovation Network),共同打造开放、多元、共生的生态系统,涵盖云原生、边缘计算、机器学习、云网络、云数据分析等技术领域。
2020年6月,Harbor成为中国第1个、全球第11个毕业的CNCF项目,其他已毕业的项目包括Kubernetes、Prometheus和Helm等。本书是中国重量级的云原生技术著作之一,它的发布恰逢其时。本书作者都是Harbor项目的原创开发者和“骨灰”级的社区维护者,包括张海宁、邹佳、任茂盛、姜坦、尹文开、王岩、裴明明等。读者通过本书可全面了解云原生技术,特别是容器镜像等云原生制品的原理、特点和实践方法。
长风破浪会有时,直挂云帆济沧海!相信本书能为读者带来新的起点和收获,也希望更多的用户和开发者加入云原生社区,共同创新!
任道远
VMware中国研发中心总经理
VMware创新网络联合发起人、Harbor项目联合发起人
推荐序3
从云计算到云原生,这一以云为起点的浪潮已持续10年之久,我所在的团队也有幸在这一方向实践了近8年,我能深刻感受到其中有一些逻辑在驱使云计算技术栈的发展,使陆续出现的许多技术演进似乎成为一种必然,也使从云计算到云原生能产生被广泛认同的标准,形成许多行业的共识,进而形成一个广阔的相对标准的产品、服务市场。
在从事云计算、云原生相关工作的这些年里,我经常要面对的问题是“为什么做”,经常要面对的情况则是“不得不做”。云计算技术的应用与算法、前端等有很大不同,我们很难以技术进步带来的直接价值驱动业务进行技术升级,因此很多时候都是已经感受到明显的瓶颈或对未来发展过程中的技术瓶颈有了明确的预期,才能推动技术的升级。
以互联网业务服务端的演进来看,这是一个应对业务发展所产生的复杂性的过程,自Web 1.0到Web 2.0再到移动应用,互联网业务越来越复杂,一个应用聚集了足够流量之后总会向平台化发展,以寻求商业模式的突破,而平台由于多元、共生的特性,复杂性远远大于单一应用。以网易为例,我们遭遇了资源生命周期管理类运维操作大增、服务器型号碎片化等问题,使建设云计算平台从2010年的“为什么做”变成了2012年的“不得不做”。而OpenStack亦诞生于2010年,并在2012年达到一定的成熟度。这完全不是巧合,而是因为有众多企业正在面对同样的问题,是市场的需求使然。
随着移动应用浪潮的到来及流量红利的激增,平台的价值被进一步放大,电商、社交等平台的复杂性达到了前所未有的高度,此时原有的服务拆分粒度已经过于粗放,单个服务內的业务逻辑修改牵一发而动全身的情况屡见不鲜,所以把服务进一步进行细粒度拆分成为必然的选择。同样以网易为例,2015年用户量过亿的网易云音乐、2015年诞生的考拉海购,在经历迭代的困境后均逐步发展为微服务架构,这是“不得不做”的选择。另外,对服务的细粒度拆分不断给运维带来挑战,中心化的运维角色不能满足海量服务的维护需求,开发人员也需要参与到运维协作中来,尤其需要分担更为高频的发布工作。我们在实践中也遇到了一些挑战,例如为解决运行环境问题产生了大量的环境初始化模板,模板与制品的分离管理造成了诸多的混乱,在服务节点的生命周期管理和应用编排方面则涉及IaaS层接口和编排服务接口如何设计等问题。我们在不断踩坑过程中意识到在缺乏社区标准支持的情况下自行解决这些问题的代价是巨大的,此时逐渐成熟的容器、Kubernetes让我们看到了解决问题的希望。2016年左右,我们几乎毫不犹豫地转向了容器和Kubernetes技术栈,至此从微服务到容器、Kubernetes,云原生便成为了我们延续至今且尚在不断探索的技术路线。
技术架构和技术栈的更新不仅解决了我们在发展过程中面对的问题,更让我们看到了后续发展的可能性,在软件架构不断拆分且转向服务化的过程中,传统的基于代码的重用由于直接共享数据模型与数据层,难以支持快速迭代,给人以包含业务逻辑的软件重用不靠谱的印象。而在服务化架构下,服务方保障了接口的稳定兼容,服务抽象了业务的能力,新业务的构建得以大量依赖已存在的服务,形成了中台这样高级的业务能力重用的形态。在服务化重用的浪潮背后有一项基础软件服务是不可或缺的,参考代码级重用时代的制品管理机制,一个可运行的服务、应用也需要有自己的仓库以支持服务化形态交付。同时,由于代表企业业务能力的软件服务在数字化时代已成为企业的核心资产,因此需要的企业级管控能力远高于制品管理要求。Harbor从2016年开源至今,功能逐步完善,无论是企业级镜像管理,还是镜像复制、漏洞扫描等功能都切实解决了企业的难题,Harbor自2.0版本开始更是兼容OCI标准,成为较早遵循云原生标准的仓库项目,可以说,Harbor已经成为承载服务、应用镜像管理的标准。对于这样一个重要的基础软件,网易的云原生团队也积极加入其社区代码的维护工作中,推动Harbor在越来越多的企业中应用。
另一方面,很多“不得不做”云原生的Harbor新用户,对这个软件的能力、架构设计及优秀实践并不熟悉,往往会走一些弯路。这部由Harbor社区核心维护者和贡献者倾力编撰的《Harbor权威指南》适时完成,从组件介绍、源码解析到生态融合,结构清晰,案例详尽,具有很强的实操性,能帮助我们少走弯路。面对云原生的浪潮,我们很有必要深入理解Harbor这样的云原生基础软件。相信阅读本书会有助于我们快速入门、进阶乃至精通Harbor。
陈谔
网易云计算中心总经理
前 言
本书写作初衷
2013年,Docker在发布之后取得空前的成功,成为史上非常受欢迎的开发工具之一。除了简便、易用,镜像技术也是Docker的核心所在,包括镜像格式的创新和用于镜像分发的Registry服务。Docker公司的著名口号“Build, Ship and Run”(构建、传送和运行),概括了应用开发的精髓,其中隐藏的含义是“构建镜像、传送镜像和运行镜像,一切皆以镜像为中心”。OCI组织的三个规范与该口号分别对应:镜像规范(构建)、运行时规范(运行)和正在制定的分发规范(传送)。尽管目前这些规范有一些不同的实现,但镜像规范的实现基本上以Docker的镜像格式为主。由此可见,镜像是容器应用的关键技术,围绕镜像的一系列管理工作将是实际运维工作的重中之重。
在Docker出现之前,我在Sun公司任职时已经接触和使用过容器技术(Solaris Containers)。从2012年开始,我在VMware公司负责Cloud Foundry开源PaaS项目的技术推广工作。Cloud Foundry项目使用了被称为Warden的容器引擎来运行应用。Warden与Docker类似,都是PaaS项目中的容器执行引擎,只是被“埋藏”在Cloud Foundry项目中,没有像Docker那样独立发布出来。
我初次接触Docker后,被其流畅的使用体验和优秀的容器方案所震撼,深感这将是应用开发的一个大趋势。对Docker进行研究后,我发现容器镜像是Docker软件的命脉所在,而当时并没有很好的镜像管理工具。在同期的一些技术大会上,也有不少用户抱怨在镜像管理方面遇到各种难题。
于是,针对镜像管理的诸多痛点,我带领团队开发了一个容器镜像管理软件,在公司内部试用后取得一定的成效。这个软件就是Harbor的原型。Harbor在开源后受欢迎的程度远超我们所料。Harbor图形化的镜像管理功能独树一帜,切中了容器应用开发和运维的要点,在国内获得大量用户的青睐,参与Harbor开源项目的开发者也在与日俱增。
在加入CNCF后,Harbor和全球云原生社区的合作更加紧密,并加强了对Kubernetes和Helm的支持。在Harbor 2.0中还支持OCI的镜像规范和分发规范,可管理各类云原生领域的制品。
目前已经有很多用户在生产系统中部署了Harbor,国内很大一部分用户都将Harbor作为镜像和Helm Chart的制品仓库。Harbor的维护者们通过微信群、GitHub及邮件组等的问题反馈了解到不少用户遇到的问题,这些问题产生的主要原因有二:其一,用户对Harbor的安装、配置等理解不彻底;其二,文档资料不完整或者缺失。由此可见,Harbor用户亟需一本参考书作为Harbor系统的使用指引,然而市面上并没有这样的书籍。正逢电子工业出版社的张国霞编辑邀请我编写一本关于Harbor的技术书,我便与Harbor项目的维护者们进行了沟通,沟通的结果是大家一致希望编写本书来完整介绍Harbor项目的方方面面,让Harbor带来更大的价值。本书的编撰工作便开始了。
撰写书稿是相当艰辛的,大多数作者需要在繁忙的工作之余挤出时间查资料和编写书稿,并且互相审阅和修订,有的章节甚至修改了不下十遍。但作者们都有一个共同的心愿:希望通过本书把Harbor的各个功能准确、详尽地传递给读者,帮助读者理解和使用好Harbor的功能。
本书特色
这是一本全面介绍Harbor云原生制品仓库的书籍,涵盖Harbor架构、原理、配置、定制化开发、项目治理和成功案例等内容,由Harbor开源项目维护者和贡献者倾力撰写,其中不乏Harbor项目的早期开发人员,甚至Harbor原型代码的编制者。
需要特别说明的是,很多未公开发表的内容在本书中都有详尽讲解,如:Harbor的架构原理;OCI制品的支持方式;高可用制品仓库系统的设计要点;镜像等制品的扫描、权限和安全策略;备份与恢复策略;API使用指南等。对Harbor用户和开发者来说,本书是非常理想的参考资料。
本书读者对象
◎ 云原生软件开发工程师、测试工程师和运维工程师
◎ IT架构师和技术经理
◎ Harbor开源项目的用户、开发者和贡献者
◎ 计算机相关学科的高校学生
本书架构及使用方法
本书共有13章,部分章节由多位作者合力完成,以更准确地阐释相应的内容。下面列出每章的主要内容和作者。
第1章介绍云原生应用的产生背景、以镜像为主的制品管理原理和规范,以及制品仓库的作用,由张海宁负责撰写,任茂盛、裴明明参与撰写。
第2章概述Harbor功能和架构,为读者理解后续的章节做铺垫,由姜坦负责撰写。
第3章详细讲解Harbor的安装、部署,包括高可用部署的方案要点,还包括对Harbor的入门性介绍,由王岩负责撰写,孔矾建、任茂盛参与撰写。
第4章介绍Harbor支持和管理OCI制品原理、常见OCI制品的使用方法,由任茂盛负责撰写,尹文开、张海宁、邹佳参与撰写。
第5章阐释Harbor的权限管理和访问控制的原理,以及相关配置方法,由何威威负责撰写,张海宁参与撰写。
第6章解析Harbor中可使用的安全策略,包括可信的内容分发和漏洞扫描机制,由邹佳负责撰写。
第7章讲解镜像、Helm Chart等制品在Harbor中的远程复制原理,以及与其他仓库服务的集成原理,由尹文开负责撰写。
第8章详述Harbor的高级管理功能,包括资源配额、垃圾回收、不可变Artifact、保留策略、Webhook等,由王岩负责撰写,裴明明、张子明、邓谦参与撰写。
第9章解释Harbor生命周期的管理过程,包括备份、恢复、升级的步骤和方法,由邓谦负责撰写。
第10章梳理Harbor的API的使用方法并给出编程示例,由尹文开负责撰写,张海宁参与撰写。
第11章描述Harbor后台异步任务系统的机理,并分析其主要源代码的工作原理,由邹佳负责撰写。
第12章汇集和整理Harbor与其他系统的整合方法及社区用户的成功案例,由张海宁负责撰写,裴明明、任茂盛、孔矾建、陈家豪参与撰写。
第13章介绍Harbor开源社区的管理原则、告警机制和开源项目的参与方式,并展望项目的发展方向,由张海宁负责撰写,邹佳、王岩、孔矾建、张道军、尹文开、陈德参与撰写。
我们建议读者这样使用本书:
◎ 对云原生领域特别是容器技术不太了解的读者,可以先阅读第1章的基础知识;
◎ 初次接触Harbor的读者,可以直接阅读第2章以快速了解Harbor的功能和架构;
◎ 希望快速上手Harbor的读者,可以按照第3章的讲解,从部署Harbor仓库软件着手;
◎ 对Harbor有一定使用经验的读者,可以按需阅读第3~13章的内容;
◎ 有意向参与Harbor开源项目贡献的开发者,可以重点阅读第13章。
加入本书读者交流群
本书已建立读者交流群,既可以参见封底提示加入,也可以在“亨利笔记”公众号后台回复“读者”二字获邀加入,入群后可以进行技术讨论和意见反馈。希望加入Harbor用户群的读者,可以关注“Harbor社区”公众号(微信号为HarborChina),在后台回复“入群”二字,即可收到入群邀请。
致谢
本书的主要编写时间在2020年4月之后,因为正处特殊时期,所以本书的写作交流几乎只能线上进行,但作者们都拥有共同的信念且相互信任,克服了重重困难,使本书顺利出版。在此感谢各位作者为本书出版付出的巨大努力,他们是VMware中国研发中心Harbor开发组的成员:主任工程师邹佳、高级研发工程师王岩、高级研发工程师尹文开、高级研发经理任茂盛、主任工程师姜坦、研发工程师邓谦、高级研发工程师何威威、高级研发工程师张子明、主任工程师张道军,以及网易杭州研究院轻舟云原生架构师裴明明、腾讯高级工程师孔矾建、VMware中国研发中心研发工程师陈家豪、腾讯专有云平台研发工程师陈德。其中,特别感谢邹佳,他不仅编写了翔实的内容,还协助我进行了统稿和协调工作。感谢任茂盛组织和协调写作资源,也感谢王岩、尹文开、裴明明撰写了大量内容。同时感谢电子工业出版社的张国霞编辑,她不辞劳苦地为本书进行策划、审稿、校正等工作,并鼓励作者们完成艰巨的写作任务。
由衷感谢为本书作序的各位大师和领导。其中,我的恩师、微众银行首席人工智能官杨强教授给予我很多鼓励和支持,推动了联邦学习与Harbor等云原生技术的融合,并拨冗写序和提出宝贵意见。VMware中国研发中心总经理、Harbor项目联合发起人任道远先生是我多年的领导,也是中国云原生社区不遗余力的布道者和倡导者,他从Harbor的原型阶段开始一直支持和推动着项目的发展,对Harbor项目取得的成绩功不可没。网易云计算中心总经理陈谔先生是云计算和云原生探索和实践的先锋,他带领的网易轻舟团队在微服务平台中使用了Harbor,还给Harbor开源项目贡献代码,为本书提供了实践案例等内容,在推荐序中分享的服务架构演进的经验更值得我们研读和学习。
感谢同事Harbor项目经理徐天行先生、王晓璇女士、宋春雪女士对Harbor中国社区长期以来的管理和运营,以及对出版本书的协助。感谢我多年的挚友李天逸先生对本书内容的帮助。感谢为本书提供Harbor案例的社区用户和合作伙伴:广州市品高软件股份有限公司联合创始人刘忻先生、品高云产品总监邱洋先生、上海骞云科技创始人和CEO方礼先生、前才云科技CEO张鑫先生、CNCF官方大使和京东技术架构部产品经理张丽颖女士、360搜索事业群高级总监张华先生。也感谢广大Harbor用户对本书内容所提出的建议。
最后,感谢我的爱人和孩子,因为写作本书,我牺牲了很多陪伴他们的时间,他们的鼓励也使我能坚持把书写完。同时,感谢我的父母和兄长,他们在我童年时代学习计算机知识时给予我的支持和指导,使我在信息技术领域一直走到现在。
张海宁
2020年9月
第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