使用 Kubernetes 的公司,他們的目標是為開發人員提供一個方便部署的體驗。為了幫助企業實現這一目標,我們最近推出了一項功能:Skaffold,這是一款可幫助 Kubernetes 應用程式持續開發的命令行工具。有了 Skaffold,開發人員可以在本地推送程式碼,同時持續更新並準備好在本地或遠程 Kubernetes 叢集中進行驗證或測試。自動化流程節省了開發時間,並通過其生產之過程提高了應用程式的品質。
Kubernetes 為使用者提供了靈活、且可促進套件可靠部署的 API 和方法。 Kubernetes 採用定制的部署方法,並為了不太複雜的程序提供程序化的方法來實現。Kubernetes 的功能可幫助運營團隊實行常見的最佳實踐,常見的例子如基礎設施程式碼化、統一日誌記錄,不可變的基礎架構和更安全的 API 驅動的部署策略,如金絲雀部署 (canary) 和藍/綠部署。運營商現在可以將重點放在管理對其架構最為關鍵的基礎設施,以最小的服務風險來支援快速的發布。
但在某些情況下,即使運營團隊熟悉其部署方法的優點,開發人員也是組織中最後一個引入 Kubernetes 的人員。開發人員可能已經使用 Docker 等 Linux 容器為其應用程式包裝。Docker 可以重複生成運行時環境,在這些環境中,他們可以通過簡單且可重複的方式定義應用程式的依賴關係和配置。這讓開發人員能在團隊中與其開發運行時間保持同步,但是 Docker 並未引入常見的部署和驗證方法。為此,開發人員將希望複製已使用的 Kubernetes API 和方法來創建類似的集成和手動測試環境。
一旦開發人員弄清楚 Kubernetes 如何工作,他們需要啟動 Kubernetes API 來完成他們的任務。在這個過程中,他們需要:
1. 找尋或部署 Kubernetes 叢集
2. 創建 Docker 映像檔並將其上傳到其叢集內已啟用的 registry
3. 使用參考文檔和範例來創建他們的第一個 Kubernetes manifest 檔案
4. 使用 kubectl CLI 或 Kubernetes UI 介面來部署其應用程式
5. 重複步驟 2 到步驟 4,直到其功能,錯誤修復或完成改版
6. 檢查他們的更動並運行 CI 流程,包括:
• 單元測試
• 集成測試
• 部署到測試環境
步驟 2 到步驟 5 要求開發人員通過多個界面使用許多工具來更新其應用程式。這些步驟中的大多步驟對於開發人員來說是無差別的,並且可以自動化,而工具都是針對開發人員的經驗量身定制。
使用 Skaffold,便可自動完成構建,推送和部署應用程式的工作流程。開發人員可以在開發程式的同時在後台啟動 Skaffold,並在不需要任何輸入或附加命令的情況下不斷更新其應用程式。它還可以用於自動化環境中,如 CI / CD 管道,以便在將應用程式移至正式環境時利用相同的工作流程和工具。
Skaffold 功能
Skaffold 是一個早期的開源項目,包含以下注意事項和功能 :
• 沒有服務器端組件意味著沒有額外的成本
• 檢測程式碼中的更改並自動創建/推送/部署
• 映像檔標籤管理。不用再擔心更新 Kubernetes 清單中的映像檔標籤,以便在開發過程中推出更改
• 支持現有的工具和工作流程。創建和部署 API 使支持許多不同的工作流程變得可能
• 支持多個應用程式元件。僅創建和部署已更改的部分
• 在存檔時自動部署,或利用相同設定重複部署
可插拔性 (Pluggability)
Skaffold 有一個可插拔的架構,允許開發人員在工作流程中選擇最適合的工具。
按照入門指南開始使用 Kubernetes Engine 上的 Skaffold,或按照自述文件中的說明使用 Minikube。