系列文章
前言
最近在使用 Terraform Cloud 來置備 OCI 的 Always Free Tier, 發現它非常好用,相比 Terraform OSS, 用起來省心多了。
也藉此總結學習下:Terraform Cloud 比 Terraform OSS 有哪些增強,這些增強功能面向哪些客戶,解決了哪些痛點?
可以作為我們基於 Terraform 開發自己的 IaC 雲平臺的經驗。
Terraform OSS 的功能
Terraform OSS 的功能已經在 之前的文章 裡介紹過了。
這裡再重複一下:
- IaC
- 工作空間
- 變數
- 執行-計劃和應用
- 資源圖
- 供應商
- 模組
- 登錄檔
- 宣告式程式設計
- 雲無關
- 表達能力強且高度可擴充套件
- 協同工作(需要進一步配置)
- 生命週期管理
- 測試
- HCL
- 安全和金鑰管理(需要進一步配置)
Terraform Cloud 簡介
Terraform Cloud 是 HashiCorp 基於 SaaS 的 Terraform 版本。
Terraform Cloud, 理所當然用於 Terraform OSS 的以上所有功能。
Terraform Cloud vs. Terraform OSS
Terraform Cloud 比 Terraform OSS 有哪些增強?具體如下:
IaC 功能增強
- Remote State: Terraform Cloud 自帶開箱即用的 Backend, 方便管理 remote state, 確保部署一致性、共同目標和單一事實來源
- VCS 連線: Terraform Cloud 打通了 Github 等 VCS, 可以無縫使用 VCS + Terraform. 使多個團隊成員能夠在專案中處理單獨的程式碼流,並透過簡單的回滾路徑以結構化的方式將變更合併回核心專案中。
- 工作空間管理: Terraform Cloud 提供了更為豐富的工作空間管理功能和 UI
- 安全和金鑰管理: Terraform Cloud 基於 Terraform Vault 提供了開箱即用的安全變數(安全和金鑰)的儲存。
- 遠端執行和狀態: Terraform Cloud 支援本地執行和遠端執行,遠端執行無需自己安裝 Terraform, 直接使用 Terraform Cloud 提供的 Terraform. 意味著所有部署都是從一個集中位置完成的
- 私有模組登錄檔: 私有模組儲存庫允許跨多個工作空間和專案訪問模組程式碼的單個真實源,從而降低差異的可能性,從而提高程式碼穩定性。
△ Remote State
△ VCS(GitHub) 連線
△ 工作空間管理
△ 安全和金鑰管理
△ 遠端執行
△ 執行狀態
△ 私有模組登錄檔
團隊管理功能增強
- 團隊管理: 團隊管理是工作空間管理的一個子功能,藉助此功能,工作空間管理員可以透過根據其公司的組織結構建立團隊來管理雲使用者的訪問級別。這些團隊根據反映編碼職責或運營職責的組織被授予許可權,例如:管理策略,管理工作空間,管理 VCS 設定
- 成本估算: 提供與工作空間中的程式碼部署關聯的成本估算的最佳預估。會明確地顯示本次 Run 會增加/減少多少美元的開銷。
- 策略即程式碼: 透過和 HashiCorp Sentinel 的整合,用於自動化治理、安全和基於合規性的策略配置。Sentinel 是一個可嵌入的策略及程式碼框架。如,您可以定義,如果您要部署到 Dev,則您的任何 EC2 構建例項都不能大於大小 XXX, 如果嘗試構建更大的例項,則執行將失敗。也可用於執行 CIS 基準和其他合規性框架。
- 配置設計器: 基於 GUI 的工作流程,用於選擇、組合、定義變數和建立獨特的工作區。降低開發人員使用心智負擔,開發人員從預定義的 IaC 模組構建配置;按需預配。
△ 團隊管理
△ 成本預估
△ 策略即程式碼
△ 配置設計器
安全/合規/治理功能增強
- 單點登入 (SSO): 整合您的企業身份提供商,為您的團隊成員提供無縫登入過程。目前,Terraform Cloud 支援以下身份提供程式:
- Azure AD
- Okta
- SAML
- 審計日誌: 對於在事件發生後甚至在解決問題時嘗試深入研究時啟用取證調查是絕對必要的。
- 自託管的代理: 允許 Terraform Cloud 業務使用自託管代理有效地檢視私有資料中心。
△ SSO
總結思考?
Q: 如果我們也要基於 Terraform OSS 來做一個企業內部的 IaC 雲服務,我們應該增強哪些功能?
A: 需要從以下幾方面入手:
- 增強 Terraform 的功能和使用體驗
- 基於 S3 提供開箱即用的 Backend 和 Remote State
- 提供和內部程式碼倉庫(如 GitLab) 的無縫對接
- 基於 Terraform Workspace 開發一套友好 UI, 並結合企業實際情況,延伸出入:環境、Project 等概念
- 基於 HashiCorp Vault 提供開箱即用的安全和金鑰管理功能
- 自動建立預配置好 Terraform 的臨時 VM 或 Pod 以在雲服務上開箱即用地執行 Terraform, 而不需使用者在本地執行 Terraform; 同時提供每次 Terraform Apply 後的狀態歷史
- 提供內部私有 Terraform Registry
- 開發完整而豐富的 API 介面,供企業內部其他系統(如 DevOps) 整合使用。
- 豐富團隊管理功能:
- 豐富完善團隊管理功能、設定和 UI
- 引入 FinOps 理念:對接主流公有云費用 API, 在 Plan 階段進行成本估算。
(可選)策略及程式碼
- 安全/合規/治理功能增強
- 整合企業內部單點登入
- 開發審計日誌功能
自託管的代理不需要,因為就在企業內部
???
三人行, 必有我師; 知識共享, 天下為公. 本文由東風微鳴技術部落格 EWhisper.cn 編寫.