Account 登录
Jump to section

什么是 GitOps?

复制 URL

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 提交,并使用这些事件来触发自动化作业,以更新项目、管理库存和执行部署。

继续阅读

文章

什么是 DevSecOps?

如果您想要充分发挥出 DevOps 的敏捷性和响应力,则必须在应用的整个生命周期内兼顾 IT 安全性。

文章

什么是 CI/CD?

CI/CD 可让持续自动化和持续监控贯穿于应用的整个生命周期(从集成和测试阶段,到交付和部署)。

文章

什么是 DevOps 工程师?

DevOps 工程师身怀独特的技能和专业知识,可以在组织内实现协作、创新和文化转变。  

详细了解 DevOps

产品

Red Hat Open Innovation Labs

在红帽专家的指导下参与高强度、富有针对性的驻留培训。帮助您的团队借助敏捷开发方法和开源工具,快速、高效解决当前业务难题。

Red Hat Consulting

红帽的战略顾问将从大局出发,以战略性视角审视企业发展,分析您当前面临的业务挑战,并提供全面、低成本、高效益的解决方案,帮助您轻松应对各项挑战。

相关资源

分析文章

重新思考数字化转型: 新数据检视 2020 年 文化和流程变革要务

白皮书

通过红帽 Ansible 自动化平台简化 CI/CD 流程

Illustration - mail

获取更多类似的内容

免费订阅我们的 Red Hat Shares 通讯邮件

Red Hat logo LinkedInYouTubeFacebookTwitter

产品

工具

试用、购买或出售

沟通

关于红帽

我们是世界领先的企业开源解决方案供应商,提供包括 Linux、云、容器和 Kubernetes。我们致力于提供经过安全强化的解决方案,从核心数据中心到网络边缘,让企业能够更轻松地跨平台和环境运营。

订阅我们的新闻稿 Red Hat Shares

立即注册

选择语言

© 2022 Red Hat, Inc. 京ICP备09066747号 Red Hat Summit