首页游戏资讯GitOps 为什么成为云原生交付的事实原则?

GitOps 为什么成为云原生交付的事实原则?

misa2 04-14 4次浏览 0条评论

你好,我是王炜。

那节课,我想和你分享一下 GitOps 的汗青和开展过程。

时间回到 2017 年,一家做 Kubernetes 处理计划的草创公司 Weaveworks 初次提出了 GitOps,在阿谁 DevOps 流行的年代,GitOps 绝对是具有创造性的。Weaveworks 对 GitOps 的定义是:操纵云原生东西和云办事停止利用法式摆设和治理的更佳理论,定位是 DevOps 的进一步扩展。

除了给出定义,Weaveworks 还开源了 FluxCD。没错,它就是如今和 ArgoCD 合作的 CNCF 结业项目。它们的感化都是监听 Git 仓库的改变,和集群内的对象停止比照,并主动利用有差别的部门。

不外,需要重视的是,GitOps 其实不等于 FluxCD 或者 ArgoCD,它代表的是一种工程理论的办法。那么,为什么那个办法会成为利用交付的事实原则呢?到底要怎么理解 GitOps,比拟较传统的交付过程,它特殊的优势是什么?

起首,我们需要先理解 GitOps 到底是什么?

GitOps 是什么?

根据 Weaveworks 的总结,我们能够简单地把 GitOps 归纳综合为下面两件事。

更进一步,GitOps 为开发者供给了继续摆设的原则,它以开发者为中心,为开发者供给根底设备的治理和运维办法。它通过利用开发者已经熟悉的东西,例如 Git 来治理 Kubernetes 集群,实现利用交付。

Git 仓库承担了根底架构和利用法式“单一事实来源”的职责,通过 Git 仓库,开发者能够利用他们熟悉的推送、拉取和 Pull Request 流程来对根底架构和利用停止修改。

GitOps 的 4 个原则

不外,任何计划都需要有一个原则,为了成立行业内的 GitOps 原则,由 CNCF 牵头,2020 年 GitOps 工做构成立了,最后的工做组由 Weaveworks、微软、GitHub 和亚马逊等公司构成。做立工做组之后的第一步,他们启动了 OpenGitOps 项目,它目前是 CNCF Sandbox 项目。

此外,GitOps 工做组还造定了 GitOps 的根本原则,它们别离是:

让我们来别离介绍一下那几个根本原则。

原则一:声明式

声明式是实现 GitOps 的核心根底。在 GitOps 中,所有东西必需是声明式的并将 Git 做为单一来源,利用法式能够十分便利地摆设到 Kubernetes 集群中,最重要的是,当呈现平台级毛病时,你的利用能够随时摆设到其他的原则平台上。

原则二:版本化和不成变

有了声明式的搀扶帮助,根底设备和利用的版本能够映射为 Git 源码对应的版本,你能够通过 Git Revert 随时停止回滚操做。更重要的是 Git 仓库不会跟着时间的推移呈现版本改变。

展开全文

原则三:主动拉取

一旦将声明式的形态合并到 Git 仓库中,也就意味着提交会主动利用到集群中。那种摆设体例平安且高效,摆设过程无需人工干涉,因为整个过程是主动化的,且不存在人工运行号令的步调,那就根绝了报酬错误的可能性。当然,为了平安起见,你也能够在摆设过程加进人工审批环节。

原则四:继续协调

“协调”过程现实上依靠于 FluxCD 或者 ArgoCD 那些掌握器,它们会按期主动拉取 Git 仓库并比照它和集群的差别,然后将差别利用到集群中,如许能够确保整个系统可以停止自我修复。

GitOps 的优势

我们晓得,当有新的内容提交到 Git 仓库的时候,GitOps 流水线会主动对根底设备和利用停止修改。但现实上,背后的机造比看起来要复杂得多。GitOps 东西可以主动对根底设备的形态以及 Git 代码仓库的定义停止比照,然后当形态纷歧致的时候提醒并主动同步。

总结来说,GitOps 的优势次要表现在 5 个方面:

优势一:提拔发布效率

GitOps 显著降低了软件发布所需要的时间。Weaveworks 估量,团队天天的发布次数提拔了 30 到 100 倍,开发效率提拔了 2-3 倍。

优势二:优化开发者体验

GitOps 流水线包罗 CI 构建过程,对开发者屏障了 Kubernetes 内部复杂的工做原理,开发人员只需要熟悉 Git 的利用就能够间接掌握 Kubernetes 的更新。此外,GitOps 也对新手工程师十分友好,降低了开发门槛。最初,GitOps 为开发者供给了自助式的发布体验,开发人员能够随时发布和回滚利用。

优势三:更高的不变性和可靠性

