GitOps ぎっとおぷす
簡単に言うとこんな感じ!
GitOpsは「Gitをシステム設定の唯一の真実として使う運用スタイル」だよ!コードを書くのと同じようにインフラの設定もGitで管理して、「Gitに書いてある状態=本番環境の状態」になるよう自動で合わせてくれる仕組みなんだ!
GitOpsとは
GitOpsとは、アプリケーションのコードだけでなく、インフラやKubernetesなどのシステム構成をすべてGitリポジトリで管理し、そのリポジトリの状態を「唯一の正解(Single Source of Truth)」として扱う運用手法です。開発者がコードを変更するように、インフラの設定変更もPull Requestを通じて行い、承認・マージされると自動的に本番環境へ反映されます。
2017年にWeave社(現Weaveworks)が提唱した概念で、特にKubernetes(コンテナの運用管理基盤)との相性が良く、クラウドネイティブな環境で急速に普及しました。従来の「担当者がサーバーに手動でコマンドを打って変更する」運用と異なり、変更履歴がすべてGitに残るため、「いつ・誰が・何を変えたか」が一目でわかります。
ビジネスパーソン的にいうと、「設計書(Git)と実際の建物(本番環境)が常に一致している状態を自動で保ち続ける仕組み」です。設計書を変えれば建物も自動で変わり、誰かが勝手に建物を改造しても設計書の状態に戻される——これがGitOpsの本質です。
GitOpsの仕組みと構造
GitOpsにはPush型とPull型の2つのアーキテクチャがありますが、現在主流なのはPull型です。
| 方式 | 仕組み | 代表ツール | 特徴 |
|---|---|---|---|
| Push型 | CIパイプラインが変更を検知し、外部からデプロイを実行 | Jenkins, GitHub Actions | シンプルだがクレデンシャル(接続情報)の管理が煩雑 |
| Pull型 | クラスター内のエージェントがGitを監視し、差分を自動適用 | ArgoCD, Flux | セキュアで宣言的。GitOpsの本命 |
Pull型GitOpsのフロー(4ステップ)
- 開発者がGitにPull Requestを送る(設定変更の提案)
- レビュー・承認を経てmainブランチにマージ
- クラスター内のGitOpsエージェント(ArgoCD等)がGitの変更を検知
- エージェントが本番環境をGitの状態に自動で同期(Reconcile)
覚え方:「Gitが正、環境が従」
「Git is the law(Gitが法律)」と覚えると◎。法律(Git)が変われば社会(環境)が変わる。誰かが勝手に社会のルールを破れば(手動で環境を変えれば)、法律の状態に引き戻される。これがGitOpsの哲学です。
GitOpsの4原則(Weaveworks定義)
| 原則 | 内容 |
|---|---|
| 宣言的(Declarative) | システムの望ましい状態をコードで宣言する |
| バージョン管理(Versioned) | すべての変更がGitに記録され、不変の履歴として残る |
| 自動適用(Automated) | 承認された変更は自動的に環境へ適用される |
| 継続的調整(Continuously Reconciled) | エージェントが常にGitと環境の差分を監視・修正する |
歴史と背景
- 2017年: Weaveworks社がブログ記事「GitOps - Operations by Pull Request」を公開し、GitOpsという概念を提唱
- 2018年: Weaveworks社がKubernetes向けGitOpsツール「Flux」をOSS公開。GitOpsの実装が現実的に
- 2019年: Intuit社がArgo CD(後のArgoCD)をOSS公開。GitOpsの普及を加速
- 2020年: KubernetesコミュニティでGitOpsが標準的な運用手法として認知される
- 2021年: CNCF(Cloud Native Computing Foundation)がGitOpsの原則を定義したOpenGitOpsプロジェクトを発足。ArgoCD、Fluxともにプロジェクトとして採択される
- 2022年以降: Flux v2がCNCFの卒業プロジェクトに昇格。エンタープライズ(大企業)での採用が本格化
GitOpsと従来のCI/CDの比較
従来のCI/CD(継続的インテグレーション・デリバリー)との違いを整理します。
主要GitOpsツールの比較
| ツール | 開発元 | 特徴 | 向いているケース |
|---|---|---|---|
| ArgoCD | Intuit → CNCF | UIが充実、視覚的に管理しやすい | UIで状態を把握したいチーム |
| Flux v2 | Weaveworks → CNCF | 軽量・CLIベース、柔軟 | CLIに慣れた運用チーム |
| Rancher Fleet | SUSE | 複数クラスターの大規模管理 | マルチクラスター環境 |
関連する規格・RFC
| 規格・プロジェクト | 内容 |
|---|---|
| OpenGitOps Principles v1.0 | CNCFが定義するGitOpsの4原則。ベンダー中立のGitOps標準定義 |
| CNCF Argo Project | ArgoCDがCNCFの卒業プロジェクトとして管理される |
| CNCF Flux Project | FluxがCNCFの卒業プロジェクトとして管理される |
関連用語
- Kubernetes — コンテナの運用管理基盤。GitOpsが最も活用される環境
- CI/CD — 継続的インテグレーション・デリバリー。GitOpsはCI/CDの発展形
- Infrastructure as Code — インフラをコードで管理する手法。GitOpsの前提思想
- ArgoCD — KubernetesのPull型GitOpsを実現する代表的OSSツール
- Git — バージョン管理システム。GitOpsの名前の由来でありコアの仕組み
- Pull Request — コードレビューの仕組み。GitOpsでの変更承認フローに使う
- コンテナ — GitOpsが管理するアプリケーションの実行単位
- Single Source of Truth — 「唯一の正解」の概念。GitOpsの根幹思想