本文發表於一年多前。舊文章可能包含過時內容。請檢查頁面中的資訊自發布以來是否已變得不正確。

一次一個 KEP,增強 Kubernetes

你知道 Kubernetes v1.24 有 46 項增強嗎?在一個為期 4 個月的釋出週期中,這包含了大量的新功能。Kubernetes 釋出團隊協調了釋出的後勤工作,從修復測試中的不穩定問題到釋出更新的文件。這是一項艱鉅的工作,但他們總能按時完成。

釋出團隊由大約 30 人組成,分佈在六個子團隊中——Bug Triage、CI Signal、Enhancements、Release Notes、Communications 和 Docs。每個子團隊管理釋出的一個組成部分。這篇文章將重點介紹增強子團隊的角色以及你如何參與其中。

什麼是增強子團隊?

好問題。我們稍後會談到這個,但首先,讓我們談談 Kubernetes 中是如何管理功能的。

每個新功能都需要一份Kubernetes 增強提案——簡稱 KEP。KEP 是小型的結構化設計文件,提供了一種提出和協調新功能的方式。KEP 作者描述了動機、設計(及替代方案)、風險和測試——然後社群成員提供反饋以達成共識。

KEP 透過 k/enhancements 倉庫上的拉取請求(PR)工作流來提交和更新。功能從 alpha 階段開始,隨著其成熟,經過一個畢業過程,逐步進入 beta 和 stable 階段。例如,這裡有一個關於在 Windows Server 上支援特權容器的很酷的 KEP。它在 Kubernetes v1.22 中作為 alpha 功能引入,並在 v1.23 中升級到 beta。

現在回到問題上來——增強子團隊為每個版本協調 KEP 的生命週期跟蹤。每個 KEP 都需要滿足一套要求才能被批准包含在某個版本中。增強子團隊會為每個 KEP 核實每一項要求並跟蹤其狀態。

在每個釋出週期開始時,Kubernetes 特別興趣小組 (SIG) 會提交他們的增強功能以選擇加入該版本。一個典型的版本開始時可能會有 60 到 90 個增強功能。在釋出過程中,許多增強功能會退出。有些沒有完全滿足 KEP 要求,另一些則沒有完成程式碼實現。大約 60%-70% 的已選擇加入的 KEP 會進入最終版本。

增強子團隊做什麼?

又一個好問題,請繼續提問!增強團隊在每個釋出週期中都參與了兩個關鍵的里程碑:增強凍結和程式碼凍結。

增強凍結

增強凍結(Enhancements Freeze)是 KEP 必須完成的截止日期,以便該增強功能能夠被包含在釋出中。這是一個質量關卡,旨在強制大家圍繞維護和更新 KEP 保持一致。最值得注意的要求是 (1) 生產就緒性審查 (PRR) 和 (2) 一份帶有完整測試計劃和畢業標準的 KEP 檔案

增強子團隊透過在 Github 上的 KEP issue 中發表評論與每個 KEP 作者進行溝通。作為第一步,他們會核實狀態並檢查其是否滿足要求。滿足要求後,KEP 會被標記為“tracked”(已跟蹤);否則,它被視為“at risk”(有風險)。如果一個 KEP 在增強凍結生效時仍然處於風險狀態,那麼該 KEP 將從該版本中移除。

這個週期通常是增強子團隊最忙碌的時候,因為有大量的 KEP 需要整理,並且每個 KEP 可能需要多次檢查以核實其是否滿足要求。

程式碼凍結

程式碼凍結(Code Freeze)是所有增強功能的實現截止日期。如果增強功能需要程式碼更改或更新,那麼程式碼必須在此時點前實現、審查併合並。釋出的後三分之一階段專注於穩定程式碼庫——修復不穩定的測試、解決各種迴歸問題和準備文件——所有程式碼都需要在這些步驟開始之前就位。

增強子團隊會核實一個增強功能的所有 PR 是否都已合併到 Kubernetes 程式碼庫 (k/k) 中。在此期間,子團隊會聯絡 KEP 作者,瞭解哪些 PR 是 KEP 的一部分,核實這些 PR 是否已合併,然後更新 KEP 的狀態。如果程式碼在程式碼凍結截止日期前沒有全部合併,該增強功能將從該版本中移除。

我如何參與釋出團隊?

很高興你問了。最直接的方式是申請成為釋出團隊的影子成員(release team shadow)。影子角色是一種實踐性學徒制,旨在為個人在釋出團隊中擔任領導職位做準備。許多影子角色是非技術性的,並且不需要之前對 Kubernetes 程式碼庫有貢獻。

Kubernetes 每年有 3 個版本釋出,每個版本大約有 25 個影子成員,因此釋出團隊總是需要願意貢獻的人。在每個釋出週期之前,釋出團隊會開放影子計劃的申請。當申請開始時,它會發布在 Kubernetes 開發郵件列表中。你可以訂閱該列表的通知(或定期檢視!)來關注申請何時開放。公告通常會在四月中旬、七月中旬和十二月中旬釋出——大約在每個釋出週期開始前一個月。

我如何瞭解更多資訊?

如果你對所有 Kubernetes 釋出子團隊的具體細節感到好奇,請檢視角色手冊。這些手冊記錄了每個子團隊的後勤工作,包括子團隊活動的每週分解。這是更好地瞭解每個團隊的絕佳參考。

你也可以檢視與釋出相關的 Kubernetes Slack 頻道——特別是 #release、#sig-release 和 #sig-arch。這些頻道中有關於釋出的許多方面的討論和更新。