因为 Git 是独一可信源,它很随便停止回滚和恢复,所以当系统呈现毛病时,开发者只需要对 Git 仓库停止回滚即可,那将系统恢复时间从几小时缩短到了几分钟。此外,因为每次变动城市产生新的提交,相当于供给了一个审计日记,它详尽笔录了谁在什么时候对系统停止了什么修改,有助于日后逃溯操做笔录。

优势四:原则化和一致性

借助声明式和 Kubernetes,Git 仓库定义的对象都是原则化的,它天然撑持差别的云厂商,当我们需要在其他云厂商重建情况时,只需要修改摆设的目标集群即可。此外,GitOps 流水线对组织的所有团队来说都是一致的,那能够制止差别的小组在实现不异的摆设需求时反复造轮子。

优势五:更强的平安性

因为 GitOps 借助 Git 来存储原则的定义文件,而 Git 的平安性又十分好,所以 GitOps 的存储过程也是平安的。此外,在开发者侧,其实不会间接接触到根底设备的根据,所以,比拟较传统的发布过程,GitOps 具有更高的平安性。

成为交付原则:GtiOp的变化性影响

GitOps 之所以能成为云原生利用交付的原则,除了上述 5 大优势以外,还因为它给现有的 DevOps 利用交付形式带来了浩荡变化。

那里所说的变化性影响次要包罗下面几个方面。

接下来我们详尽介绍一下那几个方面。

将利用交付从推形式改变为了拉形式

在 DevOps 主导的利用交付过程中,CD 东西往往需要在 CI 流水线施行完成之后才会启动。在那个过程中,CD 东西需要具有集群的拜候权限。而在 GitOps 的流程中,当有新的变动提交到 Git 仓库时,集群内的 GitOps 东西会主动比照差别并施行变动。

那为什么利用交付从推形式酿成了拉形式就产生了如斯浩荡的差别呢?

在推形式下,CI 或者 CD 修改集群对象时,它需要在集群外部获得集群的根据,那长短常不平安的做法。此外,推形式下的摆设过程往往是号令式的,例如通过 kubectl apply 来施行变动,因为贫乏“协调”的过程,在变动过程中该行为并非原子性的。

而 GitOps 通过 Operator 在集群内实现了拉的形式,在处理根据平安问题的同时,也加进了“协调”过程,那个过程就像是一个不竭运行的监视器,不竭拉取仓库变动并比照差别,那一切都是在集群内实现的。

出于平安性和原子性考虑,利用交付从推形式正逐步被拉形式代替。

填补了根底设备即代码的不敷

以 Terraform 为代表的根底设备即代码获得了浩荡的胜利,它将以往需要通过号令式的操做酿成了 HCL 声明式的设置装备摆设体例。GitOps 继续了那个思惟,在 GitOps 流程中,不只可以通过声明式的体例定义根底设备,并且还能够定义利用的交付体例,填补了根底设备即代码在定义交付体例时的不敷。

逐步代替了 DevOps 的位置

固然 DevOps 比 GitOps 撑持更普遍的利用法式模子,但跟着容器化和 Kubernetes 手艺的普及,DevOps 的优势已经不那么明显了。

其次,跟着云原生手艺的开展,DevOps 的东西链已经逐步落后于 Kubernetes 的生态系统。GitOps 的东西链相对来说愈加轻量,也更契合云原生快速开展的原则。

固然 DevOps 和 GitOps 并非完全独立的,它们有许多配合的目标。但跟着云原生的普及,GitOps 和 Kubernetes 的组合必定会成为新的工程理论体例。而跟着 GitOps 在开发者群体中的承认度越来越高,DevOps 很可能会淡出开发者的手艺选型。

总结

最初,我来总结一下。那节课,我带你进修了 GitOps 的理论根底,例如什么是 GitOps、GitOps 的 4 个原则及其优势,以及 GitOps 为什么会成为交付原则的几大原因。

从 GitOps 工做组造定的原则我们能够得出结论,最常用的 GitOps 东西 FluxCD 和 ArgoCD 都是基于不异的理念来构建的。至于 GitOps 的优势,通过之前的实战我相信你已经感触感染到了它的强大之处。

此外,GitOps 之所以能成为云原生交付的事实原则,我小我认为除了文中提到的三个原因以外,还有一个十分重要的原因是云原生手艺特殊是容器化和 Kubernetes 手艺逐步成为了行业的原则。在那种情状下,旧的 CI/CD 东西也闪现出了效率低和适配性不敷强的问题,社区迫切需要更好的利用交付体验,那就为 GitOps 的普及供给了更多的可能性。

总的来说,GitOps 吸收了 DevOps 的优势,同时也借鉴了 SRE(网站可靠性)的思惟,给我们带来了倾覆式的利用交付体验。

内容来源:《云原生架构与 GitOps 实战》()

ios14什么时候更新推送
数胎动、记宫缩末于上线了!4 个宝躲小东西,孕期必备不鸡肋 JumpServer开源碉堡机v3.0版本设想重点解读
相关内容
发表评论

游客 回复需填写必要信息