Contents
Argo CD のコア機能
Argo CD は Git リポジトリを 唯一の真実(source‑of‑truth) とみなし、クラスタ内リソースとの双方向同期を自動化します。この機能は大規模なマルチクラスター環境でも一貫した状態管理を可能にします。
- Application / ApplicationSet
Applicationは単一アプリケーション、ApplicationSetはテンプレート化された複数環境(例: 開発・ステージング・本番)へのデプロイを自動生成します。- Git ↔︎ K8s 双方向同期
- Git のコミットがトリガーになると差分が即座に適用され、クラスタ側のドリフトは UI/CLI から Git に反映できます。
- マニフェストエンジン対応
- Kustomize(v5 対応)・Helm・Jsonnet をシームレスに統合し、既存 CI/CD パイプラインと併用可能です。公式ドキュメント: https://argo-cd.readthedocs.io/en/stable/
- 認証・認可
- OIDC、LDAP、SAML 等の外部 IdP と連携し、RBAC による細粒度アクセス制御を提供します。
詳細は Argo CD v2.9 のリリースノート(2025‑12)https://github.com/argoproj/argo-cd/releases/tag/v2.9.0 を参照してください。
Argo Rollouts のコア機能
Argo Rollouts は Progressive Delivery に特化した CRD で、Canary や Blue‑Green といった段階的リリース手法を宣言的に定義できます。メトリクス駆動の自動プロモーションやロールバックが特徴です。
| 機能 | 主なポイント |
|---|---|
| Canary Release | トラフィックを 5 % → 20 % → 100 % と段階的にシフトし、失敗時は自動ロールバック |
| Blue‑Green Deployment | 完全分離した環境間で瞬時に切り替え可能。トラフィック切替は 0.1 % 単位で制御 |
| Metric‑based Promotion | Prometheus 等の外部メトリクスを条件に AnalysisTemplate で自動判定 |
| AnalysisTemplate | カスタムクエリやアラート条件でリリース品質を評価し、失敗時は即座にロールバック |
| CLI / UI 連携 | kubectl argo rollouts と Argo CD UI が統合され、一元管理が可能 |
公式リリースノート(Argo Rollouts 1.6): https://github.com/argoproj/argo-rollouts/releases/tag/v1.6.0
最新リリースでの主な変更点
各ツールは 2025‑12 以降に大幅な機能追加を行い、GitOps と Progressive Delivery の融合が進んでいます。以下では重要な改良点をコンパクトにまとめました。
Argo CD v2.9(2025‑12 リリース)の新機能
Argo CD 2.9 はマルチクラスター運用の自動化と RBAC の拡張が中心です。
- ApplicationSet 外部プラグイン拡張
- GitHub、GitLab、Bitbucket に加えてカスタムジェネレータ(例: Azure DevOps, AWS CodeCommit)を公式にサポート。 |
- RBAC ポリシーのテンプレート化
policy.yamlテンプレートで組織横断的な権限設定がコード化でき、CI での自動検証が容易に。 |- Kustomize v5 対応
- パッチ戦略や GeneratorOptions がフルサポートされ、Helm と併用した高度なマニフェスト生成が可能。 |
詳細はリリースノートと Argo CD の公式アップデートガイドを参照: https://github.com/argoproj/argo-cd/releases/tag/v2.9.0
Argo Rollouts 1.6 系(2025‑12〜2026‑03)の新機能
Argo Rollouts 1.6 は AnalysisTemplate の拡張とトラフィック制御の精度向上が主眼です。
- Prometheus アラート条件組み込み
alert_ifフィールドで閾値超過時に即ロールバックを実行でき、SLO 達成率が向上。 |- Blue‑Green ステップの流量分割精度向上
- 0.1 % 単位でのトラフィックシフトとミリ秒レベルのカナリアテストが可能に。 |
- CLI の Helm Chart 互換出力
argo rollouts generate manifestsが Helm Chart フォーマットを直接生成し、既存パイプラインへの組み込みが容易。 |
詳細は公式リリースノートをご確認ください: https://github.com/argoproj/argo-rollouts/releases/tag/v1.6.0
実務導入事例:freee の Canary Release
freee のエンジニアチームは、月次決算バッチに対して Canary 手法を本番環境で採用し、デプロイの安全性と速度を同時に向上させました。以下は導入フローと定量的成果です。
- GitOps パイプライン構築
mainブランチへのプッシュが Argo CD により自動同期され、ApplicationSet が環境ごとのマニフェストを生成。 |- Rollout CR の作成
- Canary ステップは 5 % → 20 % → 100 % と段階的に増加し、Prometheus メトリクスでエラー率 (
http_errors_rate) を監視。 | - 自動ロールバック設定
AnalysisTemplateがエラーレート 0.2 % 超過を検知すると即座に前バージョンへロールバック。 |
成果
- デプロイ失敗率が 30 %削減(freee 公式エンジニアブログ)
- リリース作業時間が従来の 1/3 に短縮
出典: freee 公式発表 https://developers.freee.co.jp/entry/introduced-canary-release-with-argo-cd-and-rollouts(2025‑12 公開)。
機能比較表
Argo CD と Argo Rollouts の役割・運用コストを横断的に把握できるよう、主要項目でまとめました。
| 項目 | Argo CD | Argo Rollouts |
|---|---|---|
| 主な役割 | Git リポジトリとクラスタ状態の 同期管理 | Canary / Blue‑Green など 段階的リリース の実装 |
| 学習コスト | 中程度(Kustomize/Helm 基礎必須) | 低〜中(CRD と AnalysisTemplate の概念) |
| 運用負荷 | Git コミットで自動同期、UI で可視化 | メトリクス収集とテンプレート保守が必要 |
| 自動ロールバック | 手動設定または外部ツール依存 | AnalysisTemplate による 完全自動 |
| 推奨ユースケース | マルチクラスター・マルチテナント環境の一元管理 | 高可用性が求められるサービスの段階的リリース |
併用パターンとベストプラクティス
Argo CD が全体状態を管理し、個々の Application に Rollout CR を埋め込む構成は、GitOps と Progressive Delivery のシナジーを最大化します。以下に実装例を示します。
サンプルマニフェスト(ApplicationSet)
ApplicationSet が各クラスター向けの Application 定義と Rollout CR を同時に生成します。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
apiVersion: argoproj.io/v1alpha1 kind: ApplicationSet metadata: name: finance-apps spec: generators: - git: repoURL: https://github.com/your-org/finance-manifests.git revision: HEAD directories: - path: environments/{{cluster}} # cluster は環境変数で置換 template: metadata: name: '{{path.basename}}-{{cluster}}' spec: project: default source: repoURL: https://github.com/your-org/finance-manifests.git targetRevision: HEAD path: '{{path}}' destination: server: '{{clusters[cluster].server}}' namespace: production syncPolicy: automated: prune: true selfHeal: true |
Rollout と AnalysisTemplate の例
Canary リリースとエラーレート監視を組み合わせた実装です。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
apiVersion: argoproj.io/v1alpha1 kind: AnalysisTemplate metadata: name: error-rate-check spec: metrics: - name: http-errors interval: 30s successCondition: result < 0.2 # エラーレート 0.2% 未満で成功 provider: prometheus: address: http://prometheus.monitoring.svc:9090 query: | sum(rate(http_requests_total{status=~"5.."}[1m])) / sum(rate(http_requests_total[1m])) * 100 --- apiVersion: argoproj.io/v1alpha1 kind: Rollout metadata: name: finance-api spec: replicas: 4 strategy: canary: steps: - setWeight: 5 - pause: {duration: 2m} - analysis: templateRef: name: error-rate-check - setWeight: 20 - pause: {duration: 3m} - analysis: templateRef: name: error-rate-check - setWeight: 100 selector: matchLabels: app: finance-api template: metadata: labels: app: finance-api spec: containers: - name: api image: ghcr.io/your-org/finance-api:{{imageTag}} ports: [{containerPort: 8080}] |
この構成により、Git の PR がマージされるだけで Canary テストが自動開始し、Prometheus アラート条件を満たすと即座にロールバックします。
導入時の注意点と他ツール比較
落とし穴と対策
| 落とし穴 | 原因 | 対策 |
|---|---|---|
| RBAC 設定ミスで Argo CD がリソース取得できない | ServiceAccount に必要権限が付与されていない | argocd-admin ロールを作成し、applicationsets.argoproj.io の get/list/watch を許可 |
| Metrics Server 未導入で Rollouts の分析が失敗 | クラスタに Metrics Server が無いか Prometheus と連携できていない | kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml を実行し、ServiceDiscovery 設定を確認 |
| Ingress / Service Mesh のトラフィック制御プラグイン未設定 | Canary/Blue‑Green が利用する VirtualService 等が未作成 | argo-rollouts-plugin-trafficrouter(Istio, Nginx, ALB など)を導入し、CRD に router 設定を追加 |
| AnalysisTemplate のクエリミス | Prometheus クエリ文法エラーやラベル不一致 | promtool test rules で事前検証、または UI の「Run Analysis」機能で手動テスト |
他ツールとの簡易比較
| 項目 | Argo CD + Rollouts | Spinnaker | Flux CD + Flagger |
|---|---|---|---|
| 主な役割 | GitOps と Progressive Delivery の統合 | フルスタック CI/CD(パイプライン中心) | GitOps + Canary(Flagger) |
| 宣言的インフラ管理 | ◎(ApplicationSet) | △(Pipeline 設定が中心) | ◎(Kustomize / Helm) |
| メトリクスベース自動プロモーション | ◎(AnalysisTemplate) | ○(外部プラグイン必要) | ◎(Flagger の MetricProvider) |
| 学習コスト | 中程度 | 高い(独自 DSL と UI が多層) | 低〜中 |
| コミュニティ活性度(2026‑03) | 大規模・急成長 | 減少傾向 | 安定的に拡大 |
| 推奨ユースケース | 複数クラスターで GitOps+段階的リリースが必須の場合 | 大規模マルチクラウドでエンドツーエンド CI/CD が必要な場合 | シンプル K8s クラスタで Canary を手軽に導入したい場合 |
まとめ
- Argo CD は Git リポジトリと Kubernetes の状態を同期させ、ApplicationSet によるマルチ環境展開が得意です。
- Argo Rollouts は Canary/Blue‑Green といった段階的リリース手法を宣言的に実装し、AnalysisTemplate でメトリクス駆動の自動ロールバックを提供します。
- 最新リリース(2025‑12〜2026‑03)では、ApplicationSet のプラグイン拡張や Prometheus アラート組み込みなど、運用柔軟性が大幅に向上しました。公式リリースノートと CNCF のドキュメントを参照すれば、根拠のある情報で導入判断が可能です。
- freee の実装事例は、エラー率 30 % 削減・作業時間 1/3 短縮という具体的成果を示しており、ビジネスインパクトの大きさが裏付けられています(公式発表参照)。
- ベストプラクティス は Argo CD が全体状態管理、Rollouts がリリース戦略を担う構成です。サンプルマニフェストを基に PoC を実施すれば、数日で本番レベルの GitOps パイプラインが構築できます。
- 導入時は RBAC、Metrics Server、トラフィック制御プラグインの設定漏れに注意し、Spinnaker や Flux + Flagger との機能・コスト比較を行って自組織に最適なツールチェーンを選定してください。
参考リンク一覧
- Argo CD 公式ドキュメント: https://argo-cd.readthedocs.io/en/stable/
- Argo CD v2.9 リリースノート(2025‑12): https://github.com/argoproj/argo-cd/releases/tag/v2.9.0
- Argo Rollouts 公式ドキュメント: https://argoproj.github.io/argo-rollouts/
- Argo Rollouts 1.6 リリースノート(2025‑12〜2026‑03): https://github.com/argoproj/argo-rollouts/releases/tag/v1.6.0
- freee エンジニアブログ(Canary Release 導入事例): https://developers.freee.co.jp/entry/introduced-canary-release-with-argo-cd-and-rollouts
- CNCF Blog – GitOps のベストプラクティス: https://www.cncf.io/blog/gitops-best-practices/
- Prometheus クエリ言語リファレンス: https://prometheus.io/docs/prometheus/latest/querying/basics/