建立可部署架構的最佳作法

可部署架構 是一個自行包含的模組化雲端自動化單元,結合一或多個雲端資源以提供一般架構型樣。 它可簡化部署、可擴充性及模組化,讓使用者能夠輕鬆佈建及管理基礎架構資源。

本手冊概述建置以 Terraform 撰寫且設計完善且可維護的可部署架構的最佳作法。 專注於主要屬性 (例如範圍、可組合性、可消費性及品質檢查) 有助於確保強大且可靠的解決方案。 本手冊的最後一節提供工具和範本的參照,以協助實作這些實務。

這些最佳作法適用於使用 Terraform 建立可部署架構。 如需相關資訊,請參閱 建立可部署架構

觀看與學習

想看看它的實際運作嗎? 查看以下視訊,瞭解有關可部署架構的更多資訊。

視訊記錄

可部署架構是一種具有自動化功能的架構模式,用於在雲端部署基礎架構和軟體。 它可讓組織推動基礎架構和軟體部署與配置方式的一致性。 它強制執行有主見的架構和安全性,從長遠來看,可減少整體支援並增加可靠性。

IBM Cloud 自動化使用 Terraform 來驅動 Infrastructure-as-a-service 自動化,以及 Ansible 來驅動軟體組態。

瞭解成本至關重要 - 您可以在部署前估算成本,並在更新或自訂架構時追蹤支出變化。 請記住 - 在您部署之前,您從未被收取任何費用。

安全性和組織政策對於企業部署至關重要。 這就是為什麼可部署架構要經過審核和預先掃描,以符合一系列的政策要求,這可以幫助您的組織保持安全。 標準化的部署也簡化了稽核證據的收集。

可部署的架構提供如何取得支援的資訊,以及部署架構所需的權限。

最後,您可以與組織中的其他帳戶共用私人目錄中的可部署架構。 此外,目錄可以限制使用者使用可部署架構的特定版本。 這可以確保每個人的一致性和標準化。

架構模式是由特定領域的專家所建立。 跨領域架構是透過將架構連結在一起來建立更複雜的可部署架構。

您可以建立自己的可部署架構,也可以自訂 IBM Cloud 現成的架構,從 IBM Cloud 目錄或社群註冊表節省時間。

一個可部署的架構是由一個作為程式碼的清單所定義的,該清單會描述架構、程式碼的位置、權限,以及成本、支援、說明、圖示和其他細節。 它使用 JSON 定義,位於 repo 的根目錄。

您可以在主控台中輸入或修改可部署的架構,並匯出艙單。 您可以從發行版的 git 快照首次建立可部署的架構。 使用發行版.tgz URL 作為您的來源。

然後,編輯可部署架構的目錄項目詳細資料,例如圖示和名稱。 您可以新增相依性,以及任何與您自己的架構配合良好,但不是必需的可選架構。

您也可以管理可部署架構的合規聲明。 在您發佈可部署架構之前,當您驗證目錄中的可部署架構時,就會驗證這些聲明。

最後,在您上線一個版本的可部署架構後,您可以匯出目錄艙單檔案,並將其儲存至您的原始碼儲存空間。 使用主控台通常是上線全新可部署架構的最佳方法,因為您可以輕鬆匯出目錄清單,並在需要時稍後編輯。 這樣,您就不需要從頭開始建立目錄清單檔案。

在 IBM Cloud 目錄中,開啟可部署的架構索引標籤,尋找 IBM 支援的架構。

我們社群註冊表中的可部署架構可能會經常變更或在短時間內停用,但它們仍是您使用和自訂的好起點。

考慮 VPC landing zone 可部署架構,該架構可在 IBM Cloud 目錄中找到。 這是一個普遍有用的可部署架構,因為如果您打算在雲端執行工作負載,就需要 VPC。

VPC landing zone 的設計符合 profile。IBM Cloud Framework for Financial Services 它將管理工作負載與工作者工作負載分開,使用金鑰管理加密雲端物件儲存,並使用私有端點進行通訊。 您可以原樣使用,也可以自訂以滿足您的登陸區需求。

