當前位置: 華文問答 > 遊戲

專訪張晉濤:從 Web 開發者到中國首位 K8s ingress

2021-09-02遊戲

近日,來自支流科技的工程師張晉濤被添加為 Kubernetes ingress-nginx 專案的 reviewer,這也是首位來自中國的 Kubernetes Ingress Controller reviewer。借此機會,OSCHINA 邀請張晉濤做客「開源訪談」,請他聊聊自己的經歷。

Ingress 是 Kubernetes 名稱或規則的定義,是用於將外部 HTTP(S)流量路由到服務(Service)的規則集合,也是 Kubernetes 中非常重要的外部流量入口。Ingress Controller 是將 Kubernetes 集群狀態同步到閘道器的元件的統稱,它並非 Kubernetes 內建元件。在眾多 Ingress Controller 元件中,Kubernetes ingress-nginx 是當前使用最為廣泛的 Ingress Controller,也是由 Kubernetes 官方維護的 Ingress Controller 元件之一。

提名 PR 中說道,張晉濤為 Kubernetes ingress-nginx 審查 PR 做了非常多的幫助。張晉濤最初是一名 Web 開發者,做前後端開發,2014 年接觸 Docker 後,認定容器技術將會成為主流,便選擇深鉆容器技術。

之後,張晉濤陸續創作了【Kubernetes 上手實踐】和 【Docker 核心知識必知必會】等專欄,並在 2019 年開始持續營運「K8S 生態周報」。同時他也是 Apache APISIX committer, 以及 Containerd、Docker、Helm、Kubernetes、KIND 等眾多開源專案 contributor。

他稱自己是一個熱愛開源、喜歡折騰的工程師。他認為,參與開源貢獻和開源社區活動,主要還是應該從興趣出發。對於雲原生的發展,他認為 Kubernetes 是雲原生的基石,未來的三五年內仍然會是最主要的技術方向,並且正在向 IoT 等領域擴充套件。此外,近兩年張晉濤也開始註重研究 Kubernetes 安全性問題。

7 月 10 日,張晉濤也將出席 GOTC 全球開源技術峰會,帶來【生產環境下的 Kubernetes 安全困境及應對措施】主題演講,重點介紹在生產環境下 Kubernetes 面臨的八類安全問題,並從 Kubernetes 原理入手,給出切實可行,可直接復用至生產環境中的解決方案。

問:請簡單介紹下自己吧?

張晉濤:

我是張晉濤,是一個熱愛開源,喜歡折騰的工程師。目前是 Apache APISIX committer, Kubernetes ingress-nginx reviewer 。在 Docker 和 Kubernetes 相關的很多專案都貢獻過程式碼。我也是個一歲孩子的父親。

問:恭喜您成為 Kubernetes ingress-nginx 專案的 reviewer,可以給讀者們介紹下 reviewer 需要做些什麽嗎?專案選擇 reviewer 的流程是怎樣的?一般註重考察什麽?

張晉濤:

reviewer 除了對專案進行程式碼貢獻外,最主要就是去 review 其他貢獻者的程式碼了,以保證專案的程式碼質素和正確性。與此同時,也需要去跑測試,來驗證 PR 是否符合預期等。

至於專案選擇 reviewer 的流程,這個大前提是對專案要有持續的貢獻,以及非常熟悉該專案。此外還要求至少是 5 個 PR 的主要 reviewer,以及合並過至少 20 個 實質性的 PR 。透過專案的 approver 進行提名,且沒有其他人反對,就可以透過 PR 把名字寫在專案的 OWNERS 檔中了。 Kubernetes 相關專案的 reviewer 詳細職責和選擇流程等可參考此文件 https:// github.com/kubernetes/c ommunity/blob/master/community-membership.md#reviewer

剛才也提到了,能否把握專案程式碼的質素和正確性這個是基礎,也是大前提。在此基礎上會重點考察貢獻度和對專案的熟悉程度。

問:您也是目前 Kubernetes Ingress Controller 開源專案唯一一位來自中國的 reviewer。可以聊聊 Kubernetes Ingress Controller 在 Kubernetes 生態中的地位和影響嗎?有沒有什麽「過來人」的建議可以給到國內開發者?

張晉濤:

Kubernetes Ingress Controller 是 Kubernetes 社區的 Ingress Controller 實作,也是當前使用最為廣泛的 Ingress Controller 。很多公司或者產品都在使用它作為 Kubernetes 集群的流量入口。目前在 GitHub 上有 10.5K 的 star 。

