登录 / 注册 Account
Jump to section

什么是 GitOps?

Copy URL

Jump to section

GitOps 是一套使用 Git 来管理基础架构和应用配置的实践,而 Git 指的是一个开源版控制系统。GitOps 在运行过程中以 Git 为声明性基础架构和应用的单一事实来源。

GitOps 使用 Git 拉取请求来自动管理基础架构的置备和部署。Git 存储库包含系统的全部状态,因此系统状态的修改痕迹既可查看也可审计。

GitOps 围绕开发者经验而构建,可帮助团队使用与软件开发相同的工具和流程来管理基础架构。除了 Git 以外,GitOps 还支持您按照自己的需求选择工具。

人们认为是 Weaveworks 创造了 GitOps 这一术语。

要开始使用 GitOps,您需要有支持声明式管理的基础架构。正因为如此,GitOps 经常被用作 Kubernetes 云原生应用开发的运维模式,并且可以实现对 Kubernetes 的持续部署。

但使用 Kubernetes 并非 GitOps 的一项要求。GitOps 是一项可应用于其他基础架构和部署流程的技术。   

与 Kubernetes 一样,Ansible 也是一个理想的状态引擎,能够对传统 IT 系统进行声明式建模,因此可用于GitOps。Ansible 用户既可以管理 Kubernetes 上的应用,也可以管理现有 IT 基础设施上的应用,还可以通过 Ansible 模块的一个控制平面同时管理这两种应用。

GitOps 可用于构建开发流程、对应用进行编码、管理配置、置备 Kubernetes 集群以及在 Kubernetes 或容器注册中心进行部署。

我们可以认为 GitOps 是基础架构即代码(IaC) 的一个演变,以 Git 为基础架构配置的版本控制系统。IaC 通常采用声明式方法来管理基础架构,定义系统的期望状态,并跟踪系统的实际状态。

与 IaC 一样,GitOps 也要求您声明式描述系统的期望状态。通过使用声明式工具,您所有的配置文件和源代码都可以在 Git 中进行版本控制。

CI/CD 流程通常由外部事件触发,比如代码被推送到了存储库中。在 GitOps 工作流中,要进行变更,需要通过拉取请求来修改 Git 仓库的状态。 

要使用 GitOps 工作流发布新版本,需要在 Git 中提出拉取请求,这样可以变更集群的声明状态。GitOps 操作器位于 GitOps 流程与编排系统之间,该操作符会接收提交(commit),并从 Git 中拉取新的状态声明。   

一旦这些变化被批准和合并,它们将自动应用于实时基础架构。开发人员可以继续使用他们的标准工作流以及持续集成/持续交付实践。 

同时搭配使用 Kubernetes 与 GitOps 时,操作器通常为 Kubernetes 操作器

操作器会将存储库中的期望状态与所部署基础架构的实际状态进行比较。每当注意到实际状态与存储库中的期望状态存在差异时,操作器便会更新基础架构。操作器还可以监控容器镜像存储库,并以同样的方式进行更新,从而部署新的镜像。

GitOps 中还有一个重要概念——可观察性,指可观察的任何系统状态。GitOps 的可观察性有助于您确保观察到的状态(或实际状态)与理想状态一致。 

使用拉取请求和 Git 之类的版本控制系统让部署过程清晰可见。这样一来,您便可查看和跟踪对系统进行的任何变更,提供审计跟踪,并在出现问题时进行回滚变更。

GitOps 工作流可以提高生产率,加快开发和部署速度,同时提高系统的稳定性和可靠性。

GitOps 和 DevOps 确实在原则和目标上有着相同之处。DevOps 侧重于文化转变,为开发团队和运维团队提供了一种协同工作方式。

GitOps 则为您提供工具和框架来采用 DevOps 实践,如协作、CI/CD 和版本控制,并将其应用于基础架构自动化和应用部署。 

开发人员可以在自己已经熟悉的代码存储库中作业,而运维部门则可以将其他必要组件落实到位。

红帽® OpenShift® 是一个声明式 Kubernetes 平台,管理员可使用 GitOps 原则进行配置和管理。在基于 Kubernetes 的基础架构和应用中作业,可以跨集群和开发周期实现一致性。红帽 OpenShift 整合了对跨内部和公共云资源的应用的管理。

红帽 OpenShift GitOps 是红帽 OpenShift 的一个附加组件,提供了 Argo CD 和其他工具,方便团队通过实现 GitOps 工作流来配置集群和交付应用。 

红帽 Ansible 自动化平台是一个理想的状态引擎,能够对系统进行声明式建模。用 YAML 编写的 Ansible Playbook 描述了系统的理想状态,其通常保留在源代码控制中。不管您的系统当前状态如何,红帽 Ansible 自动化平台都可使其进入理想状态。 

借助 Ansible 自动化平台,GitOps 实践除了可以应用于 Kubernetes,还可以应用于传统 IT 系统,如网络、云和裸机。Ansible 自动化平台中内置了自动化 Webhook,可以为开展 IaC 和 GitOps 实践提供支持。 

Webhook 支持您以原生方式将 Git 存储库与 Ansible 自动化平台连接起来。一旦建立了存储库链接,Ansible 自动化平台就会从 Git 系统中捕获 Git 提交,并使用这些事件来触发自动化作业,以更新项目、管理库存和执行部署。

扩展阅读

文章

什么是 CI/CD?

CI/CD 是一种通过在应用开发阶段引入自动化来频繁向客户交付应用的方法。CI/CD 的核心概念是持续集成、持续交付和持续部署。

文章

什么是基础架构即代码?

基础架构即代码 (IaC) 是通过代码(而非手动流程)来管理和置备基础架构的方法。利用 IaC,我们可以创建包含基础架构规范的配置文件,从而便于编辑和分发配置。 

主题

了解 DevOps

DevOps 是指对企业文化、业务自动化和平台设计等方面进行全方位变革,从而实现迅捷、优质的服务交付,提升企业价值和响应能力。这种方法需要开发团队与运维团队协同工作。

开始使用 GitOps 解决方案

Red Hat OpenShift

企业就绪型 Kubernetes 容器平台,可实现全堆栈自动化运维,从而轻松管理混合云、多云和边缘部署。 

Red Hat Ansible Automation Platform

一个用于在整个企业范围内构建和运维自动化的平台。该平台包含了实现企业级自动化所需的各种工具。

Illustration - mail

Get more content like this

Sign up for our free newsletter, Red Hat Shares.