GitOpsってなんぞや
日頃、OpsDevやDevOpsなど何度も聞くことがある中、Kubernetesを勉強していたら、"GitOps"という単語が出てきた。
"GitOpsってなんぞや?"ということで、GitIOpsの概要をまとめてみたいと思います。
以下、Weaveworks社の公式サイトを引用し翻訳しているので、多少の翻訳品質が低い箇所があるのは、ご了承下さい。 www.weave.works
GitOpsとは
GitOpsとは、2017年にWeaveworks社が提案しているKuberetes Clusterの管理とKuberentes上で動くアプリケーションのデリバリ方法である。
(引用: Guide To GitOps)
つまり、Gitを用いてKubernetesのリソース管理とあらゆるコードで作られたアプリケーションを継続的なデリバリしていこうぜという感じらしい。
GitOpsの原則としては、以下4つの事柄に従っていることとなる。
- システム全体は宣言的なコードで記載される
- システムの状態がGitによってバージョン管理されている
- システムへの自動的な適用できる承認変更
- 正常性とアラートが保証されるソフトウェアエージェント
(引用: Guide To GitOps)
1と2に関しては、アプリもKubernetesのリソースのConfigファイル(yamlやjsonnet等)をGitHubやGitLab等で管理していくことだと思われる。
3に関しては、何かしらのCDを用いて自動的なデプロイができる環境を指していると思われる。よくここで使用されているのがArgo CDなのだと思われる。
4に関しては、Kubernetes Clusterへのデプロイ時、バージョンのミスマッチやあるアプリケーションが動いているPodが古かったりするとアラートが発報され、ロールバックなどで正常性を保つことを指しているのだと思われる。よくある例だとSlack等のツールへの通知が該当するはず。
終わり
なぜArgoCDが使われているのかを把握したかったため、ざっくりとGitOpsの概念を理解してみた。調べてみたら、Software Design2021/7月号から短期連載されるようなので、購読してみようかな。