GitOps始めるぞ!の前に用語や周辺技術を整理してみた


はじめに

GitOpsなるものがちまたで流行しているので、GKEで個人で運用しているサービスにも試しに取り入れてみようかと思っている今日このごろ

そもそもGitOpsが何者なのかもわかってないので、用語や周辺技術をまずはまとめてみる

用語の前提知識

CI

継続的インテグレーションのことで、コンパイル・テスト・デプロイといったソフトウェア開発のサイクル(ビルド)を頻繁に繰り返し実行させる

CD

継続的デリバリーのことで、ビルドやテストだけでなく、リリースプロセス全体を自動化

宣言的

一連の指示ではなく一連のファクトによって構成している
この記事がとてもわかりやすかった!

ここからが本題、GitOpsって何?

Weaveworks社が提唱する、CI/CDパイプラインの概念!
https://www.weave.works/blog/gitops-operations-by-pull-request

google翻訳を駆使しながら読んで、簡単にまとめると
コマンドラインツールを使わずに、gitの操作ですべての開発作業(もちろんデプロイも)を完結させる運用、そしてKubernetesの宣言的な構成と相性が良いと理解した

時間あるときにもう少しちゃんと読んでみようと思う

GitOpsのメリットは?

じゃあ、そのメリットでどこにあるのって話で、考えられるだけ洗い出してみた

  • git上の履歴を見るだけで環境に対して何が行われたかを追える
  • 実際に動いている環境とgitで宣言しているコードの違いを検知できる
  • コマンドラインによる人的な操作をなくすことで、オペミスをなくす
  • 人的な操作を削減は人的コストの削減につながる
  • CI/CDの分離
  • コードとコンフィグを分けることでセキュリティもよくなる

Docker、Kubernetesによる、Infrastructure as Codeが実現できている環境であるからこそ、GitOpsの強みを発揮できそうな印象(というよりInfrastructure as Codeであることが前提か)

また、個人の運用しているサービスに当てはめると、デプロイはkubectl applyコマンドを使っていて、本番との差分もkubectl diffに確認するという、人的オペレーションだらけとなっているので、これが自動化できるだけでも保守性がとても上がる!

どうやって実現するか?

CI、CD、manifestの管理ツールについて簡単にまとめた

CIツール

...etc

CDツール

...etc

manifest管理ツール

...etc

まとめ

今回はGitOpsを導入する前に用語や周辺技術に関して簡単にまとめてみた
今度は実際に導入してみる

参考

https://style.biglobe.co.jp/entry/2020/06/12/100000
https://knowledge.sakura.ad.jp/21870/
https://kabukawa.hatenablog.jp/entry/2018/12/21/130304