對於更複雜的可部署架構,請考慮雲端基礎的安全性與可觀察性。 這個可部署的架構是由 IBM Cloud 目錄中的多個架構連結而成。 有了它,您可以充分利用 IBM Cloud 的全方位安全服務。 它是可自訂的,因此您可以選擇只包含您需要的服務,而不包含您不需要的服務。

既然您知道在哪裡可以找到可部署的架構,那麼您該如何在各帳戶中部署和維護這些架構? 您使用 IBM Cloud 專案。

在專案中,您設定可部署架構的輸入變數。 您可以監控成本、資源漂移、合規性掃描,並在目錄中提供可部署架構的最新版本時將其升級至最新版本。 專案通常位於集線器帳戶中,並在各個分支帳戶(也稱為目標帳戶)中部署資源。

查看我們的說明文件,瞭解在 IBM Cloud 中執行安全工作負載的更多資訊。 或者,深入探索 IBM Cloud 目錄,發掘哪些可部署架構能為您的業務帶來效益。

設計原則

範圍、可組合性及可使用性是您在建立可部署架構時需要考量的三種主要設計原則。

規劃及研究階段 中,您應該評估供應項目的現行生態系統,並評估商業使用案例及需求。 使用 架構設計架構架構設計架構 來規劃及設計架構所需的元件。

範圍

明確界定可部署架構的範圍至關重要,因為它應該足夠全面,包括所有必要資源,但足夠集中,以避免不必要的複雜性。

最佳實踐是將通常作為單元共同部署、需要相似存取權限且具有相同生命週期的基礎架構資源納入其中。 例如,讓我們考量 VPC landing zone 可部署架構。 此可部署架構具有明確定義的範圍,其中包括下列基礎架構資源:

VPC登陸區DA資源
資源 說明
VPC 建立安全的 VPC 拓蹼
網路基礎架構 包括子網路、公用閘道、ACL、Transit Gateway 及安全群組
邊緣網路 隔離公用網際網路的資料流量
監視及記載 整合流程日誌以觀察及審核 VPC 資料流量

這些資源通常作為一個整體部署,需要類似的網路管理權限,並具有相同的生命週期,這意味著它們:

  • 會一起建立,例如當佈建新的 VPC 及其相關聯的子網路、公用閘道和安全群組時。
  • 一起更新,例如當對 VPC 的網路配置進行變更時,需要更新子網路、公用閘道及安全群組。
  • 一起刪除,例如當 VPC 解除任務且移除其所有相關聯資源 (包括子網路、公用閘道及安全群組) 時。

可組合

可部署架構的一個基本原則是可組合性,它可以透過將多個可部署架構堆疊在一起來創建更廣泛的可部署架構。 此模組化方法容許自動化資源的最大彈性及重複使用性。

為了達到可組合性,應該將可部署的架構設計成:

  • 將透過輸出值顯示的資訊量最大化,但讓輸出類型保持簡單。 此實務可讓可部署架構自動化在各種實務範例中重複使用,並使它成為各種自動化解決方案的多用途建置區塊。

  • 容許對現有已部署資源的選用參照,例如資源群組、IBM® Key Protect for IBM Cloud® 或 Hyper Protect Crypto Services 實例,以及 IBM Cloud Secrets Manager 實例等。 然後,使用者可以配置現有實例或部署至現有資源群組,以增加自動化的通用性。 Secrets Manager 可部署架構 是此原則在實際運作中的絕佳範例。 透過容許使用者重複使用現有的 Secrets Manager 實例、資源群組及 KMS 加密金鑰,此自動化提供高度彈性及適應性。 例如,您可以:

    • 透過傳遞現有實例的 ID 來配置現有 Secrets Manager 實例,並在現有實例中建立密鑰群組。
    • 與現有金鑰管理系統 (例如 Key Protect 或 Hyper Protect Crypto Services) 整合。
    • 部署在現有資源群組中,或建立具有可自訂命名慣例的新資源群組。

