【ぎっとおぷす】

GitOps とは?

最終更新:
💡 Gitに置いた望ましい状態へ、実環境を合わせる

Gitなどで版管理した宣言的な望ましい状態を、ソフトウェアのエージェントが取得し、実環境との差を継続的に調整する運用手法。変更のレビューや履歴管理と、環境への反映を結び付ける。

📌 このページのポイント
望ましい状態と実環境を合わせる 変更をレビューPRで承認定義を更新Git望ましい状態replicas: 3取得エージェント定義と実環境を継続的に照合差分を調整実環境アプリを3個へ緑:反映 橙:状態の確認自動反映・削除・修復は設定も確認
replicas: 3をGitで管理する例。エージェントが定義と実環境を照合して差分を調整する。緑の矢印は反映、橙は実状態の確認を示す。
ひよこ ひよこ
普通のCI/CDと何が違うの?
ペンギン先生 ペンギン先生
CI/CDはビルド・テスト・配布などを自動化する広い考え方だよ。GitOpsでは「アプリを3個動かす」のような望ましい状態を版管理し、エージェントがその定義を取得して実環境との差を調整する。CIとGitOpsを組み合わせることもできるんだ。
ひよこ ひよこ
Gitにpushしたら必ず自動デプロイされる?
ペンギン先生 ペンギン先生
監視するリポジトリやブランチ、反映先、同期の設定によるよ。Argo CDなら自動同期を有効にして反映できる。一方で、Gitから消した資源の自動削除や、実環境で直接変更した内容の自動修復には、それぞれpruneやselfHealの設定が関係するんだ。
ひよこ ひよこ
Gitの履歴にはどんな利点があるの?
ペンギン先生 ペンギン先生
望ましい状態の変更を差分でレビューし、いつ何を変えたかを追えるよ。PRを使って変更を承認する流れも作れる。ただし、実環境で行われたすべての操作がGitに記録されるわけではないので、運用ログも必要に応じて確認するんだ。
ひよこ ひよこ
git revertだけで元に戻せる?
ペンギン先生 ペンギン先生
望ましい状態の定義を以前の内容に戻し、環境へ反映する方法にはなるよ。ただしデータベースのデータや、変更済みの外部サービスまで自動的に戻るわけではない。反映結果と、戻せる範囲を確認する必要があるんだ。
ひよこ ひよこ
導入するときは何を決めるの?
ペンギン先生 ペンギン先生
まず何を宣言的に管理するか、どの版を反映するか、誰が変更を承認するかを決めるよ。KubernetesではArgo CDやFluxなどを使える。反映先への権限、秘密情報の管理、同期失敗時の確認方法も用意し、小さな対象から反映を確かめると進めやすいね。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「GitOps」って出てきたら「Gitを中心にインフラとデプロイを管理する手法」と思えればだいたいOK!
📖 おまけ:英語の意味
「GitOps」 = Git + Operations
💬 Weaveworksが2017年に提唱。DevOpsの実践をGitワークフローに統合する考え方だよ

参考資料

← 用語集にもどる