什么是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,必须要开发出新的组件,用于粘合这些工具,实现拉式交付流水线。
Featured Tags
工具类
XML
JAVA
Java
Mybatis
反射
代理模式
日志
工厂方法模式
装饰器模式
结果集映射
Web
RESTful
WebAPI规范
SQL
Redis
Jira
SynapseRT
有限状态机 State Machine
statemachine
SpringBoot
IDEA
Tomcat
Vue
Docker
Springboot
Apache Ignite
项目发布与调试
白帽子讲web安全
黑名单
通用化
企业中台实践
MacOS
docker
minio
springboot
分布式存储
Postgres
数据备份
数据恢复
K8S
抖音小程序
开发实践
SpringCloud
Skywalking
Nacos
Kubernetes
Secret
ConfigMap
Git
GitOps
云原生
RocketMQ
ActiveMQ-Artemis
ClickHouse
Kamailio
sipp
Homer
heplify
heplify-server
HEP