或者,此可部署架構也容許從頭開始建立新的 Secrets Manager 實例、新的資源群組及其他資源,以提供獨立式解決方案。

透過採用可組合性,可部署架構可透過與其他可部署架構堆疊,輕鬆整合為更複雜的解決方案架構。 例如,Retrieval Augmented Generation Pattern 展示了如何結合多種可部署架構 (包括 Secrets Manager 可部署架構) 來建立複雜的解決方案。 可部署的架構在設計時已考慮到可組合性,為這些複雜的解決方案奠定了基礎。

當可部署架構堆疊在一起時,每個成員可部署架構會維持其獨立的組態狀態,允許個別部署、更新或取消部署。 此模組化方法可讓成本、合規性、支援及品質保證從包含的可部署架構中衍生出來,而整體解決方案則保持其獨特的版本描述及參考架構。 如需詳細資訊,請前往 堆疊可部署架構的意義?

可消費性

設計可部署的架構時應謹記可使用性,讓使用者易於瞭解及部署。 為了達到此目的,可部署架構應該提供綜合性文件,其中包括下列各項:

必要條件
部署所需的軟體相依關係及基礎架構需求。
詳細輸入變數及輸出值說明
包括目的、資料類型及預設值。
必要的最小許可權
執行可部署架構自動化的必要許可權。
圖表和架構對映
視覺化呈現可部署架構的元件和關係。
簡化的配置
易於部署及管理。
所需資源減少
將可部署架構最佳化,以將硬體和資源需求降至最低,例如降低 CPU 和記憶體需求,使其更經濟且更有效率。
簡化部署
更快速且更容易開始使用。

確保可部署架構易於使用的另一個資料類型是提供多種變異,包括快速入門變異。 應該提供可部署架構的快速入門版本,這在執行時更便宜且更快速。 例如,VPC landing zone 上 Red Hat OpenShift Container Platform 的 QuickStart 變異 可部署架構會在單一區域中建立完全可自訂的 Virtual Private Cloud (VPC) 環境,並在安全 VPC 中提供單一 Red Hat OpenShift 叢集來處理工作負載。 此快速入門變異是針對示範及開發目的而設計,每月執行的成本低於 400 美元。

相反地,Red Hat OpenShift Container Platform on VPC landing zone 可部署架構的標準版本基於 IBM Cloud Framework for Financial Services 參照架構,會在 Virtual Private Cloud (VPC) 網路上建立安全且符合標準的 Red Hat OpenShift Container Platform 工作量叢集,但每月執行成本超過 $4,000 美元。 此外,它還包含進階功能,例如管理 VPC 服務、工作負載 VPC 服務、隔離管理 VPC 和工作負載 VPC,以及進階網路安全架構決策。

輸入變數

使用下列最佳作法,讓使用者更容易配置可部署架構的輸入變數:

僅公開一般修改的引數
僅暴露多數使用者需要變更的變數,避免採用具有大量輸入變數的可部署架構,以免使用者不堪負荷。 對於進階使用者,請考量提供單一 JSON 輸入欄位,以進行進一步自訂作業。 例如,VPC 登陸區域可部署架構會顯示名為 override_json_string 的單一欄位,該欄位為已部署拓蹼上的進階使用者提供完全控制。 如需相關資訊,請參閱 VPC 登入區域部署手冊
對現有資源使用清除及敘述性命名
在參照現有資源時,請使用明確指出它們所參照的名稱 (例如 existing_cluster_name 而非 cluster_name),以避免語義不明確。
偏好名稱而非 ID
在參照現有資源時,請使用名稱而非 ID,以取得更好的使用者可使用性。
避免字首語
不使用字首語,而是使用完整產品名稱,讓不熟悉產品或服務的人員更容易瞭解他們所參照的內容。 例如,secrets_manager 取代 sm,或 key_management 取代 kms
使用進階鍵入功能
啟用 IBM Cloud 專案服務以呈現變數的適當輸入小組件,這可讓使用者更容易配置值。 例如:
  • VPC 區域: IBM Cloud上所有可用 VPC 區域的下拉清單。
  • VPC SSH 金鑰: SSH 金鑰管理的安全輸入欄位。
  • 叢集: IBM Cloud上可用叢集的下拉清單。

