Git 与 GitOps
文章目录
伴随着 GitOps 的盛行, Git 本身的影响力也在逐渐增大。从最开始只是为了管理 linux kernel, 到支撑起了 Github 这个最大的软件社区,Git 本身的应用范畴早已超出了 vcs 本身,我们还用它来存储配置文件,文档,制作电子书,维护 blog (由 Github 等平台展示)等等。在 GitOps 的范畴内,它更是成为了 the single source of truth
。
但 Git 最初的设计目标只是针对于 linux source code, 大量的小文件,而伴随着 git 应用范围的增多,明个明显的问题便显现出来
- 大文件的管理:大文件通常都是难以 diff 的二进制文件,跟 git 本身的设计理念完全背道而驰
- 大仓库的管理: 像 Google 的 Single Repo 以及微软的 windows 等巨型仓库,在使用 git 时都都会遇到非常多的性能问题。
对于前者来讲,目前的主流的解决方案都是 LFS
, 主流的托管平台都支持。但在 GitOps 的大前提下,这个问题仍然算是未解决,因为在企业场景下又多了一个 Git 大文件管理的 dashboard
, 而 GitOps 得了理念是为了减少 dashboard, 将所有的一切都统一起来。 一个可能的选项是用Cloud Native Artifact Registries的理念,用distribution 作为 LFS Server。
大仓库的管理微软的贡献比较显著些。像 Windows 这样的巨型项目,他们必须提前做很多改善才能把 Windows的代码放到一个仓库里。最终的实现原理跟 Google 类似: 与普通的 Git 仓库不同,他们使用一个 virtual filesystem 来作为底层存储,当用户使用 git 时,只有那些被访问的文件才会被实时从 Server pull 下来。这种方式带来的一个附带好处是也解决了大文件的管理问题。
期待 GitOps + CNAR + DevOps 完全成熟落地的那一天。
参考链接:
文章作者 涯余
上次更新 2019-09-12