投稿日 2023.05.10
Argo CD vs Flux vs Jenkins X
- GitOps
今回は、GitOpsを実現するツールに関する内容だね!
どういう内容でしょうか?
はじめに
アプリケーション開発においてKubernetesを用いる場合、GitOpsを使うことで開発をスムーズに進めることができます。これは、GitOpsを使えば、Gitのバージョン管理システムを用いてインフラの設定ファイルが容易に管理できるからです。
GitOpsを行うためのツールは、代表的なものとして、Argo CD、Flux、Jenkins Xの3つが挙げられますが、これらに精通していないとどれを使えばよいかよくわからないと思います。そこで本記事では、この3つのツールを、1. 使いやすさ、2. 機能性の観点から比較・紹介します。ぜひ参考にしてみてください。
想定する読者
アプリケーション開発においてKubernetesを用いることを検討しているエンジニア
Argo CDとは
Argo CDとは、Kubernetes環境でGitOpsを実現するためのCDツールです。Argo プロジェクトのサブプロジェクトとして立ち上がりました。
Fluxとは
Fluxとは、Kubernetes環境でGitOpsを実現するためのCDツールです。Fluxプロジェクトのサブプロジェクトとして立ち上がりました。
Jenkins Xとは
Jenkins Xとは、Kubernetes環境でGitOpsを実現するためのCDツールです。CIツールであるJenkinsの問題点を解決すべくJenkinsのサブプロジェクトとして立ち上がりました。
比較
使いやすさ
- Argo CDには、デプロイを行ったアプリケーションをGUIで確認することができるGUI機能があります。したがって、すべての操作をGUIから実行することができます。
- Fluxは、アーキテクチャがシンプルで、学習コストが比較的低いです。
- Jenkins Xはアーキテクチャが複雑で、学習コストは高いです。
使いやすさの観点では、GUI機能を重視するならArgo CDが、学習コストを重視するならFluxがおすすめです。
機能性
- Argo CDは、複数のアプリケーションを動かすことができ、多数のクラスターを同時に管理することを可能にする柔軟な構成になっています。
- Fluxは、アーキテクチャがシンプルであるがゆえに、複数のGitとKubernetesクラスターという組み合わせで構成&運用することが難しくなってしまいます。ただし、Gitだけではなくアプリケーションのイメージが更新されたら、CDが動き出すと言う特徴を備えています。
- Jenkins Xには、jxコマンドというコマンドツールがあります。jxコマンドを用いれば、Kubernetesクラスターの作成やistioやflaggerといったアドオンもインストールすることができるようになっています。
機能性の観点では、jxコマンドのみで開発に必要なほぼすべてのことが実行できるJenkins Xが優れているといえます。
まとめ
本記事では、代表的な3つのGitOpsツールについて紹介しました。使いやすさの観点では、GUI機能があるArgo CDや学習コストが低いFluxが優れており、機能性の観点ではjxコマンドを持つJenkins Xがおすすめであることを説明しました。本記事の内容を参考にしながら、自分が使いやすいツールを探してみてください。
語句の説明
CD: Continuous Deliveryの略で、継続的インテグレーションを延長して、より高レベルの結合とテストなどを自動的に行い、新しい変更がリリース可能であることを保証するプロセスのこと。
CI: Continuous Integrationの略で、開発者が自分のコード変更を定期的にセントラルリポジトリにマージし、その後に自動化されたビルドとテストを実行する DevOps ソフトウェア開発の手法です。
OSS: オープンソースソフトウェアの略で、作成者がソースコードを無償で公開していて、利用や改変、再配布が自由に許可されているソフトウェアのこと。
アドオン: ソフトウェアへ新たな機能を追加するためのプログラムのこと。