Argo CD
技術

Argo CD

Kubernetes 向けの GitOps 継続的デリバリーツール

Argo CD は、Kubernetes 向けの宣言的な GitOps 継続的デリバリーツールです。クラスターの実際の状態を、Git リポジトリで定義された望ましい状態と同期させ続けます。そのため、デプロイはクラスターに対して命令的なコマンドを実行する作業ではなく、プルリクエストをマージする作業になります。

仕組み

Argo CD は Kubernetes クラスター内でコントローラーとして動作します。1 つ以上の Git リポジトリで宣言された内容と実際に稼働しているものを継続的に比較し、ドリフトを表示するか、自動的に調整します。望ましい状態が Git にあるため、すべての変更がバージョン管理され、レビュー可能で、元に戻せます。これは、チームがすでにコードで使っているプルリクエストのワークフローそのものです。

主要な概念

  • Application — Argo CD が管理する基本単位です。Git リポジトリ内のパスを、宛先のクラスターと namespace に対応付けます。
  • Sync policy(同期ポリシー) — Git が変更されたらすぐに自動で変更を適用するか、手動での同期を待つかを制御します。
  • ヘルスと同期ステータス — リソースが健全か(たとえば Pod が稼働中か)、Git と一致しているか(同期済み、未同期、不明)の両方を追跡します。
  • Projects(プロジェクト) — アプリケーションをグループ化し、使用できるリポジトリ、クラスター、リソースの種類を制限します。

チームが Argo CD で GitOps を採用する理由

  • デフォルトで監査可能。 クラスターへのすべての変更には、対応する commit があり、通常はレビュー済みのプルリクエストがあります。
  • 簡単なロールバック。 デプロイを元に戻すのは git revert であり、プレッシャーの中で手動の kubectl 操作を行う必要はありません。
  • 環境間で一貫。 単一の namespace を対象にする場合でも、数十のクラスターを対象にする場合でも、同じ調整モデルが適用されます。
  • ドリフトの検出。 クラスターに直接加えられた変更はすぐに「out of sync」として表示され、Git に記録された内容から黙って乖離することがありません。

はじめに

Argo CD を Kubernetes クラスターにインストールし、マニフェストを含む Git リポジトリを指定します。プレーンな YAML、Helm チャート、Kustomize オーバーレイのいずれも使えます。そして、両者を結びつける Application リソースを定義します。以降のガイドでは、単一のアプリケーションから複数クラスターの管理まで、最も一般的な構成を順に説明します。