Git|GitOps介绍

Git

Posted by Claire on September 25, 2023

什么是GitOps?其他的还有DevOps,AiOps

基础设计即代码 Infrastructure as Code IaC,像编写代码一样使用基础设施,广义上不仅仅是基础设施,还包含网络、安全、配置等,所以广义上也是X as Code

  • Intracstructure as Code
  • Network as Code
  • Policy as Code
  • Security as Code
  • Configuration as Code

什么是GitOps

GitOps = IaC + Git +CI/CD 即基于IaC版本化的CI/CD,核心是使用Git仓库来管理基础设置和应用的配置,并以Git仓库作为基础设施和应用的单一事实来源

Git仓库中的声明式配置定义了基础设施的期望状态,如有不匹配,会触发K8S进行调整

DevOps团队可以通过版本控制、代码审查、自动化测试、CI/CD流水线来管控大规模应用的迭代更新

关于 DevOps

DevOps 是 Development and Operations,囊括了开发和实施,在软件流程中,

  • development: plan,code,build,test
  • operations: release,deploy,operate,monitor

是一些列的过程和方法,用于促进开发、技术运营和质量保证

devops,表示以上这些流程方法,也是一种思想和文化,团队的各个部分需要了解流程,明确规范和标准,在软件敏捷开发、持续集成、持续交付的全流程通力协作。

GitOps对 DevOps的实践

GitOps 就是对于DevOps这种开发与交付理念,提出一个技术解决思路,定义了云原生场景下的CI/CD流程。

GitOps的几个原则有:

  • 声明式
  • 版本控制与不可变,Git仓库作为单一事实来源
  • 自动应用变更
  • 持续的Reconciliation,描述系统状态和目标期望状态持续保持一致的过程

什么是CI/CD?

  • CI:Continuous Integration 持续集成
  • CD:Continuous Delivery 持续交付

GitOps工作流

  • git fork & git pull/push
  • 执行CI流水线:验证配置文件、自动化测试、代码检测、构建OCI镜像、将镜像推至仓库,完成流程后将这个pull request合并入主分支
  • 运行CD流水线,将变动应用至系统中
    • 在触发CI/CD的模式中,存在Pull和Push两种 Push模式,类似Jenkins、CircleCI,在CI流程执行完后将应用部署至系统中 Pull模式,会在目标环境安装agent,自动周期性检测当前应用状态和仓库中的期望状态,如果不符合就会自动更新以满足一致性。例如Argo CD,Flux CD

GitOps一般是基于pull模式,将代码的提交和应用的迭代,通过这种约定的自动化匹配的方式进行解耦,将开发与实施维护融为一体。

要实现GitOps,必须要开发出新的组件,用于粘合这些工具,实现拉式交付流水线。