如需相關資訊,請參閱 本端編輯型錄資訊清單值

遵循這些準則,可讓可部署架構更容易使用,讓使用者能夠快速瞭解並部署它。

品質

為了確保可部署架構可靠且一致,必須實作並自動化品質檢查。 這些檢查應該涵蓋可部署架構的各個層面,包括程式碼品質、配置驗證、測試及持續整合。

程式碼品質

利用鏈結和程式碼格式化。 施行一致的編碼樣式及格式化,讓程式碼易於讀取及維護。 偵測程式碼中的錯誤和警告,以防止部署期間發生問題。 除 Terraform 程式碼外,還可考慮在可部署架構中納入與所有資源相關的任何工具,例如 Bash 腳本、Python 腳本、YAML 和 JSON 檔案,以及 Golang。

範例:

  • terraform_fmt,以格式化 Terraform 程式碼。
  • go-fmt 以格式化 Go 程式碼。
  • black,以格式化 Python 程式碼。
  • isort 以排序 Python 匯入項目。
  • flake8,以檢查 Python 程式碼是否有錯誤和警告。
  • shellcheck,以檢查 Shell Script 是否有錯誤和警告。
  • golangci-lint,以檢查 Go 程式碼是否有錯誤及警告。

配置驗證

請使用靜態驗證來檢查可部署架構的語法和配置,以確保它正確且一致。 請驗證可部署架構的配置,以防止在部署期間發生錯誤。 同樣地,請考慮不只是 Terraform 程式碼,並納入與可部署架構中所有資源相關的任何工具,例如 Bash 腳本、Python 腳本、YAML 與 JSON 檔案,以及 Golang。

範例:

  • terraform_validate,以驗證 Terraform 配置。
  • checkov,以檢查 Terraform 程式碼中是否有安全和相符性問題。
  • tflint,以檢查是否有錯誤和警告。
  • detect-secrets,以偵測程式碼中的密鑰。
  • hadolint,以檢查 Docker 檔案是否有錯誤和警告。
  • helmlint,以檢查 Helm 圖表是否有錯誤和警告。

測試

在測試基礎架構程式碼時,沒有單純的單元測試,就像您在應用程式碼中可能想到的那樣。 相反地,測試策略包括將基礎架構部署至實際環境、驗證它是否運作,然後取消部署它。

自動化驗證測試套組

建議具有基本自動化測試套組,其中涵蓋下列基本概念:

部署測試
驗證基礎架構程式碼可以順利部署至實際環境。 建立所有必要的資源,例如虛擬機器、資料庫及網路。 這些測試有助於確保基礎架構程式碼是正確的,且可以順利套用至實際環境。 建議在這些測試中改變可部署架構的輸入參數,以確保廣泛的涵蓋面符合一般用法。
毀損測試
驗證基礎架構程式碼可以順利取消部署或毀損,並移除所有已建立的資源。 這些測試可確保可以安全地從實際環境中移除基礎架構程式碼,而不會留下孤立資源或造成非預期的結果。
等冪檢定
驗證基礎架構程式碼可以多次重新套用,而不會造成非預期的變更或錯誤。 換句話說,不論套用多少次,程式碼都應該產生相同的結果。 這些測試在 IBM Cloud等環境中很重要,平台會定期檢查變更,以偵測已部署基礎架構與事實來源 (即自動化程式碼) 之間的漂移。 等冪測試有助於確保基礎架構程式碼可以處理重複的部署或更新,而不會造成問題。 這些測試也有助於確保漂移偵測功能可以精確識別及補救基礎架構預期狀態與實際狀態之間的任何差異。 如需相關資訊,請參閱 管理漂移
版本升級測試
驗證基礎架構程式碼可以順利從一個版本升級至另一個版本,而不會造成錯誤或非預期的變更。 這些測試可確保基礎架構程式碼可以安全升級,而不會中斷或破壞現有資源或造成非預期的結果。

