什么是 GitOps

发布日期 2021年11月2日
更新日期 2026年6月22日
蓝色背景下的抽象图案球体 3D 渲染图
By Ashok Iyengar

GitOps 定义

GitOps 是一种 DevOps 实践,它使用 Git 作为单一可信信息源存储所需配置状态。 

重点是由 Git 存储库驱动的操作自动化。 尽管 Git 出现在名称中,但它并不是唯一可以使用的存储库。Git 提供的接口可以实现自动化操作。 GitOps 最终使用从构建元数据中提取的信息来确定由特定代码更改触发要构建的包:

图 1.GitOps 概述。
图 1.GitOps 概述。

在其核心,GitOps 模型使用控制器模式。这得益于从Kubernetes或 OpenShift 的角度来看的操作符模式,其中操作员是使用自定义资源管理应用程序及其组件的软件扩展。

我们不得不提一下 Argo CD,这是一款可以帮助实现 GitOps 工作流的 GitOps 工具。Argo CD 是一款开源声明式工具,用于应用的持续集成持续部署(CI/CD)。Argo CD 作为 Kubernetes 控制器实现,可持续监控正在运行的应用程序定义和配置,将集群上的当前实时状态与 Git 存储库中定义的所需状态进行比较。

但 GitOps 不是单一的产品、插件或平台。GitOps 工作流帮助团队通过他们在应用程序开发中已经使用的工作流来管理 IT 基础设施。借用 GitLab 博客的说法,GitOps 需要三个核心组件:GitOps = IaC + PR 或 MR + CI/CD

  • IaC基础设施即代码(IaC)是指将所有基础设施配置存储为代码的做法。GitOps 使用 Git 存储库作为基础设施定义的单一可信信息源。Git 跟踪所有代码管理更改。

  • PR 或 MR:GitOps 使用拉取请求(PR)或合并请求(MR)作为所有基础设施更新的变更机制。这是团队可以通过评论和审查进行协作的地方,也是进行正式批准的地方。
  • CI/CD: GitOps 使用 Git 工作流,通过持续整合 (CI) 和持续交付 (CD) 自动更新基础设施。当新代码合并时,CI/CD 管道在环境中实施更改。任何配置偏差,例如手动更改或错误,都会被 GitOps 自动化覆盖,从而使环境收敛到 Git 中定义的所需状态,提供持续操作 (CO):

GitOps 已经存在了几年,但最近由于容器以及围绕容器运行时环境的一致部署和管理的复杂性而受到关注。

