用 kubectl 外掛把你的想法帶到這個世界
kubectl
是與 Kubernetes 互動的最關鍵工具,它必須滿足多個使用者角色,每個使用者角色都有自己的需求和觀點。讓 kubectl
滿足你需要的一種方法是在 kubectl
中構建新功能。
在 kubectl 中構建命令的挑戰
然而,說起來容易做起來難。作為 Kubernetes 的重要基石,對 kubectl
的任何有意義的更改都需要經過Kubernetes 增強建議(KEP)過程,預先討論了預期的更改。
在實現方面,你會發現 kubectl
是一個巧妙而複雜的工程。要完成你想要完成的任務,可能需要很長時間才能適應程式碼庫的流程和風格。接下來是審查過程,可能要經過幾輪,直到滿足 Kubernetes 維護者的所有要求 —— 畢竟,他們需要接管這個特性的所有權,並從合併的那一天開始維護它。
當一切順利時,你終於可以高興了。你的程式碼將隨下一個 Kubernetes 發行版一起釋出。如果你不走運的話,這可能意味著你需要再等三個月才能在 kubectl
釋出你的想法。
這就是一切順利的幸福之路。但是,你的新功能可能永遠不會出現在 kubectl
中,這是有原因的。首先,kubectl
具有特定的外觀和感覺,違反這種風格是維護者無法接受的。例如,用顏色生成輸出的互動式命令與 kubectl
的其餘部分不一致。另外,當涉及到只對極少數使用者有用的工具或命令時,維護人員可能會簡單地拒絕你的建議,因為 kubectl
需要解決常見的需求。
但這並不意味著你不能將你的想法傳送給 kubectl
使用者。
如果不需要更改 kubectl 來新增功能呢?
這就是 kubectl 外掛的亮點所在。從 kubectl v1.12 開始,你可以簡單地將可執行檔案放到你的路徑中,該路徑遵循 kubectl-myplugin
的命名模式。然後你可以用 kubectl myplugin
來執行這個外掛,它就像 kubectl
的一個普通子命令。
外掛使你有機會嘗試新的體驗,如終端 UI、豐富多彩的輸出、專門的功能或其他創新的想法。你可以去創造,因為你是你自己的外掛的所有者。
此外,外掛為你希望向 kubectl
建議的命令提供了安全的實驗空間。透過預先發布外掛,你可以更快地將你的功能推送給終端使用者,並快速收集反饋。例如,kubectl-debug 外掛建議成為 kubectl 中的內建命令(KEP)。同時,外掛作者可以使用外掛機制釋出功能並收集反饋。
如何開始開發外掛
如果你已經有了一個外掛的想法,你如何最好地實現它?首先,你必須自問是否可以將其實現為現有 kubectl
功能的包裝。如果是這樣,那麼將外掛編寫為 shell 指令碼通常是最好的方法,因為生成的外掛很小,可以跨平臺工作,並且由於沒有編譯而具有很高的可信度。
另一方面,如果外掛邏輯很複雜,那麼通用語言通常更好。這裡的標準選擇是 Go,因為你可以使用優秀的 client-go 庫與 Kubernetes API 進行互動。Kubernetes 維護的 sample-cli-plugin 演示了一些最佳實踐,可以作為新外掛專案的模板。
當開發完成後,你只需要將你的外掛傳送給 Kubernetes 使用者即可。為了獲得最佳的外掛安裝體驗和可發現性,你應該考慮透過 krew 外掛管理器這樣做。要深入討論關於 kubectl 外掛的技術細節,請參閱 kubernetes.cn 的文件。
相關文章
- Attachment 這個外掛怎麼用啊?
- K8S 實用工具之四 - kubectl實用外掛K8S
- EXCEL若搭配這個外掛,你的人生從此要開掛Excel
- 超詳細帶你入門開發一個超實用的瀏覽器外掛瀏覽器
- 什麼?你竟然還沒有用這幾個chrome外掛?Chrome
- 這些年,R星帶我見識的外掛
- 刷paper利器!不想開啟PDF,這個外掛自動幫你轉到介紹頁
- 10個最實用的個時間軸外掛(帶詳細說明)
- 用這款sketch外掛,幫你完美還原安卓介面安卓
- 12個超好用的IntelliJ IDEA 外掛!你用過幾個?IntelliJIdea
- 10個實用的Photoshop外掛
- 這個好玩又實用的jupyter外掛我真的愛了
- 帶你進⼊ OpenAI 的世界OpenAI
- 解密|一文帶你看懂外掛技術解密
- 看完這篇,你也可以實現一個360度全景外掛
- 你知道這個提高 Java 單元測試效率的 IDEA 外掛嗎JavaIdea
- 去你的,奮鬥逼,別把加班文化帶到微軟來微軟
- 8個超實用的jQuery外掛應用jQuery
- gitbook 入門教程之實用外掛(新增3個外掛)Git
- 15個超級實用的jQuery外掛jQuery
- 怎麼使用圖片管理這個外掛
- 如何 把下面這個url 重寫 用response 重寫到請求中...
- 從0到1完成一個Babel外掛Babel
- 帶你走程式序員的世界
- 寫一個chrome外掛讓你的codepen下雨Chrome
- 40 個讓你的網站更加友好的 jQuery 外掛網站jQuery
- Android Studio Plugin 外掛開發教程(一) —— 開發你的第一個外掛AndroidPlugin
- 我來談談“人工智慧”這個詞給我帶來了哪些想法人工智慧
- 幾行程式碼帶你用TinyEngine低程式碼引擎開發側邊欄外掛行程
- 這款遊戲想帶你進入現實背後的夢境世界遊戲
- 把《鬼泣》帶到移動平臺,這件事到底有多難?
- 8個針對開發者的MooTools實用外掛
- 擴充套件你的KUBECTL功能套件
- 建議把datetimePicker改成jquery的外掛jQuery
- 收下這7款外掛,讓你在使用 Vite 的時候如虎添翼Vite
- [譯] 5個Vuex外掛,給你的下個VueJS專案VueJS
- [外掛擴充套件]簽到及簽到排行外掛v0.1套件
- 你應該關注的幾個Eclipse超酷外掛Eclipse