Tilt 是一款旨在簡化 Kubernetes 環境中微服務開發的工具,它在尋求彌合本地開發和生產環境之間差距的開發者中獲得了顯著的關注。雖然該工具繼續被廣泛使用,但社群成員已經注意到在 Docker 收購該專案後,其開發步伐有所放緩。
簡化 Kubernetes 開發工作流程
Tilt 解決了現代軟體開發中的一個常見挑戰:在開發階段管理複雜的微服務架構。它自動化了程式碼更改時監視檔案、構建容器映象和更新環境的繁瑣迴圈。本質上,它處理的是相當於執行 docker build && kubectl apply
或 docker-compose up
命令的工作,但具有更多智慧和對開發者友好的特性。
許多開發者欣賞 Tilt 使用 Starlark(一種類似 Python 的配置語言)而不是 YAML 來定義工作流。與嚴重依賴 YAML 配置的替代方案(如 Skaffold)相比,這一選擇使配置變得更加易於管理和靈活。
「我一直很欣賞 Tilt 選擇 Starlark 而不是 YAML。這讓事情變得更加清晰!」
Tilt 的關鍵特性
- 自動化工作流:監控檔案變化,構建容器映象,更新環境
- 配置語言:使用 Starlark(類 Python 語言)而非 YAML
- 熱過載能力:適用於解釋型和靜態編譯型語言
- UI 儀表盤:監控日誌和跟蹤構建狀態
- Kubernetes 整合:支援 ingress、服務發現、卷掛載
安裝選項
- macOS/Linux:
curl -fsSL https://raw.githubusercontent.com/tilt-dev/tilt/master/scripts/Install.sh | bash
- Windows:PowerShell 安裝指令碼
- 包管理器:支援 Homebrew、Scoop、Conda、asdf
常見使用場景
- Kubernetes 運算子和控制器
- 基於 eBPF 的收集器
- 資料管道
- Helm 圖表開發
- 使用 Kubernetes ingress 的前端開發
保真度與速度的權衡
社群討論中的一個反覆出現的主題圍繞著開發環境保真度和速度之間的權衡。雖然一些開發者更喜歡使用更簡單的工具(如帶有模擬依賴的 docker-compose)來保持開發週期的快速,但 Tilt 使用者強調了高保真測試環境的好處。
Tilt 使開發者能夠建立與生產配置緊密匹配的本地開發環境,這可以顯著減少環境特定的錯誤。這種方法透過消除對開發特定模擬和變通方法的需求,簡化了服務程式碼。對於前端開發,透過 Tilt 使用 Kubernetes ingress 可以消除對僅用於開發的設定(如前端代理和 CORS 配置)的需求。
實際應用和使用案例
開發者報告使用 Tilt 進行各種應用,包括基於 eBPF 的安全和可觀察性收集器、資料管道、Helm 圖表開發和 Kubernetes 控制器。該工具對於直接與 Kubernetes API 互動的專案特別有價值,例如需要從 ConfigMaps 發現配置的運算子或依賴於 Kubernetes 特定功能的服務。
一個值得注意的例子是 Chroma 開源專案,它使用 Tilt 在開發和持續整合環境中執行其資料庫的分散式版本。這展示了 Tilt 在開發環境中處理複雜分散式系統的能力。
![]() |
---|
一個 GitHub 倉庫頁面,展示了 Tilt 整合到開發專案中的協作性質,反映了其在實際應用中的表現 |
對開發步伐的擔憂
儘管其實用性,一些社群成員已經表達了對 Docker 收購專案後 Tilt 開發步伐的擔憂。雖然該工具仍然功能正常且被廣泛使用,但仍有一些未解決的功能請求可以改善開發者體驗,例如更好地處理自定義資源定義(CRDs)和 Kubernetes 資源之間的依賴關係。
與其他開發工具的區別
關於 Tilt 與其他開發工具(如開發容器)的區別存在一些混淆。雖然開發容器專注於配置具有適當工具鏈的開發環境,但 Tilt 作為一個監控程序,可以構建和啟動具有熱過載功能的服務。這一區別對於評估哪些工具最適合其工作流的開發者來說很重要。
Tilt 的熱過載功能即使在靜態編譯語言中也能工作,使其在不同技術棧中都很通用。該工具還提供了一個用於監控日誌和跟蹤構建成功或失敗的使用者介面,增強了對開發過程的可見性。
對於使用基於 Kubernetes 架構的團隊,Tilt 提供了一個令人信服的解決方案,解決了本地開發的挑戰。儘管對其開發步伐有所擔憂,但該工具透過使開發者能夠在與生產環境緊密相似的環境中工作,同時保持合理的迭代速度,繼續提供顯著價值。
參考:Tilt