普段のデプロイツールとしてArgoCDを利用していているのですが、ArgoCDのデプロイ手法であるGitOpsについてよく知らなかったので調べてみました。
GitOpsとは
GitOpsとはKubernetesクラスタへの操作をGitリポジトリを通じて行うCI/CD
手法です。
Gitリポジトリを通じてクラスタ操作を行うため、manifest file専用のリポジトリを用意する必要があります。
GitOpsフロー

GitOpsを採用した際のデプロイフローは以下のようになります。
- Applicationに対して変更を行う
- Applicationの変更を反映したコンテナimageを作成し、Container Registryにpushする
- manifestを管理しているrepositoryでimage versionを変更したmanifestのPRを作成する
- 開発者はmanifestを確認し、問題なければマージを行う。
- Kubernetesクラスタのデプロイエージェントがマージをトリガーにデプロイ作業を行う
GitOpsのメリット
GitOpsを採用することにより、デプロイをコード管理できるようになります。 コード管理することにより、デプロイした後に問題があることが分かった場合、該当するデプロイPRをrevertすることにより、容易に問題が発生する前の状態に戻すことができます。
また、GitOpsを採用しているデプロイツールを採用することにより、デプロイエージェントに作業を任せることができます。 開発者は手作業によるデプロイ作業から解放され、より本質的な作業に専念できます。手作業による誤操作も減ることが期待されます。
感想
普段、KubernetesのデプロイにはArgoCDを利用しているのですが、そのArgoCDが採用しているGitOpsとは何なのかぼんやりとしかわからなかったので調べてみました。Gitリポジトリでデプロイを管理するシンプルな方法であることがわかりました。次はこのデプロイ手法を採用しているArgoCDについて調べてみます。