AI

オープンソースGitOps比較:ArgoCD vs FluxCD で Kubernetes をGitで管理する

オープンソースラボ編集部2026年6月13日

オープンソースGitOps比較:ArgoCD vs FluxCD で Kubernetes をGitで管理する

「Gitが真実の源(Source of Truth)」としてKubernetesクラスターの状態を管理するGitOpsは、現代のクラウドネイティブ開発の標準プラクティスです。ArgoCD・FluxCDはオープンソースのGitOpsコントローラーとして最も広く採用されています。

GitOpsとは何か

従来のCDアプローチとGitOpsの違い:

従来のCD:
CI/CD → kubectlコマンド → クラスター更新(Push型)

GitOps:
Git(マニフェスト)→ GitOpsコントローラー → クラスター自動同期(Pull型)

GitOpsの利点:

  • 監査証跡: 誰がいつ何を変更したかがGithistoryに残る
  • 自動ドリフト検知: 実際の状態とGitの差分を検知して自動修復
  • ロールバック: git revertでインフラを過去の状態に戻せる
  • セキュリティ: クラスターへの直接アクセス権が不要(Pull型)

主要ツールの概要

ArgoCD

Kubernetes向けのGitOps CDツールです。美しいUIダッシュボード・アプリケーション依存関係のグラフ表示・リアルタイムの同期状態確認が特徴です。

# ArgoCDのインストール
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

# CLIのインストール(macOS)
brew install argocd

# 初期パスワードの取得
argocd admin initial-password -n argocd

# ポートフォワードでUIにアクセス
kubectl port-forward svc/argocd-server -n argocd 8080:443
# ArgoCD Application リソース
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-app
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://github.com/my-org/my-app-configs
    targetRevision: HEAD
    path: kubernetes/production
  destination:
    server: https://kubernetes.default.svc
    namespace: production
  syncPolicy:
    automated:
      prune: true        # Gitから削除されたリソースを自動削除
      selfHeal: true     # クラスターのドリフトを自動修正
    syncOptions:
      - CreateNamespace=true
# ArgoCDでアプリを手動同期
argocd app sync my-app

# 同期状態の確認
argocd app get my-app

# Helmチャートのデプロイ
argocd app create my-helm-app   --repo https://github.com/my-org/helm-configs   --helm-chart my-chart   --helm-set image.tag=v1.2.3   --dest-namespace my-namespace   --dest-server https://kubernetes.default.svc

FluxCD

CNCF(Cloud Native Computing Foundation)のプロジェクトとして開発されるGitOpsツールキットです。ArgoCDよりも軽量でGit-nativeな設計で、Helm・Kustomize・Bucket(S3)をサポートします。

# FluxCDのインストール(GitHubリポジトリをbootstrap)
brew install fluxcd/tap/flux

# GitHubリポジトリにFluxをbootstrap
flux bootstrap github   --owner=my-org   --repository=fleet-infra   --branch=main   --path=./clusters/my-cluster   --personal

# 同期状態の確認
flux get all
flux get kustomizations
# GitRepository ソース定義
apiVersion: source.toolkit.fluxcd.io/v1
kind: GitRepository
metadata:
  name: my-app
  namespace: flux-system
spec:
  interval: 1m
  url: https://github.com/my-org/my-app-configs
  ref:
    branch: main
  secretRef:
    name: github-token

---
# Kustomization(適用する設定)
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
  name: my-app
  namespace: flux-system
spec:
  interval: 10m
  retryInterval: 2m
  timeout: 5m
  sourceRef:
    kind: GitRepository
    name: my-app
  path: ./kubernetes/production
  prune: true
  wait: true
  healthChecks:
    - apiVersion: apps/v1
      kind: Deployment
      name: my-app
      namespace: production

機能比較表

比較項目ArgoCDFluxCD
WebUI・ダッシュボード✅ 高機能❌(外部Grafana)
Git同期
Helm対応
Kustomize対応
マルチクラスター
OCI Artifact対応
イメージ自動更新✅ Image Automation
RBAC・SSO
通知・Webhook
設定量少ない多い
CNCFステータスIncubatingGraduated
エンタープライズサポートAkuityWeaveworks
ライセンスApache 2.0Apache 2.0
GitHub Stars18k+14k+

ArgoCDでのカナリアデプロイ(Argo Rollouts)

# Argo Rolloutsでカナリアリリース
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
  name: my-app
spec:
  replicas: 5
  strategy:
    canary:
      steps:
        - setWeight: 20        # 最初に20%のトラフィックを新バージョンへ
        - pause: {duration: 10m}
        - setWeight: 50
        - pause: {duration: 10m}
        - setWeight: 100
      canaryMetadata:
        labels:
          deployment: canary
  template:
    spec:
      containers:
      - name: my-app
        image: my-app:{{.Values.image.tag}}

GitOps・DevOpsツールはDevOpsカテゴリ(/categories/devops)で一覧でき、セキュリティ関連のIaC管理ツールはセキュリティカテゴリ(/categories/security)でも探せます。

FAQ

Q. ArgoCDとFluxCDはどちらを選ぶべきですか?

A. UIを重視する・チームにKubernetes初心者がいる・デプロイを視覚的に確認したい場合はArgoCDが適しています。シンプルで軽量な設計を好む・Prometheusで監視・CLI中心のワークフローに慣れている場合はFluxCDが向いています。両者は機能的に拮抗しており、どちらを選んでも大きな問題はありません。

Q. GitOpsでHelmチャートを管理する場合の推奨パターンは?

A. 推奨パターンは「App of Apps」です。一つのArgoCDアプリケーションが他の複数のアプリケーションを管理するパターンで、全アプリケーションの依存関係・デプロイ順序をGitで宣言的に管理できます。FluxCDではKustomizationの依存関係(dependsOn)で同様のパターンを実現します。

Q. ArgoCD / FluxCDでシークレット(Secret)はどう管理しますか?

A. KubernetesシークレットをGitに直接コミットするのは危険です。一般的な解決策: Sealed Secrets(公開鍵で暗号化してGitに保存)・External Secrets Operator(AWS Secrets Manager・HashiCorp Vaultからシークレットを注入)・SOPS(Age/PGPで暗号化)。ArgoCDもFluxCDもこれらと統合できます。

Q. マルチクラスター・マルチテナントの設定はどうすればいいですか?

A. ArgoCDはApplicationSetリソースで複数クラスター・複数環境へのデプロイを宣言的に管理できます。FluxCDは clusters/ ディレクトリを環境(dev/staging/prod)ごとに分けるパターンが一般的です。Kustomizeのoverlay機能で環境差分(image tag・レプリカ数・リソース制限)を管理します。

まとめ

ユースケース推奨ツール
UIで視覚的にデプロイ管理ArgoCD
軽量・CLI中心のGitOpsFluxCD
カナリアデプロイArgo Rollouts
マルチクラスター管理ArgoCD / FluxCD どちらでも

関連外部リソース

他の記事も読む

Let's Build Together

OSS導入、自社だけで悩まない。

ツール選定から構築・運用・AI活用まで、オープンソースラボ運営元のClasslessが伴走します。初回のご相談は無料です。