IaC 管理新思路:Walrus 和 Terraform 的差異化探索

Seal数澈發表於2024-04-12

Terraform 的社群版本及商業化版本,讓其成為在基礎設施即程式碼(IaC)領域中可靠的部署和管理平臺。儘管目前 Terraform Cloud/Enterprise 仍然是最為廣泛採用的 IaC 管理解決方案,但它存在一定的侷限性。

隨著使用者需求和偏好的變化,以及鑑於成本考慮、靈活性需求以及簡化複雜性的緊迫需要,企業開始尋找替代 Terraform Cloud/Enterprise 的解決方案。Walrus 作為100%開源的基於 IaC 工具的應用管理平臺,能有效地應對這些限制。

本文將根據以下因素概述這兩種工具之間的主要差異:

  • 抽象和靈活性
  • 環境管理
  • 生態系統和可擴充套件性
  • 許可證

Walrus 是什麼?

Walrus 是一款基於 IaC 理念的開源應用平臺,旨在簡化雲原生應用的管理和部署。它支援 Terraform、OpenTofu 等多種 IaC 工具,並透過創新的資源定義(Resource Definition)抽象層,將基礎設施管理提升到新的高度。

Resource Definition:統一抽象,簡化管理

資源定義是 Walrus 的核心概念,它整合了 IaC 模板、匹配規則、預設引數和 UI Schema 等元素。該抽象層由 DevOps 團隊建立,透過資源定義,DevOps 團隊可以預先定義好基礎設施配置,並確保其符合成本、運維和安全要求。開發人員則可以透過簡單的操作,自助式地進行應用部署,無需深入瞭解底層 IaC 工具或基礎設施細節。

賦能開發人員,提升部署效率

Walrus 將應用服務和資源依賴關係進行編排,併為開發人員提供自助服務能力,使他們能夠專注於應用程式本身,而無需過多關注基礎設施配置。他們可以輕鬆地將應用程式部署到多個基礎設施或環境中,例如開發、測試和生產環境,從而加速開發流程並提高部署效率。

簡化環境和資源管理,提升視覺化

Walrus 提供了清晰的依賴關係圖,使使用者能夠一目瞭然地瞭解應用服務和基礎設施資源之間的關係。此外,Walrus將所有資源操作集中在一個統一的檢視中,消除了在不同視窗之間切換的需要,從而提升了整體使用體驗,並使複雜資源管理任務變得更加輕鬆簡便。

瞭解 Terraform Cloud/Enterprise

在當今雲端計算時代,基礎設施管理的複雜性日益增長。Terraform 作為基礎設施即程式碼領域的領導者,其生態系統中的 Terraform Cloud 和 Terraform Enterprise 為團隊協作和安全管理提供了強大的支援。

Terraform Cloud 是一個託管平臺,旨在簡化 Terraform 程式碼的管理並最佳化基礎設施管理流程。它提供一系列功能,助力團隊更高效、安全地工作:

  • 版本控制和協作: 整合的版本控制系統,方便跟蹤程式碼更改,促進團隊成員之間的協作,確保基礎設施配置的一致性。
  • 狀態管理: 安全儲存和管理 Terraform 狀態檔案,避免本地儲存帶來的安全風險和資料丟失的可能性。
  • 工作空間: 您可以建立多個工作空間,用於管理不同的環境和專案,實現資源隔離和許可權控制。

Terraform Enterprise 是 Terraform Cloud 的私有化部署版本,專為滿足企業級需求而設計。它提供了 Terraform Cloud 的所有功能,並新增了更多企業級特性,例如:

  • 私有例項: 將 Terraform 平臺部署在您自己的基礎設施上,實現資料安全和自主可控,滿足企業對資料安全性和合規性的要求。
  • 審計日誌: 詳細記錄所有操作,方便進行審計和追蹤。
  • 單點登入 (SSO): 支援 SAML 單點登入,簡化使用者管理和訪問控制。

Walrus 和 Terraform Enterprise 的關鍵區別

抽象和靈活性

Walrus 作為一個開源的基礎設施管理平臺,它採用了獨特的雙層抽象架構,包括 IaC 模板(例如 Terraform 模組)和資源定義(Resource Definition)。這一設計旨在簡化基礎設施管理流程,併為運維和開發團隊提供更靈活的控制,從而提高整體效率和安全性。

IaC 模板允許運維人員建立可複用的基礎設施配置,避免重複工作。開發人員則可以透過自助服務的方式進行資源配置和部署,無需深入瞭解底層技術細節,專注於應用程式開發。

