GitOps最佳实践

举报
kaliarch 发表于 2022/11/05 14:12:40 2022/11/05
【摘要】 对于如何在现实环境中应用GitOps有一个常见的误解。开发人员在概念上将基础设施视为代码(IaC)等同于GitOps,或者认为GitOps只能与基于容器的应用程序一起工作–这是不正确的。在本博客中,您将了解什么是GitOps,以及如何将其原则应用到实际的开发和操作中。 什么是Gitops?GitOps是一个操作模型,它发展了DevOps最佳实践(例如版本控制、协作、遵从性和CI/CD)和Ia...

对于如何在现实环境中应用GitOps有一个常见的误解。开发人员在概念上将基础设施视为代码(IaC)等同于GitOps,或者认为GitOps只能与基于容器的应用程序一起工作–这是不正确的。在本博客中,您将了解什么是GitOps,以及如何将其原则应用到实际的开发和操作中。

什么是Gitops?

GitOps是一个操作模型,它发展了DevOps最佳实践(例如版本控制、协作、遵从性和CI/CD)和IaC,以在基础设施和现代云原生应用程序上执行操作。它通过将云基础设施或应用程序的描述性代码放入Git存储库中进行处理和版本控制,然后通过自动化将这些更改应用到基础设施中来实现这一点。
GitOps的4个基本原则是:

  1. 系统定义被描述为代码。
  2. 所需的系统状态和配置在Git中定义和版本化。
  3. 可以使用拉请求自动应用对配置的更改。
  4. 控制器确保不存在配置漂移。

GitOps方法有几个优点:

  • 真理的唯一来源。所有代码都在Git上,因此基础设施或平台只有一个真理来源。
  • 容易回滚和快速恢复。对基础结构的所有更改都受到版本控制和审查,因此在必要时很容易回滚。
  • 增强了安全性。所有变化都由自动化拉动和应用;这限制了对基础结构的手动访问,从而提高了安全性。

GitOps实践不仅可以应用于传统的基础设施,如VMs,还可以应用于Kubernetes、网络配置、应用程序定义,甚至可以通过配置文件描述并通过自动化应用于环境的资源。

GitOps方式

以下是GitOps工作方式的概述:

  1. 声明性描述。作为目标环境中所需状态的基础结构/应用程序的声明性描述是GITOPS的基础。它还将一切都称为代码,包括基础设施、网络和安全。声明性描述、代码或配置作为整个系统的单一真理源存在于集中的Git存储库中。
  2. 利用Git工作流作为控件。所有操作都是通过对Git中的代码或配置文件进行更改来执行的,因此可以根据Git的版本控制系统对任何更改进行版本控制、审查或合并。
  3. 配置和部署分离。自动化过程用于将变更应用于目标环境;最佳实践是使用基于请求的部署,由代理/操作员请求并应用更改。

下图说明了在单个环境中应用GitOps的典型高级体系结构:

使用GitOps,应用程序源代码和声明性环境配置存储在支持工作流的Git上。在开发端,开发人员更改应用程序源代码,并在查看pull请求后合并更改。然后,CI管道检测更改并触发构建到工件存储库。在操作端,SRE在声明性配置Repo中对环境配置进行更改,并在审查过程之后合并更改。从体系结构的角度出发,在目标环境中引入了一个新的GitOps代理组件,用于检测环境配置repo中的变化,提取最新的配置,并将这些变化应用到环境中。GitOps代理检测并提取更改,因此操作员不需要访问目标环境,所有凭据都保存在环境中。

总结

了解了GitOps的原则、GitOps提供的优点以及一些通过真实世界的示例说明的最佳实践。GitOps不仅可以应用于基于容器的App,还可以应用于全栈的云资源。通过精心设计的自动化流程,它还可以支持在多个环境中促进更改的开发和操作。
GitOps是在云上使用DevOps的一种改进方法,但它不能解决所有的挑战。也就是说,GitOps应该被用作云DevOps工具箱中的一个有用工具。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。