Kubernetes Ingress Controller 這個專案在各種生產環境下久經考驗,程式碼質素和功能都是很不錯的推薦大家可以關註和學習下。我在此專案中也看到過很多來自國內的開發者,說明大家對此專案也都是有所關註的,希望大家能夠持續貢獻。

問:您營運「K8S 生態周報」已經兩年多了,有沒有總結出一些規律,比如大家更關註什麽樣的資訊?

張晉濤:

自我 2019 年開始營運「K8S 生態周報」的這兩年多的時間裏,發現大家更關註 Kubernetes 自身的一些特性變更或者漏洞之類的,這也是我在 「K8S 生態周報」的每一篇中都有一個部份介紹「上遊進展」的原因。

此外,大家對於一些新專案,或者新的提案也比較感興趣,會給我留言,或者加我微信來討論。

問:在「K8S 生態周報」內容的選取上有什麽偏好或者原則嗎?

張晉濤:

在每篇「K8S 生態周報」的開頭,我都有寫:「K8S 生態周報」內容主要包含我所接觸到的 Kubernetes 生態相關的每周值得推薦的一些資訊。

我在【K8S 生態周報一周年了】這篇文章中也曾介紹我最初的想法。「Kubernetes 生態中相關資訊和變化有很多,在這個資訊爆炸的時代,稍不留神就會錯過很多有價值的資訊,但持續的去追這些訊息,也過於浪費時間,而且還需要去篩選資訊。」所以我維護的 「K8S 生態周報」並非簡單的資訊收集,還包含著我的思考及評價。每次周報的內容,都是我個人認為值得推薦和關註的資訊。尤其是這是一份技術型的周報,而非純資訊型,這也是和其他人或組織維護的周報最大的不同。

問:您在許多技術社區都開設了專欄,也經常更新文章,寫文章給您帶來了哪些收獲?您是如何在寫程式碼之余還保持熱情和精力大量產出文章的?

張晉濤:

寫文章對我而言也是一個總結和學習的過程。一方面,寫文章的時候,對知識進行總結歸納,可以讓我加深印象以及梳理清楚其中的邏輯。另一方面,畢竟寫文章和記筆記不同,會公開出來,所以對其中可能之前含糊的點,在寫文章的時候,也會再次考證和實踐。

同時,因為我寫的文章,也結識了不少朋友。

寫文章確實需要花費不少的時間和精力,我個人認為主要還是得做好時間得規劃和管理。這方面我也還在探索和學習,做的並不好。目前可能更多的還是選擇壓榨其他時間吧。我一般會選擇早上起來寫文章。我使用 GitHub 的 Project 和 Issue 等來管理自己需要做的事情。

問:看您之前的采訪是 2014 年從 Docker 「入坑」容器技術領域,近幾年非常關註 Kubernetes,能對二者的發展做簡單預測嗎?對 Kubernetes 棄用 Docker 怎麽看?

張晉濤:

其實 Docker 和 Kubernetes 我都在持續的關註。我在 Docker 主倉庫的貢獻者排行榜中是第 66 位。

Docker 目前仍然是使用最為廣泛的容器執行時和桌面容器化開發者工具。而且 Docker 目前的定位,也確實在做開發者工具方面投入了很多精力,包括預設整合了漏洞掃描工具,更好的磁盤管理工具等。未來的三五年內,Docker 在這個方面應該仍然是開發者的第一選擇。

Kubernetes 是雲原生的基石,未來的三五年內,仍然會是最主要的技術方向。此外,Kubernetes 也正在擴充套件其套用場景,包括 IoT 等領域。

在 Kubernetes 宣布 kubelet 中廢棄對 dockershim 維護後,我曾專門寫過一篇文章 【Kubernetes 棄用 Docker 了?Docker 不能用了?別逗了!】 事實上,這件事情影響並沒那麽大。因為不用在 Kubernetes 程式碼倉庫中的 dockershim 元件,也可以使用外部的 dockershim 元件。另外,從 Docker 中捐贈出來的 containerd 專案,已經是 CNCF 畢業專案了,我認為遷移到 containerd 也是個不錯的選擇。開發者原生的環境,可以繼續使用 Docker 作為開發工具。

問:您是什麽時候加入支流科技的?為什麽加入,支流科技的哪些地方吸引您?目前主要負責什麽工作?