資源定義功能賦予運維人員制定和執行企業策略的能力。他們可以定義雲資源的使用規則、配置標準和訪問許可權,確保雲資源的使用符合安全合規要求。同時,Walrus 遵循 DRY (Don't Repeat Yourself) 原則,保證跨平臺和雲環境的一致性,避免程式碼冗餘。

相較於 Terraform Cloud/Enterprise 單一的 Terraform 模組抽象層,Walrus 的雙層抽象設計在簡化操作的同時提供了更高的靈活性。開發人員和運維人員可以根據自身需求選擇合適的抽象級別,從而更好地管理基礎設施。稍後我們將釋出一篇部落格文章,詳細介紹 Walrus 架構的工作原理以及它如何幫助企業實現更高效、更安全的基礎設施管理。敬請期待!

除了 IaC 模板和資源定義等核心功能,Walrus 還提供了 UI Schema 和 HCL Validation 功能,旨在提升配置體驗,並確保配置的準確性。透過自定義 UI Schema,Walrus 可以實現使用者介面的個性化,並降低配置的複雜性,使操作更加直觀易懂。Walrus 簡化了配置流程,並降低了出錯的可能性,為使用者提供了更加友好和可靠的基礎設施管理體驗。

環境管理

Walrus 和 Terraform Cloud/Enterprise 都提供了用於管理基礎設施的工作空間(Workspace)概念,但兩者在實現方式和功能上存在一些差異。Terraform Cloud/Enterprise 的 Workspace 主要圍繞單個 Terraform 模組進行組織,適用於管理複雜度沒那麼高的基礎設施。

Walrus 的環境(Environment)則相對較靈活,允許使用者在一個環境中管理多個獨立的 Terraform 模組。這種設計更適合管理複雜的基礎設施,為使用者提供類似微服務的管理模式,將基礎設施分解為更小的、可獨立管理的單元。Walrus 的環境概念為使用者提供了更高的靈活性和可擴充套件性,更適合管理複雜的基礎設施環境。

生態系統和可擴充套件性

Walrus 和 Terraform Cloud/Enterprise 在生態系統方面呈現出不同的特點,這會影響到使用者在工具選擇和工作流程整合方面的靈活性。

Walrus 秉持開放的理念,支援多種 IaC 工具,包括 Terraform 和 OpenTofu,方便使用者根據自身需求選擇合適的工具。此外,Walrus 還可與 ArgoCD、FluxCD 等多種流行的 CD 工具無縫整合,為使用者實施 GitOps 提供了便利。

值得一提的是,Walrus 官方支援 Argo Workflow 作為工作流引擎,使其能夠輕鬆融入包括 Kubernetes 生態系統在內的各種環境。這種開放性和相容性使得 Walrus 能夠更好地適應不同的技術棧和工作流程,併為使用者提供更廣泛的工具選擇。

Terraform Cloud/Enterprise 的生態系統主要集中在 HashiCorp 產品體系內,其 GitOps 解決方案侷限於 HashiCorp 的專有工具。雖然 HashiCorp 產品具有良好的效能和功能,但這種封閉的生態系統可能會限制使用者在工具選擇和工作流程整合方面的靈活性。

Walrus 和 Terraform Cloud/Enterprise 都為基礎設施管理提供了強大的功能,但它們在生態系統方面存在較為明顯差異。Walrus 更加開放和相容,更適合需要與多種工具和平臺整合的使用者

許可證

Walrus 和 Terraform 在開源許可方面採用了不同的策略,這會影響到使用者在程式碼使用、修改和分發方面的自由度。

Walrus 採用 Apache 2.0 許可證,這是一個被廣泛認可的開源許可證,允許使用者自由地使用、修改和分發 Walrus 程式碼。這為使用者提供了更大的靈活性和自主性,並鼓勵社群參與和程式碼貢獻。

Terraform 社群版曾採用 MPL 2.0 許可證,但在 2022 年更改為 BSL (Business Source License) 許可證。BSL 許可證是一種混合型許可證,在一定期限內限制程式碼的商業使用,之後會轉換為開源許可證。Terraform Enterprise/Cloud 則為專有軟體,其許可證條款和限制取決於具體的訂閱方案。

使用者在選擇基礎設施管理平臺時,需要考慮自身需求和對開源許可的偏好,權衡不同平臺的優缺點,並選擇最適合自己的解決方案。

總結

Walrus 不僅僅是一個基礎設施管理平臺,它更致力於透過平臺工程方法論簡化開發和運維的複雜性。未來,Walrus 將支援 Kubernetes 架構,並利用 Kubernetes CRD 作為統一的抽象層,實現跨基礎設施或環境的應用程式部署。對於雲原生工程師來說,這將有助於降低認知負荷,提高工作效率。

Walrus 100%開源,歡迎試用!如果您喜歡這個專案,歡迎在 Github 上為我們點亮 🌟

Walrus GitHub 主頁:
https://github.com/seal-io/walrus
Walrus 技術文件:
https://seal-io.github.io/docs/zh/

相關文章