Contents
Argo CDとArgo Rolloutsの概要と役割
Kubernetes運用やDevOpsエンジニアにとって、GitOpsワークフロー構築において「何をいつどのように使うか」が課題です。Argo CDはアプリケーションのデプロイを自動化し、Argo Rolloutsはリリース戦略(例:カナリアリリース)を管理するツールとして知られています。両者を組み合わせることで、GitOpsによる自律的な運用が可能になります。
GitOpsワークフローにおける位置付け
- Argo CDの主な役割は、「コードベースでのクラスタ状態管理」です。YAMLファイルに定義されたアプリケーション構成をクラスターと同期させます。
- Argo Rolloutsは「リリース戦略の実行制御」を担当します。カナリアリリースやロールバックなどの複雑なデプロイパターンを扱います。
両ツールの特徴的機能
| ツール | 主な機能 | 対象用途 |
|---|---|---|
| Argo CD | アプリケーション同期・ロールバック・アラート | 基本的なデプロイと運用状態管理 |
| Argo Rollouts | カナリアリリース・グレードアップ・手動承認 | 高可用性やリスク制御が求められる複雑なリリース |
Argo CD v2.9の新機能とRolloutsとの親和性
現在(2023年時点)では、Argo CD v2.9は2023年4月にリリースされています。このバージョンでは、GitOpsワークフローにおける柔軟性が大きく向上しました。特に、カナリアリリースとの連携設計で注目すべき変更点があります。
v2.9リリースの主要アップデート
- Rollouts APIとの統合強化: Argo CDがRolloutsのリソース(例:
RolloutやAnalysisRun)を直接操作できるようになりました。これにより、WebUI経由でのカナリアリリース管理が可能になります。 - GitOpsイベントの拡張:
gitops.eventという新イベントタイプが追加され、Rolloutsのステータス変化を自動検知・反映する仕組みが整いました。 - UI操作パネルの刷新: アプリケーションデプロイとRollouts管理を一画面で扱えるようになり、運用効率が向上しています。
Rollouts連携向けの設計変更
- Kustomizeベースの定義サポート(
kustomize.argo.rollouts拡張)により、RolloutsリソースをGitOpsレポジトリに統合しやすくなりました。 argocd.argoproj.io/rollout-nameのようなカスタムアノテーションが導入され、Argo CDからRolloutsリソースの参照が可能になりました。
注意: MermaidフローチャートにおけるHealth Checkの記述は、Rolloutsの最新仕様(2024年1月時点)と整合性があるか再確認が必要です。現状の説明は「AnalysisRunのステータス監視」に焦点を当てています。
WebUI経由でのRollouts操作設定
Argo RolloutsのWebUIによる操作は、RBAC設定を正しく構成しないと制限されます。公式ドキュメントに記載された手順に基づく実装例を紹介します。
RBAC制御のベストプラクティス
権限を細かく制限することで、誤操作リスクを最小化できます。
- 必要なRole:
argo-rollouts:rollout-manage(Rolloutsリソースの作成・更新許可) - RoleBindingの対象ユーザー: Kubernetesクラスター内でのロール(例:
system:serviceaccounts:argocd:argo-cd)
上記サンプルでは、Namespaceは
argocdに指定し、ServiceAccount名をargo-cdとした。実環境ではクラスタ構成に応じて変更が必要。
UI操作フローの手順
- Argo CD WebUIで「アプリケーション」リストから対象リソースを選択。
- 右側パネルで「Rollouts」タブを開き、カナリアリリースを実行またはロールバックします。
- 「分析ステータス」をクリックすることで、
AnalysisRunの詳細(例:Health Check結果)が確認可能です。
カナリアリリースにおける役割分担
カナリアリリースは、Argo CDとRolloutsの連携で実現されます。それぞれのツールが担当する領域を明確にします。
Argo CDのアプリケーション管理
- デプロイ対象のバージョン管理: GitOpsレポジトリ内のYAMLファイルで、新旧バージョンを定義。
- 同期状態監視: Rolloutsリソースがクラスターと一致するかを監視し、不一致があれば自動修正。
Rolloutsによるグレードアップ戦略
| 作業 | Argo CDの役割 | Argo Rolloutsの役割 |
|---|---|---|
| 新バージョンの適用 | リソース定義をクラスターに反映 | バージョン切り替え・トラフィック制御 |
| 健康状態監視 | アラート発信 | 自動リトライ/ロールバック判定 |
GitOpsワークフロー構築時の連携シナリオ
Argo CDとRolloutsを組み合わせた典型的なGitOpsワークフローを解説します。カナリアリリースを含む複雑なケースまで想定しました。
自動デプロイと手動承認の統合
- GitOpsレポジトリに
rollout.yamlをコミット。 - Argo CDが変更を検知し、Rolloutsリソースを作成。
- 承認フロー(例:Slack通知 + チーム承認)で手動ステップを経た後、カナリアリリース開始。
イベント駆動型の更新フロー
|
1 2 3 4 5 6 7 8 9 |
graph TD A[Gitプッシュ] --> B(Argo CDによる変更検知) B --> C{Rolloutsリソース作成} C --> D[自動的にカナリアリリース開始] D --> E[トラフィックを10%ずつ移行] E --> F{Health Check成功?} F -->|はい| G[完全リリースへ] F -->|いいえ| H[ロールバック実施] |
上記フローチャートにおける「Health Check」の処理フローは、Rollouts v0.25以降の仕様に基づいています。最新版では
AnalysisRunのカスタムメトリクスの追加が可能となっています。
現場での選定基準と導入アドバイス
両ツールの比較結果をもとに、導入時の設計ポイントを整理します。
要件に合ったツールチョイスのポイント
- 単純なデプロイが主な目的なら:Argo CDのみで十分。
- 複雑なリリース戦略(カナリア、グレードアップなど)が必要な場合:Argo Rolloutsとの連携が必須。
公式ドキュメント活用法
- Argo CD v2.9の新機能は公式ドキュメントで確認。
- Rolloutsのカナリアリリース手順はRollouts GitHubに詳細が記載されています。
導入検討中の方は、最新バージョンの公式ドキュメントを参照しつつ、自社要件に合ったツール選定を行ってください。