張晉濤:我是今年 4 月底加入支流科技的。支流科技是一家開源商業化公司,團隊中的所有工程師都深度參與開源專案,在公司中也是以技術作為主導。全員遠端,透過 GitHub 和 Slack 等進行協作,這種方式跟我平時參與開源專案體驗一致。而且這裏可以更好的發揮我的特長,也可以給我足夠的自由,所以我比較喜歡。

我在這邊主要負責 Apache APISIX Ingress Controller ,我希望打造一款更棒的 Ingress Controller 。

問:您是如何成為 Apache APISIX committer 的?成為 Apache APISIX committer 之後,有什麽新的工作規劃嗎?

張晉濤:

我維護了 Apache APISIX 的 Helm chart 以及為 Apache APISIX Ingress Controller 增加了 consumer 和 annotation 等特性,同時還有一些社區的活動。在完成專案 GA 後,經過社區的投票和公示流程後,正式成為 Apache APISIX committer 。

最主要的規劃還是在 Apache APISIX Ingress controller 上,準備對其架構進行調整,讓它更加好用。

問:此外您也是 Containerd、Docker、Helm、Kubernetes、KIND 等眾多開源專案的contributor,可以分享下參與開源專案貢獻和開源社區活動的經驗和想法嗎?

張晉濤:

我認為參與開源貢獻和開源社區活動等,主要還是應該從興趣出發。在參與專案的時候,應該盡可能選擇自己接觸較多的,或者更感興趣的專案。不要為了參與而參與,這樣會把自己搞的比較累,而且對自己和社區都不一定是好事兒。

開源社區是開放和包容的,無論你是送出 PR 來改進專案,還是提 issue 反饋 bug ,社區都是歡迎的。

另外需要補充的一點,也是之前很多人在問我的一個問題,「參與開源社區有什麽回報?」我參與開源很久了,除了目前我在支流科技可以全職做開源外,之前待過的任何一家公司,我都只能利用自己的業余時間去參與,花費了挺多時間和精力。但其實並沒有任何物質上的回報。可能只是興趣所在吧,恰好現在把興趣變成了工作(還有一份不錯的薪水)。歡迎任何對開源感興趣的小夥伴給我發郵件交流,[email protected]

問:雲原生向來也是開源爭議比較多的領域之一,比如在開源上貢獻較多的公司和另一些從開源專案中獲取價值較多的公有雲廠商在利益上的沖突。您怎麽看?這種矛盾可以解決嗎?

張晉濤:這個問題由來已久,但也不是不能調和。就目前我看到的情況來說,相比 3 年多之前已經好很多了,多數雲廠商也正在積極貢獻。無論說是為了爭取拿到更多話語權,還是為了解決自己所遇到的問題,在回饋社區。我覺得都是好事兒。只有這樣持續的進行正迴圈,開源軟件和社區才能更好的發展。

問:您是什麽時候開始註重研究 Kubernetes 安全性問題的,有什麽契機嗎?這次 GOTC 大會您的議題是【生產環境下的 Kubernetes 安全困境及應對措施】,有沒有一些亮點內容可以提前透露一點點?

張晉濤:

大致是 2018 年的下半年,那個時候我發現 Sysdig 公司旗下有一款開源軟件 Falco ,專門用來做執行時安全的,我發現它特別有用,便去研究了一番。過了段時間,發現 Sysdig 把 Falco 捐獻給了 CNCF ,這也是 CNCF 托管的第一個專註於執行時安全的專案。我還發了條朋友圈,哈哈。

本次 GOTC 大會,我會重點介紹在生產環境下 Kubernetes 面臨的八類安全問題。涉及到了許可權,網絡,資源,數據及執行時等多個方面,從 Kubernetes 原理入手,給出切實可行,可直接復用至生產環境中的解決方案。歡迎大家關註。

全球開源技術峰會(the global opensource technology conference, GOTC)是由開放原子開源基金會與 Linux 基金會聯合開源中國發起的,面向全球開發者的一場盛大開源技術盛宴。峰會將攜頭部開源公司和頂級開源專案一起亮相,覆蓋雲原生、人工智能、物聯網、區塊鏈、大前端、音影片、安全、作業系統、數據庫、開源治理等多個技術領域,在為期 2 天的時間裏,為開發者帶來全球最新、最純粹的開源技術,同時傳播開源文化和理念,推動開源生態的發展和建設。