路特斯如何使用 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、业务线运维),为研测环节的效率提升程度提供了数据支撑。