路特斯如何使用 Zadig 實現混合云全球交付
- 多個 Jenkins 環境,配置、插件管理復雜
- 跨集群項目難以同步
- 存在單點故障的隱患
- 腳本分散且存在重復功能,難以復用或更新
- 授權難以管理
方案落地:
確立里程碑
低成本快速接入
- 使用托管項目只需要選擇 K8s 集群和命名空間后創建環境,然后將需要托管的服務勾選添加即可,全程不需要寫任何 YAML ;
- 構建模板則降低了編寫腳本的工作量,同類型的構建只需要選擇模板,然后修改變量即可,并且一個服務的構建只需要初始化一次,多個環境下的同名服務會自動綁定。
經驗傳遞
Zadig 落地涉及到的影響范圍比較大并針對不同的角色編寫了使用手冊。完善的培訓視頻和手冊大幅降低了我們在落地中后期的溝通成本,并且避免了“口口相傳”丟失信息的缺點,讓大家可以基于同樣的認知進行協作。
用戶推廣
現狀
截至目前,已經有 54 個環境,近 300 個服務接入了 Zadig,單日構建數可超過 130+ 次。
亮點功能
托管項目
在方案選型階段, Zadig 的托管接入模式是其脫穎而出的重要因素之一。該項目類型可以實現零侵入快速接入現有 K8s 服務,并且提供了可滿足開發人員日常使用的可視化 K8s 管理功能,為希望從現有 CI/CD 流程切換到 Zadig 的用戶提供了一條低成本遷移路徑。
協作模式
基于 ABAC 權限模型設計的協作模式在推廣 Zadig 的過程中功不可沒。Lotus 管理 Jenkins 權限是通過插件實現的,該插件控制 Job 權限的方式是將用戶和角色平鋪成一張表格,通過勾選的方式控制用戶權限,在用戶數量或 Job 數量比較大時表格會變得異常復雜。之前的解決方案是復用用戶,通過限制用戶數量的方式來控制表格的規模,這樣帶來的缺點是審計不準確,無法追蹤到操作的具體執行人。而 Zadig 的協作模式支持將用戶的權限粒度控制到環境和工作流級別,更貼合企業的安全需求。
模板庫
在我看來,模板功能是 Zadig 進階功能中最強大的,毫不夸張的說,活用模板可以為運維降低 90%以上的事務性工作!在最新版本中(v1.15.0)K8S YAML模板已經可以解析 go template 語法,支持在模板中使用判斷、循環等復雜邏輯,完全足以支持一套模板覆蓋絕大多數場景。目前我們已經可以實現只需維護一套 K8S YAML 模板、一套 DOCKERFILE 模板、一套構建模板便可以滿足 95% 的后端項目需求,運維接入一個服務只需要 2 分鐘。
效能洞察
效能洞察彌補了原始方案在數據統計方面的巨大短板,它不僅支持從全局角度查看所有項目的構建、測試、部署情況(適合高級管理者,如 CTO、運維負責人),還支持從單個項目和時間維度進行分析(適合項目責任人,如TL、業務線運維),為研測環節的效率提升程度提供了數據支撐。