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

聚焦 SIG CLI

在 Kubernetes 的世界中,大規模管理容器化應用程式需要強大而有效率的工具。命令列介面 (CLI) 是任何開發人員或運營人員工具組不可或缺的一部分,提供與 Kubernetes 叢集互動的便捷且彈性的方式。

SIG CLI 在改善 Kubernetes CLI 體驗方面發揮至關重要的作用,其重點在於開發和增強 kubectl,這是 Kubernetes 的主要命令列工具。

在此 SIG CLI 焦點報導中,SIG ContribEx-Comms 團隊成員 Arpit Agrawal 與 SIG CLI 技術主管兼主席 Katrina Verey 以及 SIG CLI 批次負責人 Maciej Szulik 討論了 SIG CLI、當前專案、挑戰以及任何人如何參與。

因此,無論您是經驗豐富的 Kubernetes 愛好者還是剛入門,了解 SIG CLI 的重要性無疑將提升您的 Kubernetes 之旅。

介紹

Arpit:您可以簡短介紹一下自己、您的角色以及您是如何參與 SIG CLI 的嗎?

Maciej:我是 SIG-CLI 的技術主管之一。自 2014 年以來,我一直在多個領域從事 Kubernetes 的工作,並在 2018 年被任命為主管。

Katrina:自 2016 年以來,我一直以終端使用者的身分使用 Kubernetes,但直到 2019 年底,我才發現 SIG CLI 與我從內部專案中獲得的經驗有多麼契合。我開始定期參加會議並提交了一些小的 PR,到 2021 年,我開始更深入地與 Kustomize 團隊合作。同年稍晚,我被任命為目前的職位,擔任 Kustomize 和 KRM Functions 的子專案負責人,以及 SIG CLI 技術主管兼主席。

關於 SIG CLI

Arpit:謝謝!您可以與我們分享 SIG CLI 的目的和目標嗎?

Maciej:我們的 章程 有最詳細的描述,但簡而言之,我們處理所有 CLI 工具,這些工具可協助您管理 Kubernetes 資訊清單並與 Kubernetes 叢集互動。

Arpit:我明白了。那麼 SIG CLI 如何在雲原生生態系統中推廣 CLI 開發和使用的最佳實務呢?

Maciej:在 kubectl 內部,我們正在進行多項努力,旨在鼓勵新的貢獻者將現有命令與新標準對齊。我們發布了多個函式庫,希望這些函式庫能讓編寫與 Kubernetes API 互動的 CLI 更容易,例如 cli-runtime 和 kyaml

Katrina:我們還維護一些 CLI 工具的互操作性規範,例如 KRM Functions Specification (GA) 和新的 ApplySet Specification (alpha)。

當前專案與挑戰

Arpit:瀏覽過 README 檔案後,很明顯 SIG CLI 有許多子專案,您可以重點介紹一些重要的專案嗎?

Maciej:我認為最值得您投入時間的四個最活躍的子專案是:

  • kubectl:標準 Kubernetes CLI。
  • Kustomize:Kubernetes yaml 資訊清單檔案的免範本自訂工具。
  • KUI - Kubernetes 的 GUI 介面,可將其視為增強版的 kubectl
  • krewkubectl 的外掛程式管理器。

Arpit:SIG CLI 是否有正在進行的即將到來的倡議或發展?

Maciej:在任何給定時間點,我們總是在進行多項倡議。最好加入我們的其中一次通話以了解當前的倡議。

Katrina:對於主要功能,您可以查看 我們的開放 KEP。例如,在 1.27 版本中,我們為 kubectl apply 中的新修剪模式以及 kubectl create 外掛程式引入了 alpha 版本。目前正在討論的令人興奮的想法包括 kubectl delete 的互動模式 (KEP 3895) 和 kuberc 使用者偏好設定檔 (KEP 3104)。

Arpit:您可以討論 SIG CLI 在努力改進雲原生技術的 CLI 時面臨的任何挑戰嗎?未來有哪些努力來解決這些挑戰?

Katrina:我們在每個決策中面臨的最大挑戰是向後相容性,並確保我們不會破壞現有使用者的體驗。經常發生的情況是,修復表面上的問題似乎很簡單,但即使是修復錯誤也可能對某些使用者構成破壞性變更,這表示我們需要經過漫長的棄用程序才能變更它,或者在某些情況下我們根本無法變更它。另一個挑戰是在我們工具上公開的旗標集中,需要在自訂化與可用性之間取得平衡。例如,我們收到許多關於新旗標的提案,這些旗標肯定對某些使用者有用,但對於大多數使用者來說,它們所帶來的複雜性增加是不值得的。kuberc 提案可能有助於解決其中一些問題,它讓個別使用者能夠設定或覆寫我們無法變更的預設值,甚至透過別名建立自訂子命令

Arpit:隨著 Kubernetes 的每個新版本發布,維護一致性和完整性肯定具有挑戰性:SIG CLI 團隊如何應對?

Maciej:這與前一個問題中提到的主題非常相似:每個新變更,尤其是對現有命令的變更,都經過大量審查,以確保我們不會破壞現有使用者的體驗。在任何時間點,我們都必須在功能與不破壞使用者體驗之間保持合理的平衡。

未來計畫與貢獻

Arpit:您認為 CLI 工具在雲原生生態系統中的角色未來會如何發展?

Maciej:我認為 CLI 工具過去是,而且將永遠是生態系統的重要組成部分。無論是由沒有 GUI 的遠端機器上的管理員使用,還是在每個 CI/CD 管道中使用,它們都是不可替代的。

Arpit:Kubernetes 是一個社群驅動的專案。對於任何想要參與 SIG CLI 工作的人,您有什麼建議嗎?他們應該從哪裡開始?有任何先決條件嗎?

Maciej:除了手頭上有一點空閒時間和願意學習新事物的意願之外,沒有其他先決條件 :-)

Katrina:具備 Go 的工作知識通常很有幫助,但我們也有需要非程式碼貢獻的領域,例如 Kustomize 文件整合專案