Skip to content
Latchkey

GitOps とは?インフラの信頼できる情報源としての Git

GitOps は、Git リポジトリを望ましいインフラの唯一の信頼できる情報源とし、自動化されたエージェントがそれに一致するよう、稼働中のシステムを継続的にリコンサイルします。

GitOps は、あなたがすでにコードに使っているバージョン管理の規律を、インフラとデプロイに適用します。望ましい状態は Git 内の宣言的な manifest として存在し、クラスタ内のエージェントがそのリポジトリを監視して現実を一致させます。変更は pull request を通じて起こり、クラスタは Git が言うことに向かって自己修復します。

中核となる原則

  • 宣言的 - システム全体がデータとして記述される。
  • Git でバージョン管理 - Git が唯一の信頼できる情報源。
  • push ではなく pull - エージェントがリポジトリからリコンサイルする。
  • 継続的にリコンサイル - drift が検知され、修正される。

pull ベースのリコンサイル

pipeline がクラスタに変更を push する代わりに、クラスタ内の controller が望ましい状態を Git から pull して apply します。誰かが手動でクラスタを変更すると、controller はそれを Git が宣言する状態に戻します。

チームが好む理由

あらゆる変更はレビュー可能で監査可能な commit であり、rollback は git revert、そしてクラスタが黙って drift することはありません。また CI(build とテスト)と CD(リコンサイル)を分離し、責務がきれいになります。

CI と GitOps を組み合わせる

CI はイメージを build・テストし、manifest リポジトリを新しいイメージ tag または digest で更新します。GitOps エージェントが commit に気づき、変更をロールアウトします - CI が提案し、GitOps が処理します。

一般的なツール

Argo CD と Flux が主要な GitOps controller です。どちらもリポジトリを監視し、manifest(しばしば Helm chart や Kustomize)を apply し、sync 状態と drift を報告します。

重要なポイント

  • GitOps は Git を信頼できる情報源とし、クラスタ内のエージェントがリコンサイルします。
  • pull ベースで自己修復します - 手動の drift は元に戻されます。
  • CI が manifest リポジトリを更新し、GitOps エージェントが変更をロールアウトします。

関連ガイド