云计算 · 2026年11月15日

也发布于 Türkçe

LinkedIn 使用自定义 GitOps 引擎替换 Argo CD,用于 Kubernetes 部署

a close up of a computer with green lights
Tyler / Unsplash

LinkedIn最近发布了一篇文章,透露他们已经用自定义的GitOps引擎替换了Argo CD。这个新系统可以在超过250个Kubernetes集群上部署应用程序,支持超过4,000个服务,并每周管理超过100,000次部署。根据文章,部署基础设施故障从925次降低到63次,尽管部署量增加了3.7倍。检测和解决部署失败的中位时间从16.1分钟降低到2.45分钟。

LinkedIn最初使用一个Argo CD实例来管理每个集群的附加组件。集群可以运行多达5,000个节点。一个中心部署编排器为每个部署创建一个临时pod,Argo CD隐藏在其后。团队列出了七个在大规模上出现的问题。Argo CD没有观察到的generation,因此无法将同步和健康状态链接到特定的部署。LinkedIn创建了一个Lua健康检查,使用跟踪注释来解决这个问题。

LinkedIn的新引擎作为一个库来构建,每个部署运行在其自己的pod中,没有共享的控制器状态。更新使用PUT进行全替换,而不是PATCH。他们在资源版本冲突时使用指数退避重试。三个对象之间的三向差异检测可以检测漂移,真实的漂移会导致部署失败。同一个pod然后监视对象的状态,直到它收敛或超时,API服务器为用户解包错误。从渲染的清单中缺失的对象成为删除候选项,受删除保护,收敛逻辑为LinkedIn的CRD构建。

该引擎是内部的,没有开源发布。Argo CD仍然在LinkedIn中用于集群附加组件和系统服务。团队还发现,维护200多个Argo CD实例使每次升级成为一个多周的项目。