CNCF 首箇中國開源項目是如何煉成的?

{"type":"doc","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"“天南地北侃技術,自娛自樂於互聯網的縫隙中”,這是公衆號亨利筆記的簡介。而這個公衆號的主人就是張海寧。不久前,筆者在 VMware 北京辦公室見到了他:個子挺高,人很瘦,說話不疾不徐。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"張海寧是一名資深程序員,從小學起,他就開始學習編程,是中國最早的 iOS 應用開發者之一。他設計和開發的幾個 iOS 工具類 App 在蘋果應用商店名列前茅,曾獲免費應用榜首、付費應用前三名的佳績。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/a9\/a9ca888793e1dc63f7b194387c3797ed.jpeg","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","marks":[{"type":"size","attrs":{"size":10}}],"text":"VMware 中國研發中心技術總監、 Harbor 開源項目創建人和維護者張海寧"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"如今,他擔任 VMware 中國研發中心技術總監,並且是 "},{"type":"link","attrs":{"href":"https:\/\/github.com\/goharbor\/harbor","title":"","type":null},"content":[{"type":"text","text":"Harbor 開源項目"}]},{"type":"text","text":"創建人和維護者。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Harbor 目前在 GitHub 上有 15000+ star,2000+ 貢獻者,5000+ 用戶,每月有 20000+ 的獨立訪問者,4000 多次的源代碼下載量。顯然,Harbor 是成功的。它做對了什麼?爲什麼能取得成功?Harbor 的經歷可以爲我們帶來哪些思考?...... 帶着這些疑問,筆者與張海寧進行了一次長談。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"從 Docker 中看到機會"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Harbor 的成功,要從 2014 年說起。這年 6 月,VMware 中國研發中心開始孵化 Harbor 項目。在孵化 Harbor 前,張海寧的團隊主要做 "},{"type":"link","attrs":{"href":"https:\/\/www.infoq.cn\/article\/2011\/09\/micro-cloud-foundry","title":"","type":null},"content":[{"type":"text","text":"Cloud Foundry"}]},{"type":"text","text":" 的技術佈道和推廣工作,Cloud Foundry 是業界第一個開源的 PaaS 雲平臺。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"但是,情況在 2013 年發生較大變化:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"一是 Cloud Foundry 項目被劃到 "},{"type":"link","attrs":{"href":"https:\/\/www.infoq.cn\/article\/I5Ja2J3jV1vIeCG-Vs6B","title":"","type":null},"content":[{"type":"text","text":"Pivotal 公司"}]},{"type":"text","text":",張海寧所在團隊不再負責這個項目,轉而做一些其他的技術孵化。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"二是這一年,業界突然冒出一個叫 "},{"type":"link","attrs":{"href":"https:\/\/www.infoq.cn\/article\/aiLRtpVPqfL7Zcg58Dh4","title":"","type":null},"content":[{"type":"text","text":"Docker"}]},{"type":"text","text":" 的開源項目,並在幾個月後迅速崛起。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"由於團隊一直深耕於雲原生和 PaaS 平臺領域,所以他們注意到 Docker 的橫空出世。他說:“我們覺得,"},{"type":"text","marks":[{"type":"strong"}],"text":"Docker 可能是下一代能取代虛擬機的部分功能並且可做 DevOps 相關的 PaaS 平臺技術"},{"type":"text","text":"。”"}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"Docker 很“香”"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"於是,他們在內部進行了調研,認識到 Docker 帶來的價值。張海寧表示,"},{"type":"text","marks":[{"type":"strong"}],"text":"Docker 某種意義上算是一種革命性技術。從使用虛擬機到切換成容器,開發者可以更輕量地進行應用的開發、部署和上線,完成一系列事情"},{"type":"text","text":",“這不僅大大提高了開發運維的效率,而且開發和運維可以是一個流水線做下來”。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"具體說來。在 Docker 技術出現前,開發者開發軟件,一般的過程是把它編譯成一個可執行文件,比如 Windows 的 EXE 文件 或 Linux binary。但是,這個可執行文件面臨的一個最大問題是在編譯或開發好之後,它在另一個環境不一定能跑起來。因爲如果開發環境和運行環境不一樣,那麼軟件最終可能無法正常運行。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"爲了解決這個痛點,以前也有類似的技術,比如 "},{"type":"link","attrs":{"href":"https:\/\/www.infoq.cn\/article\/2015\/08\/Docker-Oracle-OCI","title":"","type":null},"content":[{"type":"text","text":"Solaris"}]},{"type":"text","text":",但並未真正解決問題。據張海寧回憶,他早在 "},{"type":"link","attrs":{"href":"https:\/\/baike.baidu.com\/item\/Sun%20Microsystems\/6064586?fr=aladdin","title":"","type":null},"content":[{"type":"text","text":"Sun Microsystems"}]},{"type":"text","text":" 做 Solaris 操作系統時,就用過容器技術。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"“那時,第一次接觸到容器,瞭解到它的價值和威力。使用後,覺得它有些缺陷,不好用,不夠開放。相比 Docker,Solaris 早了 8 年,它是 2004 和 2005 年左右出來的。Sun 的 Solaris 沒有流行起來的原因是它沒有容器鏡像,只是把程序打包成一個 Zip file 或 Tar file。它只有 Zip、Tar 這種格式來傳遞,且沒有標準化,所以不好用,不容易流傳,加上 Solaris 早期沒有開源,缺乏社區力量,因此雖然早了 8 年,也沒有廣泛流行起來。”"}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"直到 Docker 技術出現後,這個問題才被解決。"},{"type":"text","marks":[{"type":"strong"}],"text":"Docker 的核心技術是鏡像,其好處在於通過鏡像把一個運行環境固化下來,可在不同地方使用。這樣,開發者的開發環境和軟件最終的運行環境是無差別的。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"張海寧解釋,如果沒有 Docker,程序編譯好後,可先傳到測試環境,安裝部署後再跑起來。如果沒有問題,再把程序傳到生產環境,再跑起來。“這個過程有很多非標準化的步驟,並且手工操作非常多,很耗時“。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"他說:“有了 Docker 後,我們基本上不用什麼特別的環境,只要是 Linux 操作系統,就可把鏡像從一個環境導到另一個環境,程序就能自動跑起來。”"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"調研結束後,團隊發現 Registry 非常重要,因爲它是使用容器過程中的關鍵一環,關乎鏡像傳輸和分發的成敗。但是,這個領域最早只有 Docker 提供的基礎版 Registry 軟件(鏡像倉庫),它不僅缺少很多功能,而且無法滿足諸多場景。因此,他們某種意義上做了一個增強版的鏡像倉庫,這就是 Harbor。"}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"從 4 個人起步"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"據悉,Harbor 項目最初只有 4 個人,其中,張海寧是團隊負責人,其他三人是工程師(包括一名實習生),主要負責開發工作。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"正所謂萬事開頭難,Harbor 在初創階段,困難重重。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"項目早,用例(use case)少"},{"type":"text","text":",這是團隊面臨的第一個挑戰。張海寧舉了一個例子,他們當時在 VMware 內部推廣時遇到困難,“我們講容器時,其他人一臉茫然,都沒聽過這個技術,不知道它好不好”,所以,要做說服工作,讓別人接受或嘗試新技術。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"第二個挑戰是“我們把它做出來後,具體怎麼用,大家從認知到真正去用還有一段時間。所以在某種意義上,找場景也挺花時間,"},{"type":"text","marks":[{"type":"strong"}],"text":"因爲用戶的痛點是什麼,我們不知道"},{"type":"text","text":"。很多時候靠自己的感覺或用戶反饋,因爲用戶肯定不會告訴你他想要什麼,他只會說需要解決一些問題”。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"這個問題如何解決的?張海寧提到兩點:一是憑經驗,最主要靠創始人或主要成員的經驗。作爲 Harbor 創建人,張海寧曾在幾家國際 IT 公司工作過,經驗豐富。在 Sun 公司時,他不僅瞭解和使用過容器技術,而且爲企業提供身份認證管理服務,在 RBAC(Role Based Access Control, 基於角色的權限管理)、LDAP 多種複製協議等場景中積累了一定的經驗,對企業 IT 系統安全管理有較深入的理解。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"他說:“我感覺,企業用戶非常在意應用系統的安全權限控制,比如誰有權限做什麼事。而 Docker Registry 最早那一版沒有提供權限管理。換句話說,你有個鏡像,什麼人都能去訪問。對開發者來說,這沒有問題。但是對企業來說,生產系統一定會遇到權限管理問題,尤其是核心業務的生產系統,企業肯定不希望誰都來碰,一定要加一道防護門。”"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"因此,在 Harbor 早期設計中,張海寧他們實現了 RBAC 功能,還有日誌審計、鏡像複製和圖形化管理界面功能。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"另一個重要的經驗來自張海寧以前開發 App 的經歷。開發 App 前,他在一些大企業裏開發軟件,週期長,搞幾個月時間才能發佈一個版本,再通過線上和線下反饋它好用不好用,接着再改。通過開發 iOS App,這個週期大大縮短,“寫個 App,改兩行代碼,增加個新功能,然後提交到 App Store,一週審覈通過後,新版本發佈。發佈後,就有用戶下載和使用”。從發佈一款軟件到用戶下載使用,過程很快。簡言之,"},{"type":"text","marks":[{"type":"strong"}],"text":"小步快跑,快速迭代"},{"type":"text","text":"。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在張海寧看來,"},{"type":"text","marks":[{"type":"strong"}],"text":"一款軟件要有生命力,其週期越短越有利。因此,做 Harbor 時,”我們在功能上要少而精準,不要求大而強、高精尖,要解決用戶最痛的點。讓用戶儘快用起來,告訴你方向對不對“。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"如果說靠經驗,他們向前邁出了第一步,那麼接下來,就是根據用戶反饋,然後再做優化。具體體現是“從用戶中來,到用戶中去”。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"“從用戶中來”就是從用戶思維考慮,它能解決用戶的痛點或需求是什麼。據悉,在開發任何軟件前,張海寧都會思考一個問題:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"用戶有這個軟件和沒有這個軟件,他解決問題的方法有什麼不同?"}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"以 Harbor 爲例,如果沒有 Harbor,用戶如何管理鏡像,答案是通過各種 Docker push、pull 等命令去操作鏡像,這個流程複雜,且對開發人員要求很高。有了 Harbor,這個事情會變成什麼樣。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"“每做一個功能前,我們都會想這個問題,有這個功能和沒這個功能的差別到底有多大,能帶來多少好處,比如節約時間、提高效率等”。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"“到用戶中去”就是反覆檢驗自己的思路是不是跟用戶思路一樣。張海寧認爲,這始終是一個雙向過程,“我給用戶一點東西,用戶覺得好不好用再反饋,我再改,形成正向循環”。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Harbor 的一些功能是由用戶提議做的。用戶提出意見,能不能提供某個功能,這些想法某種程度上代表了他們的實際需求。這是,團隊會判斷用戶這個需求是個例,還是典型的普適性。怎麼判斷這個需求?大致分兩種情況:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"第一種,一個需求很多人都提,肯定是個熱點,因爲大家都關注,急於解決,或者很多人在 GitHub 上點贊和評論。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"第二種是憑經驗。大家討論,分析一下用戶的初衷是什麼,爲什麼要提這個問題,甚至找到用戶討論一下。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"第三個挑戰是"},{"type":"text","marks":[{"type":"strong"}],"text":"資源有限"},{"type":"text","text":"。張海寧表示,“我覺得好多創業團隊或創新團隊一開始都處於資源有限的境況,Harbor 也是如此,資源非常有限,所以做了很多取捨,走了一些捷徑。”"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在 Harbor 項目初創時,團隊只有 4 個人。因爲這屬於預研,結果既有可能成功,也有可能失敗,所以 Harbor 項目在資源投入上比較受限。不僅投入的工程師比較少,而且經驗可能不是很豐富。“某種意義上,這不是一支正規軍在作戰,而是很小的先遣部隊在開拓”。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"人力少帶來的結果是“人手不夠,可有可無的功能只能砍掉,或者暫時不做了”。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"據張海寧回憶,他們最開始想做鏡像掃描功能,但是苦於人手不夠,所以只能放棄。因爲這個功能涉及很多集成,包括整合其他軟件,所以這個功能一開始就沒做。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"此外,團隊當時在一些開放的標準和 API 上也沒有考慮太多。張海寧稱,如果希望這個軟件具備生命力,希望它與別的東西融合,那麼就要更多地考慮其開放能力和接入能力。後來,團隊花了很大力氣改進 Harbor 的這個問題。因此,Harbor 現在可以對接公有云、私有云,包括阿里雲、騰訊雲、華爲雲、谷歌雲、微軟 Azure 等,各種鏡像倉庫都能做鏡像同步。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"當時,因爲缺乏人手,張海寧幾乎擔任過“從看門人到 CEO”之間的所有角色,包括項目經理、產品經理、架構師、佈道師、文檔編輯、翻譯和社區運營等等。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"作爲項目創建人,他希望三名工程師全力投入開發工作,快速把功能做出來。他說:“工程師大部分時間都在寫代碼。我不想工程師因爲做別的事情而影響到產品的功能開發。並且,我在開源項目上積累了一些經驗,包括推廣、項目運作和佈道等。”"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"對張海寧來說,做這些“雜事”作用很大。“我對團隊講,大家無論做什麼,一定要對外去宣講。以前有句話,酒香不怕巷子深,但實際並非如此,巷子太深就聞不到味道,別人可能不知道你這有酒。不僅要做事,還要走出去,讓更多人知道這個項目,讓更多人瞭解你的工作,這樣,你才能獲得更高的效益。因爲很多工程師可能只願意寫代碼,不太願意幹別的,這會制約他們在職業生涯中走得更遠”。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"作爲團隊領導者,張海寧如今相當一部分時間要花在參與 meetup、演講、佈道和寫文章或博客中等,也鼓勵團隊工程師多參與公開的技術活動。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"開源半年,一炮而紅"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"2016 年 3 月,Harbor 正式開源。雖然 之前 VMware 內部有幾個團隊嘗試了 Harbor,也有效果,但整體上,公司當時主要使用虛擬機(VM)技術。從開發技術上,用例的場景不多。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"對 Harbor 來說,它需要一片更廣闊的天地:"},{"type":"text","marks":[{"type":"strong"}],"text":"有更多的用戶使用,有更多的應用場景,“我希望有更多用戶來嘗試一下這個軟件,給我們更多的反饋”,所以開源是最佳選擇"},{"type":"text","text":"。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"據悉,團隊在 2015 年底就開始爲 Harbor 開源做準備,因爲涉及諸多法務、審批之事,比如,項目裏使用的開源軟件是否具有合適的許可等。花了半年時間,做好準備工作後,張海寧他們纔在一場 meetup 活動上正式宣佈 Harbor 開源。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Harbor 開源後,種子用戶被宣傳內容吸引過來,一方面,張海寧和團隊撰寫了大量的博客和公衆號文章;另一方面,團隊在一些技術媒體網站發佈了很多文章。同時,很多人在各種微信羣裏自發進行傳播。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"一段時間後,由於 Harbor 表現不錯,因此在開發者羣體中口耳相傳。張海寧說:“我們問過業內一些朋友,他們都說到處都在用 Harbor。要推薦一個好用的 Registry,都有人說用 Harbor。”"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"於是,Harbor 在國內自然而然地火起來。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"VMware 是雲計算領域的國際化公司,來自 VMware 的加持讓 Harbor 開始從國內走向國外。2016 年 7 月,VMware 把 Harbor 集成到自己的容器產品 VIC 裏,成爲一個組件。並且,在當年的 VMware 年度大會上正式對外發布了 這個產品,演示了 Harbor。自此之後,Harbor 真正走向國際社區。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"據瞭解,Harbor 推出僅半年,就在 GitHub 上獲得 1000+ star,迅速獲得大量用戶。可謂一炮而紅!"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"它爲什麼能快速火起來?這與 Harbor 的設計理念息息相關。Harbor 的"},{"type":"text","marks":[{"type":"strong"}],"text":"第一個設計理念解決了權限認證管理問題"},{"type":"text","text":"。這事關安全,而“安全無小事”。"},{"type":"text","marks":[{"type":"strong"}],"text":"第二個設計理念是自動化"},{"type":"text","text":",即多數據中心或雲環境之間的鏡像自動同步。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"張海寧說:“從一個地方到另一個地方,按照某種需要傳導鏡像,這個需求非常大。因爲你開發環境到生產環境就是一種,不同生產環境之間的導入導出鏡像則是另一種。沒這個功能時,大家只能手工操作,先下載,再推送出去,或基於這個命令寫一些腳本。出問題了,你都不知道問題在哪,Harbor 把這個過程自動化了,從而很好地解決了這個問題。”"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"這個功能也成爲 Harbor 起飛的一個支點。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"第三個設計理念是本地化"},{"type":"text","text":"。雲原生領域,主流技術都來自國外,項目都是英文界面或沒有界面。這就有個問題,軟件工程師可能對此無所謂,但是用戶不懂英語,用起來比較喫力,所以團隊做了全中文界面,很受用戶歡迎。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"這些很接地氣的功能構成了 Harbor 的 MVP (最簡化可實行產品),滿足了用戶 70% 以上的需求,因此 Harbor 開源之後迅速走紅。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"進入 CNCF,成首個 CNCF 中國開源項目"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"據張海寧透露,雖然 Harbor 於 2018 年 7 月才正式進入 CNCF 沙箱,但是他們早在 2017 年已經接洽 "},{"type":"link","attrs":{"href":"https:\/\/www.cncf.io\/","title":"","type":null},"content":[{"type":"text","text":"CNCF"}]},{"type":"text","text":"。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"2017 年,VMware 中國研發中心總經理任道遠與張海寧在杭州見了 CNCF 主要負責人,包括 CNCF 執行董事 Dan Kohn 和 CNCF 亞太區總裁 Keith Chan。對 CNCF 來說,它們希望擴展中國市場,吸引更多中國開發者使用 CNCF 的開源項目。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"張海寧說:“我們向他們介紹了 Harbor 情況和 CNCF 在中國的情況。瞭解到 Harbor 情況後,他們認爲 Harbor 是挺符合 CNCF 的理念和要求的。”"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"一方面,Harbor 是用 Go 語言寫的,而與 Harbor 類似的項目則是用 Python 或 Perl 等語言寫的,其實不太匹配。另一方面,Harbor 採用了 Apache License 2.0,這個軟件是可以商用的。另外,Harbor 在中國有大量的用戶,並且在國內影響力比較大。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"不過,CNCF 也向他們提了一些建議。張海寧表示,唯一的阻力是 CNCF 希望 Harbor 依賴的 Docker Registry 也能進入 CNCF,但是,Docker 公司遲遲不動,“我們跟 Docker 公司溝通了多次,但它沒有太大意願做這件事“,因爲這個問題,Harbor 進入 CNCF 拖延了半年。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"雙方見面時,CNCF 也正考慮在中國舉辦第一屆 KubeCon 大會。“它們當時猶豫做不做這件事,我們向他們提了一些建議,並對他們說,必須做。因爲中國擁有一個很大的開發者市場。這進一步堅定了他們舉辦 KubeCon 的信心”。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在張海寧看來,"},{"type":"text","marks":[{"type":"strong"}],"text":"CNCF 之所以接受 Harbor,一方面,由於中國的用戶基數很大;另一方面,中國是全球第二大的開發者市場"},{"type":"text","text":"。所以,CNCF 認爲中國是不可忽略的一支重要技術力量。與此同時,它們希望在中國擴大影響力,因此客觀上有吸納 Harbor 項目的需要。此外,VMware 是一家國際性公司,在國外有很大的影響力,並且是 CNCF 理事會成員之一。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"到了 2018 年 7 月,Harbor 正式進入 CNCF。對它而言,開啓了一段新旅程。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Harbor 進入 CNCF 的一大變化是"},{"type":"text","marks":[{"type":"strong"}],"text":"流程規範化"},{"type":"text","text":"。張海寧解釋,“一開始,我們是野蠻生長,把這個項目做大做好就行了。但是,到後期,它由基金會去管理,其實要滿足很多規範。”"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"這些規範包括要公開開源項目的治理模式,降低社區成員的參與門檻和雙週的社區會議(中英文各一場)。同時,流程上也有要求,比如怎樣快速響應社區需求。“我們專門開了一個 Slack 頻道,專人去關注頻道上的提問,並進行回覆”。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"張海寧表示,流程規範化的一個好處是有章可循,有規可依,尤其是想參與社區的人,原來不知道怎麼參與。“最開始,一些用戶和朋友通過各種關係找到我,說能不能把這個功能加進去。這有點像私底下的討論。有了規範後,就不是一個私下討論,而是一個社區的議題“。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"團隊在 GitHub 上開一個 PR,大家一起討論,如果大家都認可,那(它)就可以進去;如果不認可,那就無效。不是由個人左右項目發展,而是有一定的規範化、流程化。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"2018 年 11 月,Harbor 進入 CNCF 孵化階段,並在 2020 年 6 月,正式從 CNCF 畢業。提起在 CNCF 的近 2 年時間,張海寧他們也踩過一些坑。隨着 Harbor 應用的場景越來越廣,用戶數越來越多,安全漏洞就需要特別關注。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"有一次,有人發現了一個安全漏洞,“通知了我們後,他很快就公開了這個漏洞”。而業界通行的做法是,如果你發現安全漏洞,第一先通知開發者或廠商,然後他們儘快進行修補。問題解決後,你再在網上公佈這個漏洞詳情。但是,這個人並未嚴格遵守這個流程,“他通知了我們,但我們沒注意到他馬上就公佈了這個漏洞,並且寫了篇博客。很多人看到這篇博客,宣稱 Harbor 有個嚴重漏洞”。而互聯網上有幾百甚至上千個這樣的實例,結果帶來很大風波。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Harbor 在 CNCF 的經歷,不僅對自身帶來重要影響,而且也讓張海寧產生一些認識上的改變。做開源,要捨得放手,Harbor 在進入 CNCF 前,是由 VMware 主導的一個開源項目。後來,把項目貢獻出去後,“我們工程師可能還不適應,因爲把這個項目從 0 到 1 做出來,現在卻要放手”。但實際上,進入 CNCF 後,“不是你一家獨大”,要考慮社區的影響,考慮別人的參與,思維方式就要轉換過來。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"他舉了一個例子。有一次開社區會議,有人提出意見,想參與這個項目,爲什麼不接受他提出的這個功能。而“項目的維護者就回答說產品經理沒同意”。張海寧稱,從開源角度講,某個功能不是產品經理說不做了就不做了,更多是一個社區討論或投票表決的事情。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"未來:雲原生拼圖裏不可缺少的一塊"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"去年,Harbor 發佈 2.0 版本,帶來衆多重要更新,尤其是成爲符合 OCI(Open Container Initiatives)規範的開源鏡像倉庫,能存儲多種雲原生製品(Artifacts),例如,容器鏡像、Helm Chart、OPA、Singularity 等等。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"目前,Harbor 已經進入一個相對穩定和成熟的階段。張海寧表示,“未來會在性能、高可用和其他能力上進行增強和完善,包括 OCI、點對點的分發的集成、自動化等,思路是與周邊軟件生態融合,進一步做大做強”。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"現在,每年都有不少人找 Harbor 團隊合作,涵蓋安全掃描、在邊緣計算的使用等。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"當進一步暢想 Harbor 的未來時,張海寧認爲,Harbor 最終會成爲雲原生整個拼圖中的一塊,解決一大類問題。他一直持有一個觀點:Harbor 解決鏡像問題,屬於雲原生中的靜態管理。何爲靜態管理?就是管理一些二進制文件,我們叫製品,關於它的管理就是雲原生製品管理”。靜態管理對雲原生應用的動態管理(即運行狀態管理)有重要的支持作用。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"Harbor 的成功之道"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Harbor 爲什麼能成功?張海寧總結了三點:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"第一,開源時間很早,心態開放,無論是做社區,還是接觸用戶,比較接地氣,能充分發揮本地化優勢,包括產品有中文界面、微信羣溝通等。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"第二,利用一切可以推廣渠道的,包括 meetup、大會、公衆號、博客等,通過各種渠道發佈內容,進行佈道,讓更多用戶可以接觸和使用 Harbor。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"第三,具備全球化思維,通過一些渠道走向國外,產生國際影響力。比如使用英文文檔、藉助 VMware 的渠道和影響力等。“一個項目是否成功,不僅要有國內影響力,還要有國外影響力,兩者相結合,才容易做大做強”。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"對國內的開源項目來說,Harbor 的經歷也可以帶來了一些經驗:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"起步時,立足國內,有一些本地化考量,這樣容易站穩腳跟。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"中長期,放眼全球,把項目做大。"}]}]}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"寫在最後"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"縱觀 Harbor 的發展,先以擊中用戶痛點,在國內崛起,然後通過良好口碑在開發者羣體中口耳相傳,再慢慢通過 VMware 的影響力,推廣到國外社區,最後通過 CNCF 真正走上國際化道路。在 Harbor 之後,我們有望見到越來越多優秀的源自中國的開源項目。在這開源最好的時代,讓我們致敬每一個了不起的開源項目,爲每一個開源項目貢獻者喝彩!"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Harbor 開源地址:https:\/\/github.com\/goharbor\/harbor"}]}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章