序
本書寫作初衷
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 的架構原理;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 是一個完全由中國開發的頂級專案,其操作介面大部分為簡體中文,本書章節中部分畫面語言為簡體中文介面,請讀者閱讀時對照前後文。
致謝
本書的主要撰寫時間在2020 年4 月之後,因為正處特殊時期,所以本書的寫作交流幾乎只能線上進行,但作者們都擁有共同的信念且相互信任,克服了重重困難,使本書順利出版。在此感謝各位作者為本書出版付出的極大努力,他們是VMware 中國研發中心Harbor 開發小組的成員:主任工程師鄒佳、高級研發工程師王岩、高級研發工程師尹文開、高級研發經理任茂盛、主任工程師姜坦、研發工程師鄧謙、高級研發工程師何威威、高級研發工程師張子明、主任工程師張道軍,以及網易杭州研究院輕舟雲端原生架構師裴明明、騰訊高級工程師孔礬建、VMware 中國研發中心研發工程師陳家豪、騰訊專有雲端平台研發工程師陳德。其中,特別感謝鄒佳,他不僅撰寫了充實的內容,還協助我進行了統稿和協調工作。感謝任茂盛組織和協調寫作資源,也感謝王岩、尹文開、裴明明撰寫了大量內容。同時感謝電子工業出版社的編輯張國霞,她不辭勞苦地為本書進行策劃、審稿、校正等工作,並鼓勵作者們完成艱鉅的寫作任務。
由衷感謝我的恩師、微眾銀行首席人工智慧官楊強教授給予我很多鼓勵和支援,推動了聯邦學習與Harbor 等雲端原生技術的融合,並撥冗提出寶貴意見。VMware 中國研發中心總經理、Harbor 專案聯合發起人任道遠先生是我多年的主管,也是中國雲端原生社區不遺餘力的佈道者和宣導者,他從Harbor 的原型階段開始一直支援和推動著專案的發展,對Harbor 專案取得的成績功不可沒。網易雲端運算中心總經理陳諤先生是雲端運算和雲端原生探索和實作的先鋒,他帶領的網易輕舟團隊在微服務平台中使用了Harbor,還給Harbor 開放原始碼專案貢獻程式,為本書提供實作案例等內容。
感謝同事Harbor 專案經理徐天行先生、王曉璇女士、宋春雪女士對Harbor 中國社區長期以來的管理和營運,以及對出版本書的協助。感謝我多年的摯友李天逸先生對本書內容的幫助。感謝為本書提供Harbor 案例的社區使用者和合作夥伴:廣州市品高軟體股份有限公司聯合創始人劉忻先生、品高雲產品總監邱洋先生、上海騫雲科技創始人和CEO 方禮先生、前才雲科技CEO 張鑫先生、CNCF 官方大使和京東技術架構部產品經理張麗穎女士、360 搜尋事業群高級總監張華先生。也感謝廣大Harbor 使用者對本書內容所提出的建議。
最後,感謝我的妻子和孩子,因為寫作本書,我犧牲了很多陪伴他們的時間,他們的鼓勵也使我能堅持把書寫完。同時,感謝我的父母和兄長,他們在我童年時代學習電腦知識時給予我的支援和指導,使我在資訊技術領域一直走到現在。
張海寧