GitOps最佳实践
对于如何在现实环境中应用GitOps有一个常见的误解。开发人员在概念上将基础设施视为代码(IaC)等同于GitOps,或者认为GitOps只能与基于容器的应用程序一起工作–这是不正确的。在本博客中,您将了解什么是GitOps,以及如何将其原则应用到实际的开发和操作中。
什么是Gitops?
GitOps是一个操作模型,它发展了DevOps最佳实践(例如版本控制、协作、遵从性和CI/CD)和IaC,以在基础设施和现代云原生应用程序上执行操作。它通过将云基础设施或应用程序的描述性代码放入Git存储库中进行处理和版本控制,然后通过自动化将这些更改应用到基础设施中来实现这一点。
GitOps的4个基本原则是:
- 系统定义被描述为代码。
- 所需的系统状态和配置在Git中定义和版本化。
- 可以使用拉请求自动应用对配置的更改。
- 控制器确保不存在配置漂移。
GitOps方法有几个优点:
- 真理的唯一来源。所有代码都在Git上,因此基础设施或平台只有一个真理来源。
- 容易回滚和快速恢复。对基础结构的所有更改都受到版本控制和审查,因此在必要时很容易回滚。
- 增强了安全性。所有变化都由自动化拉动和应用;这限制了对基础结构的手动访问,从而提高了安全性。
GitOps实践不仅可以应用于传统的基础设施,如VMs,还可以应用于Kubernetes、网络配置、应用程序定义,甚至可以通过配置文件描述并通过自动化应用于环境的资源。
GitOps方式
以下是GitOps工作方式的概述:
- 声明性描述。作为目标环境中所需状态的基础结构/应用程序的声明性描述是GITOPS的基础。它还将一切都称为代码,包括基础设施、网络和安全。声明性描述、代码或配置作为整个系统的单一真理源存在于集中的Git存储库中。
- 利用Git工作流作为控件。所有操作都是通过对Git中的代码或配置文件进行更改来执行的,因此可以根据Git的版本控制系统对任何更改进行版本控制、审查或合并。
- 配置和部署分离。自动化过程用于将变更应用于目标环境;最佳实践是使用基于请求的部署,由代理/操作员请求并应用更改。
下图说明了在单个环境中应用GitOps的典型高级体系结构:

使用GitOps,应用程序源代码和声明性环境配置存储在支持工作流的Git上。在开发端,开发人员更改应用程序源代码,并在查看pull请求后合并更改。然后,CI管道检测更改并触发构建到工件存储库。在操作端,SRE在声明性配置Repo中对环境配置进行更改,并在审查过程之后合并更改。从体系结构的角度出发,在目标环境中引入了一个新的GitOps代理组件,用于检测环境配置repo中的变化,提取最新的配置,并将这些变化应用到环境中。GitOps代理检测并提取更改,因此操作员不需要访问目标环境,所有凭据都保存在环境中。
总结
了解了GitOps的原则、GitOps提供的优点以及一些通过真实世界的示例说明的最佳实践。GitOps不仅可以应用于基于容器的App,还可以应用于全栈的云资源。通过精心设计的自动化流程,它还可以支持在多个环境中促进更改的开发和操作。
GitOps是在云上使用DevOps的一种改进方法,但它不能解决所有的挑战。也就是说,GitOps应该被用作云DevOps工具箱中的一个有用工具。
- 点赞
- 收藏
- 关注作者
评论(0)