什么是GitOps,它是如何工作的?

多年来,软件开发方法论已经从瀑布模型转变为敏捷模型,再到我们今天所说的 DevOps。尽管这些方法主要关注文化方面,但它们都得到了强大的工具和技术的支持,使工作比以前更简单。正如 Docker 和 Kubernetes 通过使组织更容易实现容器化来促进 DevOps 的采用一样,我们现在见证了 GitOps 越来越受欢迎,但 Git 是方法的中心。

为什么选择 GitOps?

如今,许多企业都在采用这种对其基础架构和应用程序进行版本控制的新方法。GitOps 可帮助工程团队更快地响应问题并更快地进行修复,从而实现更敏捷的部署。一个显着的好处是可以通过历史跟踪所有更改,从而使调试和回滚更容易。它还允许您更快地进行更改并通过让其他人知道您在部署过程中所做的事情来改进协作。此外,如果出现问题,部署很容易逆转。

使用 GitOps,如果您不确定或某些东西不起作用,您不必通过复杂的日志来调试问题;您可以简单地转到您的提交历史以清楚地查看所有内容,也可以回滚到以前已知的稳定版本。

GitOps 通过在交付管道的中心利用 Git 降低了一些复杂性。开发人员可以利用他们对 Git 命令的知识,而不是学习一个新的闪亮工具。

它是如何工作的?

由于复杂的发布流程会增加停机时间并影响开发人员的士气,许多组织都在努力发布新功能。部署数百个需要数小时才能在一夜之间部署的功能也无济于事——GitOps 是一种通过自动化所需的繁重工作而不会发生意外来管理此类部署的方法。

GitOps 的中心思想是将您的项目代码保存在 Git 存储库中(应用程序代码、文件、依赖项、清单等),并将存储库的状态与 Kubernetes 集群的状态同步。为了成功,代理会跟踪清单文件的更改或开发人员推送新代码的任何时候。代理可以看到发生了什么变化并将其同步以匹配预期/期望的状态。

GitOps 适用于两种模型——推式和拉式。基于推送的方法是您的 CI/CD 工具将更改推送到生产环境的地方。基于拉取的方法需要在每个集群中安装一个代理。它跟踪更改并在所需配置不匹配时将其拉入。FluxCD、Argo CD和 JenkinsX 是开创 GitOps 空间的三个主要平台。

什么是GitOps,它是如何工作的?_第1张图片

假设您有一个 Git 存储库,其中包含所有应用程序代码和正确配置的 CI 管道。当开发人员将新代码推送到 GitHub 时,它会得到验证,然后 CI 服务器会通过运行指定的测试来检查和构建代码,以查看是否一切正常。接下来,创建容器映像并将其推送到映像注册表。Git 操作员提取/选择新的更改并对其进行扫描以查看当前状态和所需状态是否匹配。如果当前状态和所需状态不匹配,则将其配置为保持所需状态。最后,部署发生。

GitOps 与 DevOps:有什么区别?

DevOps 和 GitOps 都以简化软件部署为核心,但它们的操作方式不同。让我们看看它们如何相互比较。

  • GitOps 符合 DevOps 的自动化原则。它可以帮助公司经常快速地增量部署软件。
  • DevOps 专注于打破 Dev 和 Ops 之间的孤岛,而 GitOps 则专注于智能和自动化的 Ops。
  • DevOps 通过基于推的方法促进 CI/CD 自动化,而 GitOps 主要通过基于拉的方法促进持续交付。
  • DevOps 涉及声明式和命令式两种部署方法,而 GitOps 支持声明式 IaC。
  • GitOps 将注意力集中在 Git 作为突出的工具上。相比之下,DevOps 并不专注于工具。相反,它侧重于文化方面,以促进 Dev 和 Ops 之间的协作。
  • GitOps 往往更加以开发人员为中心,因为它通过涉及 Git 和 Kubernetes 等工具使部署变得容易。相比之下,DevOps 不能用任何特定工具来描述,因为它是整个组织的一种方法。
  • DevOps 的范围不仅限于 CI/CD 和软件交付的正确性。相比之下,GitOps 的主要关注点是持续以正确的方式交付软件。

结论

在查看 GitOps 时,很明显它具有许多优势。它可以帮助开发人员和 DevOps 工程师自动化软件交付过程。它通过将软件从开发转移到测试、登台并最终转移到生产来实现这一点。开发人员已经喜欢这种方法,而且看起来 GitOps 将在云原生领域继续流行。

今天 GitOps 的一个令人担忧的问题是它缺乏成熟的端到端工具/平台,因此组织可以将其用作标准方法。

你可能感兴趣的:(容器,云原生,架构,devops)