本文可協助您規劃和設計遷移至 Google Cloud的部署階段。完成評估目前作業環境、安排遷移至 Google Cloud,並建構Google Cloud 基礎後,就可以部署工作負載。
本文是下列多部分系列文章之一,探討如何遷移至Google Cloud:
- 遷移至 Google Cloud:開始使用
- 遷移至 Google Cloud:評估及探索工作負載
- 遷移至 Google Cloud:規劃及奠定基礎
- 遷移至 Google Cloud:移動大型資料集
- 遷移至 Google Cloud:部署工作負載 (本文)
- 遷移至 Google Cloud:從手動部署作業遷移至自動化容器化部署作業
- 遷移至 Google Cloud:最佳化環境
- 遷移至 Google Cloud:驗證遷移計畫的最佳做法
- 遷移至 Google Cloud:盡量降低成本
以下是遷移流程圖。
部署階段是遷移至 Google Cloud的第三階段,您在此階段中為工作負載設計部署程序。
如果您打算從內部部署環境、私人代管環境或其他雲端服務供應商遷移至Google Cloud,或是正在評估遷移的可能性,並想瞭解遷移的預期情況,本文都可助您一臂之力。
本文將會按照彈性、自動化和複雜度等特性,依序向您介紹不同的部署程序類型,以及如何選擇適合自身方案的評估標準:
- 手動部署。
- 使用設定管理 (CM) 工具進行部署。
- 使用容器自動化調度管理工具進行部署。
- 自動部署。
在您部署工作負載之前,請先規劃和設計部署階段。首先,您應該評估要為工作負載實作的各種部署程序類型。在評估部署程序類型時,您可以選擇先從目標程序開始,日後再轉移到更複雜的程序。這種方法可以更迅速地產生結果,但是當您轉移到更進階的程序時,也可以會產生些許障礙,因為您必須承擔使用目標程序時所積累的技術負債。例如,如果您從完全手動的部署作業改用自動化解決方案,則可能必須控管部署管道和應用程式的升級。
雖然您可以根據工作負載的需求實作不同類型的部署程序,但這麼做也可能增加此階段的複雜性。透過實作不同類型的部署程序,您可以獲得更多的作業彈性,不過這可能需要具備各個程序專屬的專業知識、工具和資源,代表您必須付出更多的心力。
手動部署
完全手動部署是由完全非自動化的佈建、設定和部署程序所支援。儘管程序的各個步驟可能有訂有規範和檢查清單,但系統並不會自動檢查或強制執行這些規範。手動程序容易出現人為錯誤、不可重複,而且效能受到人為因素的限制。
完全手動的部署程序仍相當實用,例如當您需要在沙箱環境中快速檢測實驗時。為持續數分鐘的實驗設定結構化、自動化程序可能會不必要地拖慢進度,尤其是在遷移早期階段,此時您可能還不夠瞭解建構自動化程序的工具和做法。
雖然 Google Cloud沒有這種限制,但是在處理缺少必要管理 API 的不含作業系統環境時,完全手動部署可能是您的唯一選擇。在這種情況下,由於缺少必要的介面,您無法實作自動化程序。如果您的舊版虛擬化基礎架構不支援任何自動化功能,則可能被迫必須實作完全手動程序。
除非沒有其他選擇,否則建議您避免使用完全手動部署作業。
您可以使用以下工具實作完全手動的佈建、設定和部署程序:Google Cloud 控制台、Cloud Shell、Cloud API 和 Google Cloud CLI。
使用設定管理工具進行部署
您可以使用 CM 工具,以可重複與受控的方式設定環境。 這些工具包括一組已用於實作常見設定作業的外掛程式和模組,可讓您專注於要在環境中達成的結束狀態,而無須費心透過實作邏輯來達到該結束狀態。如果收錄的作業組合不夠使用,CM 工具通常也提供擴充功能系統供您開發自己的模組。雖然您可以使用這些擴充功能,但建議您盡可能運用預先定義的模組和外掛程式,以避免額外的開發和維護工作負載。
CM 工具可以用於設定環境,也可以用來佈建基礎架構,並為工作負載實作部署程序。與完全手動的佈建、設定和部署程序相比,CM 工具程序不但可重複、可控制也可供稽核,是更理想的選擇方案。不過,由於 CM 工具不是專為佈建或部署工作設計,因此有幾個缺點。CM 工具通常缺少實作精細佈建邏輯的內建功能,例如偵測及管理基礎架構的實際狀態和理想狀態之間的差異;或缺乏條件寬裕的部署程序,例如沒有停機時間的部署或藍綠部署。 您可以透過先前提到的擴充功能來實作 CM 工具缺乏的功能。這些擴充功能可能會產生額外的工作量,也可能增加部署程序的整體複雜度,因為您需要額外的專業知識來設計、開發和維護自訂的部署解決方案。
您可以使用以下工具實作本類型的佈建、設定和部署程序:Ansible、Chef、Puppet 和 SaltStack。
使用 CM 工具的基本部署程序可準備執行階段環境,並在這些環境中部署工作負載。舉例來說,您的程序可能會建立 Compute Engine 執行個體、安裝必要軟體,以及部署工作負載。設定支援工作負載的執行階段環境需要時間。如要縮短設定執行階段環境所需的時間,您可以實作執行 CM 工具的程序,產生範本 (例如作業系統 (OS) 映像檔)。您可以使用這個範本建立執行階段環境的執行個體,以便執行工作負載。舉例來說,您可以使用 Cloud Build 建立 Compute Engine 映像檔。這些映像檔通常稱為「黃金映像檔」或「白銀映像檔」,兩者都是不可變更的範本,例如您為執行階段環境建立的 OS 映像檔。兩者之間的差異取決於部署程序必須完成的工作量,才能讓映像檔執行工作負載:
- 黃金映像檔:您為執行階段環境建立的範本,或是從基本範本準備的範本。黃金映像檔包含執行階段環境完成指派工作所需的所有資料和設定資訊。您可以準備多種黃金映像檔,以完成不同工作。黃金映像檔類型的同義詞包括風味、衍生版本和原型。
- 銀級映像檔:您為執行階段環境建立的範本,方法是對金級映像檔或基本範本進行最少的變更。執行銀級映像檔的執行階段環境會在首次啟動時,根據這些執行階段環境必須支援的使用案例需求,完成佈建和設定。
使用容器自動化調度管理工具進行部署
如果您已經或計劃投資在工作負載容器化,則可以使用容器自動化調度管理工具來部署您的工作負載。
容器自動化調度管理工具會負責管理環境的基礎架構,並支援多種部署作業和實作部署邏輯的構成要素,以在內建邏輯不足時使用這些邏輯。有了這些工具,您就能專心使用現成的機制來編寫實際部署邏輯,而不必實作邏輯。
容器自動化調度管理工具還提供了抽象機制,可將部署程序一般化,使其適用於不同的基礎環境,而不必個別為每個環境設計和實作多項程序。舉例來說,這些工具通常包含用於資源調度和升級部署的邏輯,讓您不必親自實作。此外,您甚至可以利用這些工具在目前的環境中實作部署程序,然後將這些程序移植到目標環境,因為在設計層面上,實作程序基本上是相同的。透過提早採用這些工具,您就能累積實施容器化環境的經驗,這對於遷移至Google Cloud很有幫助。
如果您的工作負載已完成容器化,或者將來可進行容器化且您也打算如此投資,則可以使用容器自動化調度管理工具。如果是上述後者的情況,則應該對每個工作負載進行深入分析,以確定下列事項:
- 確認工作負載容器化是否可行。
- 評估工作負載容器化帶來的潛在好處。
如果潛在的缺點大於容器化的好處,則建議您只有在團隊已經採用容器自動化調度管理工具,而且您不想管理異質環境的情況下,才使用容器自動化調度管理工具。
舉例來說,資料倉儲解決方案通常不會使用容器自動化調度管理工具進行部署,因為這些解決方案無法在臨時容器中執行。
您可以使用 Google Kubernetes Engine (GKE) 實作這項部署程序。 Google Cloud如果您對無伺服器環境感興趣,可以使用 Cloud Run 等工具。
自動部署
無論您在環境中使用哪一種佈建、設定、部署和自動化調度管理工具,都可以實作完全自動化的部署程序,以盡可能減少人為錯誤,並針對組織使用的程序進行整合、簡化和標準化。如果需要,您也可以在部署程序中插入手動核准步驟,但是每個步驟均為自動化。
常見的端對端部署管道的步驟如下:
- 程式碼審查。
- 持續整合 (CI)。
- 構件實際運作。
- 持續部署 (CD),搭配最終手動核准。
您可以將每個步驟分別自動化,因此可以逐步將目前的部署程序遷移至自動化解決方案;也可以直接在目標環境中實作新的程序。為了使程序有效,您需要在管道的每個步驟中採用測試和驗證程序,而不只是在程式碼審查步驟或持續整合步驟中採用這些程序。
如果程式碼集有任何變更,您都應該進行徹底檢查以評估變更的品質。大部分的原始碼管理工具均配備出色的程式碼審查功能。此外,這些工具通常也能透過檢查已修改的原始碼範圍,來自動建立和初始化審查,前提是您已為程式碼集的各個範圍指派負責的小組。您也可以在每項審查中針對原始碼執行自動檢查,例如 Linter 和靜態分析工具,以保持程式碼集的一致性和品質標準。
在您審查並整合程式碼集中的變更後,持續整合工具可以自動執行測試、評估結果,然後將目前版本的任何問題通知您。您可以按照測試驅動開發程序,為每個工作負載的功能進行完整測試,讓這個步驟發揮更佳效益。
針對每個成功建構,您可以自動建立部署構件。這類構件代表了具備最新變更且已可部署的工作負載版本。在構件建立步驟中,您也可以對構件本身執行自動驗證。例如,針對已知問題進行安全漏洞掃描,且只有在確認沒有漏洞的情況下才核准構件進行部署。舉例來說,您可以使用 Artifact Registry 掃描構件,找出已知安全漏洞。
最後,您可以在目標環境中自動部署每個通過核准的構件。如果您使用多個執行階段環境,則也可以為每個環境實作專屬的部署邏輯,甚至能視需要新增手動核准步驟。舉例來說,您可以在開發、品質確保和實際工作前置環境中自動部署工作負載的新版本,同時要求實際運作控管小組進行人工審核與批准,才能在實際工作環境中進行部署。
如果您要使用自動化、結構化、簡化且可稽核的程序,則完全自動化的端對端程序是您的最佳選擇之一,不過實作這項程序並非易事。在採用這項程序之前,您必須清楚地瞭解預期的效益、相關的成本,以及現有的團隊知識和專業技能水準是否足以實作完全自動化的部署程序。
您可以使用 Cloud Deploy 實作全自動部署程序。
後續步驟
- 瞭解如何遷移部署程序。
- 瞭解何時應尋求遷移作業的相關協助。
- 如需更多參考架構、圖表和最佳做法,請瀏覽 Cloud 架構中心。
貢獻者
作者:Marco Ferrari | 雲端解決方案架構師