將 Skaffold 與 Cloud Deploy 搭配使用

本文說明 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 diagnoseskaffold render,使用該算繪來源和這些映像檔算繪資訊清單。

  • 您可以使用 Skaffold 設定檔,區分要套用至不同目標的資訊清單。

  • Cloud Deploy 支援靜態 Skaffold 模組

  • 部署時,Cloud Deploy 會呼叫 skaffold apply,將轉譯的資訊清單套用至目標叢集。

  • 除非使用自訂目標,否則 Cloud Deploy 不支援使用其他部署工具部署應用程式。不過,您可以使用 HelmKustomize 等工具做為算繪器。如要進一步瞭解 Cloud Deploy 如何在不使用特定部署工具 (例如 Helm) 的情況下進行部署,請參閱「服務架構」。

讓 Skaffold 為您效勞

  1. 根據管道需求設定 Skaffold。

    1. 判斷推送管道的需求。

      您會有多少目標?每個版本是否都採用相同的算繪和部署方式?如果進展中的每個目標都採用相同設定,就不需要使用 Skaffold 設定檔。您只需要 skaffold.yaml 檔案,說明要轉譯的資訊清單。

    2. 視需要為每個目標建立 Skaffold 設定檔

      請在 skaffold.yaml 檔案中定義此項目,並在推送管道定義進度序列中繫結。

      如要進一步瞭解 Skaffold 設定檔,請參閱 Skaffold 說明文件。此外,管理 Cloud Deploy 中的資訊清單一文也提供設定檔設定範例。

    3. 設定 Skaffold 記錄詳細程度

      根據預設,「Skaffold 記錄層級」會設為 warn。您可以在目標的執行環境設定中,將該值變更為 debug,方法是設定 verbose: true

  2. 將 Cloud Deploy 連線至持續整合系統。

    在 CI 程序的結尾,將 skaffold.yaml、算繪來源和要填入算繪資訊清單的容器映像檔傳遞至。

  3. 選用:使用 Skaffold 設定本機開發迴圈。

    在 Cloud Deploy 中,使用 Skaffold 進行開發是選用功能。Cloud Deploy 運作時唯一需要的項目是 skaffold.yaml 檔案,用於識別要算繪的資訊清單。

後續步驟