本文說明 Skaffold、Cloud Deploy 使用這項工具的方式和原因,以及如何讓這項工具為您所用。
Cloud Deploy 會使用 Skaffold 執行算繪和部署作業。您也可以使用此工具進行本機開發、建構、測試,以及進階部署功能。不過,Cloud Deploy 只需要 Skaffold 設定,即可識別要轉譯及套用的資訊清單。
什麼是 Skaffold?
Skaffold 是一項指令列工具,可為 Kubernetes 原生應用程式提供持續開發功能。您可以使用 Skaffold 設定本機開發工作區,以便搭配 Cloud Deploy 持續推送軟體更新管道使用。
Skaffold 包含下列功能:
您可以個別控制 CI/CD 管道活動 (建構、算繪、測試部署等)。
這項工具可用於本機開發。
Skaffold 設定檔可讓您區分不同環境,並在同一個設定檔中,設定不同的建構、測試及部署設定。
為什麼 Cloud Deploy 要使用 Skaffold?
Google Cloud Deploy 使用 Skaffold 將算繪工具與交付管道分開。交付管道只會定義從目標到目標的進展,而 Skaffold 設定則會定義要算繪哪些資訊清單,以及算繪方式。這樣一來,您就能彈性顯示資訊清單,同時不影響傳送管道的定義方式。
搭配使用 Skaffold 和 Cloud Deploy 時,Skaffold 可提供下列優勢:
輕鬆上手
請先從本機開發迴圈著手。您可以與團隊分享
skaffold.yaml檔案,確保風格一致,並協助新團隊成員上手。一致的控制項,可跨各種部署目標算繪
您可以搭配使用 Skaffold 設定檔,針對不同目標進行不同的算繪和部署作業。
選擇算繪工具,同時不影響定義推送管道的方式
使用 Skaffold 時,Cloud Deploy 可將推送軟體更新管道定義與轉譯詳細資料分開。這樣一來,您就能在不影響推送管道的情況下,實驗資訊清單。
一致的顯示程序
系統會使用轉譯來源和容器,產生轉譯後的資訊清單。
部署項目健康狀態檢查
Skaffold 會執行這些作業,而 Cloud Deploy 會使用這些作業。
Cloud Deploy 如何使用 Skaffold?
當您建立版本時,系統會將算繪來源和容器映像檔參照傳遞至 Cloud Deploy。
建立版本時,Cloud Deploy 會呼叫 Cloud Build,後者則會叫用
skaffold diagnose和skaffold render,使用該算繪來源和這些映像檔算繪資訊清單。您可以使用 Skaffold 設定檔,區分要套用至不同目標的資訊清單。
Cloud Deploy 支援靜態 Skaffold 模組。
部署時,Cloud Deploy 會呼叫
skaffold apply,將轉譯的資訊清單套用至目標叢集。除非使用自訂目標,否則 Cloud Deploy 不支援使用其他部署工具部署應用程式。不過,您可以使用 Helm 或 Kustomize 等工具做為算繪器。如要進一步瞭解 Cloud Deploy 如何在不使用特定部署工具 (例如 Helm) 的情況下進行部署,請參閱「服務架構」。
讓 Skaffold 為您效勞
根據管道需求設定 Skaffold。
判斷推送管道的需求。
您會有多少目標?每個版本是否都採用相同的算繪和部署方式?如果進展中的每個目標都採用相同設定,就不需要使用 Skaffold 設定檔。您只需要
skaffold.yaml檔案,說明要轉譯的資訊清單。視需要為每個目標建立 Skaffold 設定檔
請在
skaffold.yaml檔案中定義此項目,並在推送管道定義進度序列中繫結。如要進一步瞭解 Skaffold 設定檔,請參閱 Skaffold 說明文件。此外,管理 Cloud Deploy 中的資訊清單一文也提供設定檔設定範例。
設定 Skaffold 記錄詳細程度
根據預設,「Skaffold 記錄層級」會設為
warn。您可以在目標的執行環境設定中,將該值變更為debug,方法是設定verbose: true。
將 Cloud Deploy 連線至持續整合系統。
在 CI 程序的結尾,將
skaffold.yaml、算繪來源和要填入算繪資訊清單的容器映像檔傳遞至。選用:使用 Skaffold 設定本機開發迴圈。
在 Cloud Deploy 中,使用 Skaffold 進行開發是選用功能。Cloud Deploy 運作時唯一需要的項目是
skaffold.yaml檔案,用於識別要算繪的資訊清單。
後續步驟
請前往 Skaffold 網站,瞭解其運作方式和用途。
瞭解 Cloud Deploy 如何選擇要使用的工具版本,以及如何判斷目前使用的版本。
瞭解如何搭配使用 Skaffold 設定檔與進階資訊清單管理工具,例如 Helm、Kustomize 和 kpt。