3.0 KiB
3.0 KiB
title, type, tags, sources, last_updated
| title | type | tags | sources | last_updated | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| GitOps | concept |
|
|
2026-04-29 |
GitOps
Definition
GitOps 是将软件开发原则(尤其是 Git 版本控制)应用于基础设施和应用程序部署的方法论。其核心思想是:将 Git 仓库作为声明式配置的单一事实来源(Single Source of Truth),通过自动化机制确保实际环境与 Git 中声明的期望状态保持一致。
Core Principles
-
Declarative Configuration(声明式配置) 所有基础设施和应用配置以声明式语言(如 Terraform HCL、Kubernetes YAML)描述,而非命令式步骤。
-
Version Control(版本控制) 所有配置存储在 Git 仓库中,享受版本历史、代码审查(Pull Request)和回滚能力。
-
Automated CD(自动化持续交付) CI 专注代码构建和分析,CD 专注部署;两者解耦,增强安全性和可靠性。
-
Self-Healing(自修复协调) GitOps Controller 持续监控实际状态与 Git 声明状态,自动调和偏差(drift correction)。
Architecture Patterns
Pull Model(推荐)
- GitOps Agent(如 ArgoCD、Flux)同时监控 Git 仓库和目标系统
- Agent 通过 Pull 方式主动检测变更,无需外部系统推送
- 安全性更高,符合零信任原则
Push Model
- CI/CD 流水线(如 Jenkins、GitHub Actions)在代码变更后主动推送到目标环境
- 配置相对简单,但安全性较低
Tooling Ecosystem
| Tool | Role | Model |
|---|---|---|
| Atlantis | Terraform 自动化 Plan/Apply | Pull(PR-based) |
| ArgoCD | Kubernetes 应用部署 | Pull |
| Flux | Kubernetes 持续交付 | Pull |
| Terraform Cloud/Enterprise | Terraform 协作与状态管理 | Hybrid |
GitOps vs Traditional CI/CD
| Dimension | Traditional CI/CD | GitOps |
|---|---|---|
| Source of Truth | Pipeline definition | Git repository |
| Trigger | Push to repo | Automated pull + diff detection |
| State Drift Detection | Manual or periodic | Continuous automatic |
| Rollback | Manual or scripted | Git revert + auto-sync |
| Audit Trail | Build logs | Git commit history |
| Security Model | Token-based push | Agent has minimal permissions |
Related Concepts
- Infrastructure as Code (IaC):GitOps 的核心技术基础
- CI/CD Pipeline:GitOps 的前身和组成部分
- Terraform:主流 IaC 工具,Atlantis 是其 GitOps 工具
Related Entities
Related Sources
- ctp-topic-32-using-atlantis-cicd-for-infrastructure-deployments — Atlantis 工具实践层
- ctp-topic-33-an-introduction-to-gitops — GitOps 概念层(Victor Etkin 讲解)
- ctp-topic-9-ci-cd-with-gruntwork — Gruntwork CI/CD 实践