<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>GitOps on 涯余的博客</title><link>https://hangyan.github.io/tags/gitops/</link><description>Recent content in GitOps on 涯余的博客</description><generator>Hugo</generator><language>zh</language><managingEditor>hang.yan@hotmail.com (涯余)</managingEditor><webMaster>hang.yan@hotmail.com (涯余)</webMaster><lastBuildDate>Thu, 12 Sep 2019 13:02:41 +0000</lastBuildDate><atom:link href="https://hangyan.github.io/tags/gitops/index.xml" rel="self" type="application/rss+xml"/><item><title>Git 与 GitOps</title><link>https://hangyan.github.io/post/2019-09-12-git/</link><pubDate>Thu, 12 Sep 2019 13:02:41 +0000</pubDate><author>hang.yan@hotmail.com (涯余)</author><guid>https://hangyan.github.io/post/2019-09-12-git/</guid><description>&lt;p&gt;伴随着 GitOps 的盛行， Git 本身的影响力也在逐渐增大。从最开始只是为了管理 linux kernel, 到支撑起了 Github 这个最大的软件社区，Git 本身的应用范畴早已超出了 vcs 本身，我们还用它来存储配置文件，文档，制作电子书，维护 blog (由 Github 等平台展示)等等。在 GitOps 的范畴内，它更是成为了 &lt;code&gt; the single source of truth&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;但 Git 最初的设计目标只是针对于 linux source code， 大量的小文件，而伴随着 git 应用范围的增多，明个明显的问题便显现出来&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;大文件的管理：大文件通常都是难以 diff 的二进制文件，跟 git 本身的设计理念完全背道而驰&lt;/li&gt;
&lt;li&gt;大仓库的管理: 像 Google 的 Single Repo 以及微软的 windows 等巨型仓库，在使用 git 时都都会遇到非常多的性能问题。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对于前者来讲，目前的主流的解决方案都是 &lt;code&gt;LFS&lt;/code&gt;, 主流的托管平台都支持。但在 GitOps 的大前提下，这个问题仍然算是未解决，因为在企业场景下又多了一个 Git 大文件管理的 &lt;code&gt;dashboard&lt;/code&gt;， 而 GitOps 得了理念是为了减少 dashboard, 将所有的一切都统一起来。 一个可能的选项是用&lt;a href="https://hangyan.github.io/post/2019-08-26-cnar/"&gt;Cloud Native Artifact Registries&lt;/a&gt;的理念，用&lt;a href="https://github.com/docker/distribution"&gt;distribution&lt;/a&gt; 作为 LFS Server。&lt;/p&gt;
&lt;p&gt;大仓库的管理微软的贡献比较显著些。像 Windows 这样的巨型项目，他们必须提前做很多改善才能把 Windows的代码放到一个仓库里。最终的实现原理跟 Google 类似: 与普通的 Git 仓库不同，他们使用一个 &lt;a href="https://vfsforgit.org/"&gt;virtual filesystem&lt;/a&gt; 来作为底层存储，当用户使用 git 时，只有那些被访问的文件才会被实时从 Server pull 下来。这种方式带来的一个附带好处是也解决了大文件的管理问题。&lt;/p&gt;</description></item><item><title>GitOps</title><link>https://hangyan.github.io/post/2019-09-11-gitops/</link><pubDate>Wed, 11 Sep 2019 16:44:26 +0000</pubDate><author>hang.yan@hotmail.com (涯余)</author><guid>https://hangyan.github.io/post/2019-09-11-gitops/</guid><description>&lt;p&gt;Kubernetes 确定了统治地位之后，Service Mesh 和 GitOps 也渐渐火热起来。Service Mesh 领域内 , Istio 已经逐渐占了上风，但 GitOps 扔未有统治性的工具出现，尚处于早期阶段。&lt;/p&gt;
&lt;p&gt;相较而言, Service Mesh 本身技术性更强一些，而 GitOps 涉及的面比较广。对企业来说，会有很多额外因素需要考虑，一方面要考虑旧有系统的兼容性，另一方面要考虑所采用工具的可占有性(是否可以自己部署，维护，开发？)。所以即使现在社区有功能比较完善的 GitOps 工具，也很难被企业所采用。&lt;/p&gt;
&lt;p&gt;但就理念而言， GitOps 本身的前景非常广阔，最直观的改善就是对于研发人员效率的提升以及产品 Deploy 效率的提升。这些优点是以如下特性/流程为基础的:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;让工具去处理杂事&lt;/li&gt;
&lt;li&gt;研发人员使用熟悉的 Git ，专注于产品研发&lt;/li&gt;
&lt;li&gt;使用声明式语法描述环境目标状态，类似于 kubernetes&lt;/li&gt;
&lt;li&gt;使用 Pull Request 进行 Review&lt;/li&gt;
&lt;li&gt;流水线集成 lint /test, 进行较为基本的自动化 check&lt;/li&gt;
&lt;li&gt;PR 通过即可直接上线&lt;/li&gt;
&lt;li&gt;通过线上故障来总结反馈并修正自动化 check&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这个流程的效率非常高，事实上很多企业会在改善自身研发流程的过程中多多少少都实行了类似的模式，但问题就在于很多使用了 ad-hoc 或者 无法产品化的手段。如何解决社区标准化的产品与企业应用场景之间的鸿沟，是 GitOps 亟待解决的问题之一。&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="https://miro.medium.com/max/2020/1*QNwZhE9HAJAWSi__0fnMhw.png"&gt;&lt;/p&gt;</description></item></channel></rss>