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