進階測試案例

進階測試案例包括下列實務範例:

在相同帳戶中多次部署可部署架構
驗證基礎架構程式碼可以處理相同帳戶中的多個部署,而不會導致資源名稱衝突或其他問題。
使用授信設定檔部署可部署架構
請驗證可以使用 Cloud Identity and Access Management 授信設定檔來部署基礎架構程式碼。 如需相關資訊,請參閱 定義鑑別方法

透過將這些測試包含在自動化測試套組中,您可以確保基礎架構程式碼可靠、健全且可安全部署至正式作業。

連續整合

為了確保可部署架構的可靠性、一致性和可維護性,建議採用左移方法,在開發週期早期整合品質檢查和測試。 這種方法有助於及早捕捉錯誤和問題報告,減少下游問題的可能性,並改善整體品質。

在此方法中,建議使用下列品質檢查:

用戶端品質控制
在確定程式碼之前,應該使用用戶端 Git 確定連結鉤 在開發人員機器上執行檢查。 這包括檢查編碼標準、語法錯誤及機密資料。 預先確定 之類的工具可用來自動化此處理程序。
CI 實務
應遵循持續整合 (CI) 的最佳作法。 任何軟體工程產品的一般實務適用於可部署架構開發,包括:
  • 使用小型聚焦拉取要求 (PR),以促進及時檢閱並減少合併衝突。
  • 定期將程式碼變更整合至主要分支,以防止長壽命特性分支,並減少合併複雜性。
  • 實作自動化測試和程式碼檢閱,以確保程式碼品質和一致性。
  • 持續驗證可部署架構的配置和語法,以確保正確性和一致性。
配置項目管線
應該設定 CI 管線以自動化這些實務,確保可部署架構中的每一個程式碼變更都有系統地測試及驗證。 此管線可確保可部署架構正確且一致地運作,且會提早捕捉任何錯誤或問題報告。

工具和資源

提供一組綜合性的工具和資源,以協助建立高品質可部署架構。 經過策劃的 Terraform 模組是一個關鍵部分,有超過 60 個以上可重複使用、安全且已驗證的模組,涵蓋廣泛的基礎架構需求。 這些模組在 GitHub 上可用,透過開放程式碼要素項模型支援並保持最新,並由 IBM Cloud 開發組織的要素項提供支援。

除了策劃的 Terraform 模組之外,還提供最佳作法和範本,以協助進行可部署架構和模組編寫。 這包括文件、符合編寫最佳作法的 GitHub 可部署架構儲存庫範本,以及同時適用於 Terraform 模組和 Terraform 型可部署架構的 模組編寫準則。 這些資源可用來快速開始使用新的可部署架構。

也提供自動化測試架構,並以 Terratest 程式庫為基礎,以 Go 撰寫測試。 該框架涵蓋冪等性測試、升級測試和GitHub,並使用 https://github.com/terraform-ibm-modules/ibmcloud-terratest-wrapper庫中的測試輔助函數。 如需相關資訊,請參閱 測試文件

為了支援 CI 管線開發,提供了一系列工具和資源,包括:

  • 可重複使用的 GitHub 動作
  • 自動產生文件。
  • 自動上線至 IBM Cloud。
  • 使用自訂更新來自動化相依關係更新。
  • 本端開發設定工具和預先確定連結鉤配置,如需相關資訊,請參閱我們的 本端開發設定文件

這些工具和資源專門設計用來加速並協助建立高品質可部署架構。

下一步

既然您瞭解建置可部署架構的最佳作法,在開發自動化程式碼之前,您可以使用工具及資源,並檢閱下列 IBM Cloud 文件。 這有助於確保您徹底規劃並設計要在 IBM Cloud中共用的解決方案: