当前位置: 首页 > news >正文

AAA GitOps详解

目录

1 、GitOps 是什么

2 、GitOps 与 DevOps区别

3 、GitOps 四大原则

4、GitOps工作流程

5 、流行的 IaC 工具Terraform

6 、Flux CD


1 、GitOps 是什么

GitOps = IaC + Git + CI/CD,即基于 IaC 的版本化 CI/CD。它的核心是使用 Git 仓库来管理基础设施和应用的配置,并且以 Git 仓库作为基础设施和应用的单一事实来源,你从其他地方修改配置(比如手动改线上配置)一概不予通过。

Git 仓库中的声明式配置描述了目标环境当前所需基础设施的期望状态,借助于 GitOps,如果集群的实际状态与 Git 仓库中定义的期望状态不匹配,Kubernetes reconcilers 会根据期望状态来调整当前的状态,最终使实际状态符合期望状态。

另一方面,现代应用的开发更多关注的是迭代速度和规模,拥有成熟 DevOps 文化的组织每天可以将代码部署到生成环境中数百次,DevOps 团队可以通过版本控制、代码审查以及自动测试和部署的 CI/CD 流水线等最佳实践来实现这一目标,这就是 GitOps 干的事情。

2 、GitOps 与 DevOps区别

从广义上来看,GitOps 与 DevOps 并不冲突,GitOps 是一种技术手段,而 DevOps 是一种文化。GitOps 是一种实现持续交付(Continuous Delivery)、持续部署(Continuous Deployment)和基础设施即代码(IaC)的工具和框架,它是支持 DevOps 文化的。

1、 推模式改为拉模式

2、增强IAC交付

3 、GitOps 四大原则

一. 声明式

必须通过声明式来描述系统的期望状态。例如 Kubernetes,众多现代云原生工具都是声明式的,Kubernetes 只是其中的一种。

二. 版本化

因为所有的状态声明都存储在 Git 仓库中,并且把 Git 仓库作为单一事实来源,那么所有的操作都是从 Git 仓库里驱动的,而且保留了完整的版本历史,方便回滚。有了 Git 优秀的安全保障,也可以使用 SSH 密钥来签署 commits,对代码的作者和出处实施强有力的安全保障。

三. 自动拉取

监听仓库变化。

四. 持续协调

对比差异,重新部署,表示的是确保系统的实际状态与期望状态一致的过程。具体的实现方式是在目标环境中安装一个 agent,一旦实际状态与期望状态不匹配,agent 就会进行自动修复。这里的修复比 Kubernetes 的故障自愈更高级,即使是手动修改了集群的编排清单,集群也会被恢复到 Git 仓库中的清单所描述的状态。

4GitOps工作流程

要开始使用 GitOps:

  1. 用户将代码上传到github仓库:这将是你的单一真实来源。
  2. 实施持续集成(CI):CI工具比如Githun Action,作用有2个: 构建镜像,更新应用定义配置仓库中的yaml文件镜像版本
  3. 持续部署(CD):CD工具比如 ArgoCD, 左右有2个:监听仓库变化,检查是否有新的commit,持续协调(监从GitHub仓库中获取有K8S对象,并实时与集群对对比,自动更新集群中有差异的资源)
  4. 将基础设施定义为代码(IaC):可以使用 Terraform、Ansible 和 Kubernetes YAML 文件等工具将基础设施编码化。

5 、流行的 IaC 工具Terraform

  基础设施即代码 (IaC) :使用声明式配置文件来创建基础设施。

● 消除了手动配置:IaC 消除了手动配置的需要,从而节省了大量时间。它实现了基础设施的可重复且一致的配置,进一步加快了部署过程。
● 可移植性:IaC 确保一致的调配和配置,消除偏差并提高应用程序的整体稳定性。
更快、更高效的开发:供应和配置任务的自动化使开发人员能够专注于战略任务,从而简化开发流程

6 Flux CD

Flux CD通过定期轮询存储库来将存储在源代码存储库中的Kubernetes manifests文件与Kubernetes集群同步, 因此团队无需担心运行kubectl命令和监视环境以查看他们是否部署了正确的工作负载。相反,Flux CD确保Kubernetes集群始终与源代码存储库中定义的配置保持同步

Flux CD如何工作

Flux CD允许团队以声明方式使用YAML清单指定所有必需的Kubernetes配置。

  • 团队编写Kubernetes manifests并将其推送到源代码存储库。

  • memcached pod存储当前配置。

  • Flux定期(默认为五分钟)使用Kubernetes operator轮询存储库以进行更改。Flux容器将其与memcached中的现有配置进行比较。如果检测到更改,它将通过运行一系列kubectl apply/delete命令将配置与集群同步。然后,它将最新的元数据再次存储在memcached存储中。

    http://www.xdnf.cn/news/262603.html

    相关文章:

  1. n8n工作流自动化平台的实操:本地化高级部署
  2. 浙大:优化视觉模型的过度思考
  3. 【Godot】生命周期详解:从节点诞生到销毁的全流程解析
  4. 软件工程实践
  5. sonar-scanner在扫描JAVA项目时为什么需要感知.class文件
  6. Redis持久化:
  7. 栈系列一>基本计算器II
  8. 数据库介绍以及windows下mysql安装
  9. day 11 超参数调整
  10. react18基础速成
  11. AIGC时代——语义化AI驱动器:提示词的未来图景与技术深潜
  12. Elasticsearch:RAG 和 grounding 的价值
  13. 机器人--MCU
  14. 【React】Hooks useReducer 详解,让状态管理更可预测、更高效
  15. 提升办公效率的PDF转图片实用工具
  16. Python面向对象编程实战:从类定义到高级特性的进阶之旅(2/10)
  17. 参数包展开到初始化列表
  18. WGDI-分析WGD及祖先核型演化的集成工具-文献精读126
  19. 【中间件】brpc_基础_execution_queue
  20. OpenharmonyOS+RK3568,【编译烧录】
  21. Ubuntu 24.04 通过 update-alternatives 切换GCC版本
  22. 什么是多租户系统
  23. Maven 实现多模块项目依赖管理
  24. WITH在MYSQL中的用法
  25. 具身系列——PPO算法实现CartPole游戏(强化学习)
  26. Oracle OCP认证考试考点详解083系列04
  27. 单片机嵌入式按键库
  28. Maven安装配置以及Idea中的配置教程
  29. C# 操作符
  30. 【LeetCode Hot100】栈篇