凡ジニアのtxt

エンジニアリングができないエンジニア

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つの事柄に従っていることとなる。

  1. システム全体は宣言的なコードで記載される
  2. システムの状態がGitによってバージョン管理されている
  3. システムへの自動的な適用できる承認変更
  4. 正常性とアラートが保証されるソフトウェアエージェント

(引用: 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月号から短期連載されるようなので、購読してみようかな。

gihyo.jp