引入Skaffold:簡單且可重複的Kubernetes開發
作為Kubernetes的董事會成員,他們的目標之一是為開發人員提供與生產環境緊密相連的的迭代和部署體驗。為了幫助企業實現這一目標,我們最近發布了Skaffold,這是一款可幫助持續開發Kubernetes應用的命令行工具。藉助Skaffold,開發人員可以在本地迭代應用程序源代碼,保證持續更新,並可以在本地或遠程Kubernetes群集中進行驗證和測試。將開發流程自動化節省了開發時間,並通過生產環境的部署提高了應用程序的質量。
Kubernetes為運營商提供了增強靈活性和促進軟體可靠部署的API和方法。Kubernetes採用定製化的部署方法,如果程序不需要更健壯的話,就可以使用程序化的方法來實現相似的應用。Kubernetes的功能可幫助運營團隊應用常見的最佳實踐,如基礎設施代碼,統一日誌記錄,不可變的基礎架構以及更安全的API驅動的部署策略,如canary 和 blue/green。運營商現在可以專註於對其最為關鍵的基礎設施管理部分,從而以最小的風險為其服務提高發布速度。
但在某些情況下,即使運營團隊熟悉其部署方法的優點,開發人員也是組織中最後一個引入Kubernetes的人員。開發人員可能已經準備使用Docker等Linux容器,為其應用程序創建可複製的包。Docker允許他們生成重複的運行環境,在這些環境中他們可以通過簡單且可重複的方式定義應用程序的依賴關係和配置。這使得開發人員可以與整個團隊的開發進程保持同步,但是,它並未引入常見的部署和驗證方法。為此,開發人員希望在生產中使用Kubernetes API和方法來創建類似的集成和手動測試環境。
現在開發人員清楚了Kubernetes如何工作,他們需要使用Kubernetes API來完成他們的任務。他們需要:
查找或部署Kubernetes群集
構建Docker鏡像並將其上傳到在其集群中啟用的倉庫
使用參考文檔和示例來創建他們的第一個Kubernetes定義清單
使用kubectl CLI或Kubernetes儀錶板來部署其應用程序定義
重複步驟2-4,直到其功能,bug修復或更改完成
檢查程序的變化並通過CI流程測試它們,包括:
單元測試
集成測試
部署到測試或分段環境
步驟2到5要求開發人員通過多個介面使用許多工具來更新其應用程序。大部分步驟對開發人員來說是沒什麼差別的,並且可以自動化,或者至少有一套專門給有經驗的開發人員量身定製的工具做指導。
通過Skaffold,可自動完成一系列工作流程,包括應用程序的構建,推送和部署。開發人員可以在開發代碼的同時在後台啟動Skaffold,並在不需要任何輸入或額外的命令的情況下不斷更新其應用程序。它還可以用於自動化環境中,如 CI / CD 管道,在將應用程序移至生產環境時,可以利用相同的工作流程和工具。
Skaffold功能
Skaffold是一個早期的開源項目,包含以下設計注意事項和功能:
沒有伺服器端組件意味著群集群沒有開銷。
允許您檢測源代碼中的更改並自動構建/推送/部署。
圖像標籤管理。在開發過程中推送更改,不用擔心 Kubernetes 清單中的圖像標記更新。
支持現有的工具和流程。構建和部署API可以有不同的組合,以支持許多不同的工作流程。
支持多個應用程序組件。僅構建和部署已更改的堆棧部分。
在保存文件或進行一次部署時,可以使用相同配置定期部署。
可插拔
Skaffold有一個可插拔的架構,允許您根據開發流程選擇最適合您的工具。
TAG:雲技術之家 |