Cloudflare 平台的重要性與挑戰
Cloudflare 作為一個關鍵系統,不僅服務於外部客戶,也保護和優化我們自己的服務。我們是自身產品的首位客戶,利用這一優勢,我們的專屬團隊能夠提供高精度的反饋,推動產品的不斷改進。在這樣的全球規模中,一次錯誤配置可能迅速影響整個邊緣網絡,導致意想不到的後果,因此,我們需要確保所有內部的 Cloudflare 帳戶配置一致,並將人為錯誤降到最低。
為何採用左移原則
左移原則意指將驗證步驟提前至軟體開發生命周期的早期階段。實際操作中,這意味著將測試、安全審核和政策合規性檢查整合到持續整合與持續部署(CI/CD)管道中。這樣,我們能在合併請求階段捕捉問題,降低問題修正的成本,而不是在部署後才發現問題。
左移原則的四大核心
- 一致性:配置能輕鬆複製並在多個帳戶間重用。
- 可擴展性:能快速將大規模變更應用於多個帳戶。
- 可觀察性:配置狀態、準確性和安全性需可被任何人審核。
- 治理:需在部署前就設置好防護措施,避免事故發生。
基於 IaC 的生產運營模式
為支持左移原則,我們將所有生產帳戶轉為使用基礎設施即程式碼 (IaC) 管理。每次修改都會被追蹤,與使用者、提交和內部工單綁定。分析和洞察仍可通過儀表板獲得,但關鍵的生產變更則完全以程式碼方式進行。
我們的企業 IaC 技術棧
我們選擇了 Terraform,因其成熟的開源生態系統、強大的社群支持以及與政策即程式碼工具的深度整合。此外,使用 Cloudflare Terraform 提供程序讓我們能夠親身體驗並改善客戶的使用體驗。為管理每日約 30 次的合併請求,我們的 CI/CD 管道基於 Atlantis,並與 GitLab 整合。我們也開發了一個名為 tfstate-butler 的自定義 Go 程式,作為安全儲存狀態檔案的中介。
tfstate-butler 作為 Terraform 的 HTTP 後端運行,其主要設計驅動力是安全性,確保每個狀態文件都有獨特的加密密鑰。