GitOps 试图解决什么问题?它通过自动化运营使企业更擅长软件工程。它使应用程序团队能够更频繁地发布并更有效地运行云原生应用

     
    图 2. CI/CD/CO
    图 2. CI/CD/CO

    Red Hat OpenShift 中的 GitOps

    Red Hat OpenShift 操作符简化了复杂工作负载的安装和自动化编排。它们有助于编码人类的操作逻辑,以管理作为 Kubernetes 原生应用运行的服务,使第二天的操作更加轻松。操作符是在集群上的一个 pod 中运行的软件,与 Kubernetes API 服务器交互。OpenShift 操作符本质上是一个自定义控制器,实际上可以是一个特定于应用的控制器。

    IBM DevOps

    什么是 DevOps?

    Andrea Crawford 阐述了什么是开发运维、开发运维的价值,以及开发运维实践和工具如何帮助您完成从应用程序构思到生产的整个软件交付管道。本课程由 IBM 资深思想领袖主导,旨在帮助企业领导者获得所需的知识,以优先考虑能够推动增长的 AI 投资。

    GitOps 操作符

    Red Hat OpenShift 通过提供必要的操作符,使想要使用 GitOps 的开发人员变得容易。一旦部署完毕,就可以在 OpenShift 控制台的“已安装操作符”部分查看。Red Hat OpenShift GitOps 操作符是 ArgoCD 的上游操作符,同时部署的 Red Hat OpenShift Pipelines 操作符是 Tekton 的上游操作符。请参阅图 3:

    图 3. Red Hat OpenShift 中的 GitOps 相关操作符。
    图 3. Red Hat OpenShift 中的 GitOps 相关操作符。

    然后可以使用操作符及相关 API 启动一个或多个 GitOps 管道,这些管道可以从 Git 中拉取期望的配置结果并部署到不同环境中。环境可以是通常的开发、测试和生产环境,也可以跨越地理环境,如企业云、电信网络或边缘计算节点。

    部署资源分为三个领域:基础设施、服务和应用。这些领域使得相关资源的部署分离和管理变得容易:

    • 基础设施 定义所需的命名空间和存储单元。
    • 服务 描述了设置实例所需的各种操作符。
    • 应用 列举了要部署的应用程序。

    边缘计算中的 GitOps。

    云/企业数据中心

    边缘计算正在见证 OpenShift 或 Kubernetes 集群在大多数 IT 中心的普及。它有可能达到每个客户数百到数千次部署的大规模规模。结果是,企业 IT 部门必须管理在本地和/或公有云上运行的多个独立或协作的容器运行时集群。

    确保集群具有相同的期望状态——在多个云上推出和回滚更改——是 GitOps 为基于边缘和物联网的企业提供的一项主要优点。

    网络边缘

    GitOps 范式适用于网络边缘,因为通信服务提供商 (CSP) 面临的主要挑战之一是寻求实现其网络的编排、自动化和管理。虽然 5G 对消费者来说是个福音,但软件定义网络(SDN)、不同带宽的网络切片和更快的部署为电信提供商带来了挑战。

    自动化部署管道是 CSP 可以更快地向客户提供服务的一种方法。拥有中央存储库和声明式方法来配置容器基础设施,意味着新特性和变更请求更快地进入市场。这样的范式将有助于在网络边缘提供虚拟网络功能(VNF)和云原生网络功能(CNF)。网络组件的容器化使得管理这些功能成为可能。最后,由于所有配置活动都记录并存储在 Git 中,跟踪更改的能力对于合规和审计目的至关重要。参考资料中有几篇来自 WeaveWorks 的相关博客:

    图 4:边缘计算中的 GitOps。
    图 4:边缘计算中的 GitOps。

    企业版边缘

    GitOps 允许组织同时部署到多个目标。它允许推出细粒度的部署。在部署应用到成百上千个边缘节点时,这将非常有用,这些边缘节点有不同的形状和外形规格,并使用不同的通信协议——尤其是如果边缘节点是使用Intel NUC或NVIDIA Jetson的小型边缘集群。

    GitOps 框架有助于部署应用程序,并将 Git 存储库作为单一可信信息源。 ITOps 团队寻求边缘节点的自主应用程序部署、管理和运营,这得益于 Red Hat OpenShift 运营者的帮助。

    设备边缘(或远端边缘)

    GitOps 的优点在网络边缘和企业边缘是显而易见的。远端边缘设备面临的挑战有所不同, 因为其中部分设备的存储空间和计算能力不足以承载 GitOps 服务并运行应用程序。

    轻量级 Kubernetes 发行版的发布,如 K3 和 K0,旨在用于 IoT 和边缘用例。能够在边缘设备上部署轻量级 Kubernetes 发行版,使我们能够运行像 Argo CD 之类的 GitOps 工具。然后,设备将能够采用拉取模型,轮询 Git 存储库以获取所需状态,并将其同步到集群的实时状态。

    作者

    Ashok Iyengar

    Executive Cloud Architect

    相关解决方案
    IBM Instana Observability

    利用 AI 和自动化的强大功能,主动解决整个应用程序堆栈中的问题。

    深入了解 IBM Instana Observability
    DevOps 解决方案

    使用开发运维软件和工具,在多种设备和环境中构建、部署和管理云原生应用程序。

    探索 DevOps 解决方案
    云咨询服务

    通过我们的云咨询服务持续实现应用现代化,加速业务敏捷性与增长——支持任意平台部署。

    深入了解我们的云咨询服务
    采取后续步骤

    从 IBM Instana® 的主动问题检测到跨堆栈实时洞察,让云原生应用程序保持高可靠运行。

    1. 了解 IBM Instana
    2. 探索 DevOps 解决方案