GitOpsは、宣言的インフラストラクチャとソフトウェアの管理を行うための手法です。
GitOpsという用語は2017年にWeaveworksによって提唱されました。
バージョン管理システムであるGitを、宣言的インフラストラクチャとソフトウェアの信頼できる唯一の情報源(Single Source of Truth)として使用することで機能します。システム全体がGitで管理されているため、変更の追跡や、ロールバックが容易になります。開発者はプルリクエストを作成し、レビューや構成の承認を得ます。マージされるとソフトウェアのデプロイや運用タスクが自動で適用されていきます。デプロイや運用タスクの自動化は、属人性を排すのに効果的です。
現在利用可能なほとんどのCI/CDツールはPush型で動作します。Push型とは、CIを起点にKubernetesクラスターや、クラウドネイティブツールに変更をPushしていきます。Pushするためには、人やサービスなど、クラスター外に強い権限を必要とします。一方でGitOpsはPull型です。クラスターにインストールされたオペレーターがGitリポジトリをポーリングし、変更を検知すると、オペレーターが変更を適用していきます。人や外部サービスに権限を持たせる必要がありません。