SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

GitOpsで実現する継続的デリバリー

Gitで継続的デリバリーを実現する「GitOps」とは? 概要とGitOpsソリューションの紹介


  • X ポスト
  • このエントリーをはてなブックマークに追加

GitOpsソリューションの比較

 現在色々なCDソリューションがGitOpsモデルを採用しています。この記事では、FluxCD、ArgoCD、PipeCDについて紹介し、比較してみます。これらのツールは全てオープンソースソフトウェアとして公開されています。

FluxCD

 FluxCDはKubernetesアプリケーションのためのCDツールとして設計・開発されています。2020年にFluxCD v2が誕生し、新しいアーキテクチャになりました。FluxCD v1は2021年末の前に非推奨になりますので、もし今から使用を検討する場合はFluxCD v2をおすすめします。FluxCD v2はGitで定義されているKubernetesアプリケーションの状態とクラスタの状態を同期するためのエージェントの集合です。例えば、Helm Chartで定義されているアプリケーションのためにHelm Controllerというエージェントがあり、Kustomizationで定義されているアプリケーションのためにKustomize Controllerというエージェントがあります。これらのエージェント (Controller)はKubernetesのCRD(Custom Resource Definition)の上で動いていて、常にアプリケーションの差分を検知して、修正します。

 FluxCDではカナリアリリース、ブルーグリーンデプロイメント、カナリア分析などの一歩進んだデプロイ手法を実現することもできます。それには、Flaggerという別のコンポーネントをインストールする必要があります。

 FluxCDの設計はシンプルで良いのですが、GUIが無いことが残念なポイントだと考えています。

ArgoCD

 Intuit社によって開発されている、KubernetesアプリケーションのためのCDツールです。FluxCDと同じく、KubernetesのCRDを用いて実装されていますが、ArgoCDはGUIを提供しています。ArgoCDでCanaryやBlueGreenなどを実現するためには、Argo-Rolloutsという別のコンポーネントをインストールする必要があります。しかし、FluxCDのFlaggerとは違って、Argo-RolloutsはKubernetesの標準のDeploymentを使うことが出来ず、独自のRollout CRDを使わなければなりません。これにより、既存のDeploymentを全て乗り換える必要があることと、Deploymentの標準コマンドが使えなくなることが気になるポイントだと考えています。

PipeCD

 PipeCDは2020年の10月にOSSとしてリリースされました。これはKubernetesアプリケーションのためだけではなく、インフラストラクチャからアプリケーションまでの統一なGitOpsのプロセスを提供するために、Terraformのインフラ設定やCloud Run、LambdaのサーバレスアプリケーションやECSアプリケーションなどざまざまな種類をサポートしています。

 元々PipeCDは複数プロジェクトを持つ大規模組織をターゲットとしているので、マルチテナンシー環境で運用しやすいように設計されています。PipeCDはControl PlaneとPipedエージェントという2つのコンポーネントから構成されています。Control Planeは中央データ管理やGUIなどを提供します。Pipedエージェントは各チームの環境内にインストールしてもらうシングルバイナリで、アプリケーションの状態の差分の検知やデプロイ作業を行います。また、Pipedエージェント単体でシークレット管理やカナリアリリース/ブルーグリーンデプロイメントなども行うことができ、追加のツールは不要です。

まとめ

 以上、本記事ではソフトウェアデリバリーにおけるGitOpsモデルについて紹介しました。GitOpsモデルはKubernetesアプリケーションのためだけではなく、インフラストラクチャやサーバーレスアプリケーションなどの他のアプリケーションにも採用できると考えています。本記事でいくつかのソリューションも紹介しました。次回からは実践的な解説を行っていきます。

参考

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
GitOpsで実現する継続的デリバリー連載記事一覧

もっと読む

この記事の著者

Le Van Nghia(nghialv)(株式会社サイバーエージェント)(Le Van Nghia)

 サイバーエージェントに新卒として入社し、Ameba, FRESH LIVE、ABEMAでの開発にジョイン。現在は社内基盤であるPipeCDの開発チームに配属。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/14310 2021/07/15 17:21

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング