ArgoCDReview について
ArgoCDReviewは、ArgoCD運用者向けのコマンドラインレビュー・トラブルシューティングスキルです。アプリケーション状態やマニフェスト差分の確認、同期失敗の診断、ロールバックの手順を整理しています。
主な機能
- 01アプリのヘルスと同期状態の確認
- 02稼働中とGitのマニフェスト比較
- 03デプロイ履歴とリソースの確認
- 04同期失敗やリソース異常の診断
- 05同期とロールバック手順の参照
活用シーン
- 01不健全なアプリの原因調査
- 02稼働状態とGitの差分確認
- 03同期失敗や劣化リソースの調査
- 04指定したデプロイ履歴へのロールバック
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ julianobarbosa/ claude-code-skills --skill argocdreviewインストール後、Claude Code で/argocdreviewを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
Tools/.gitkeepWorkflows/DiffManifests.mdReviewApplication.mdReviewResources.mdRollbackApp.mdTroubleshootSync.md詳細
ArgoCDReview - ArgoCD CLI によるレビューとトラブルシューティング
アプリケーションのレビュー、問題の診断、デプロイの管理に使える、包括的な ArgoCD CLI コマンドです。
このスキルでは、ArgoCD アプリケーションの状態を調べ、ライブマニフェストと Git の内容を比較し、デプロイ履歴を確認して、同期の失敗をトラブルシューティングするための構造化されたコマンドを提供します。
前提条件
- ArgoCD CLI がインストールされていること(
argocd) - ArgoCD サーバーにログインしていること:
argocd login <server> - 複数のクラスターを使用する場合、コンテキストが設定されていること
# Verify connection
argocd version
argocd account get-user-info
クイックリファレンスコマンド
アプリケーションのステータス概要
# List all applications with status
argocd app list
# Get detailed app status (health, sync, resources)
argocd app get <app-name>
# Get app status as JSON (for scripting)
argocd app get <app-name> -o json
# Wide output with more columns
argocd app list -o wide
ヘルスと同期のステータス
# Check sync status only
argocd app get <app-name> --show-operation
# List all OutOfSync applications
argocd app list --sync-status OutOfSync
# List all Degraded applications
argocd app list --health-status Degraded
# List applications by project
argocd app list --project <project-name>
ワークフローの振り分け
| ワークフロー | トリガー | ファイル |
|---|---|---|
| ReviewApplication | 「アプリをレビュー」「アプリのステータスを確認」「アプリのヘルス」 | Workflows/ReviewApplication.md |
| DiffManifests | 「アプリの差分」「ライブと期待値を比較」「何が変わったか」 | Workflows/DiffManifests.md |
| TroubleshootSync | 「同期に失敗」「同期されない理由」「同期エラー」 | Workflows/TroubleshootSync.md |
| RollbackApp | 「ロールバック」「デプロイを元に戻す」「以前のバージョン」 | Workflows/RollbackApp.md |
| ReviewResources | 「リソース一覧」「アプリのリソース」「管理対象リソース」 | Workflows/ReviewResources.md |
主なレビュー操作
1. アプリケーションの差分(ライブと期待値)
デプロイ済みの内容と、Git でデプロイ対象として指定されている内容を比較します。
# Show diff between live state and Git
argocd app diff <app-name>
# Show diff with local manifests
argocd app diff <app-name> --local <repo-path>
# Server-side manifest generation (recommended for Helm/Kustomize)
argocd app diff <app-name> --local <repo-root> --server-side-generate
2. アプリケーションマニフェストの表示
# Show desired manifests (from Git)
argocd app manifests <app-name>
# Show live manifests (from cluster)
argocd app manifests <app-name> --source live
# Get specific resource manifest
argocd app get-resource <app-name> \
--kind Deployment \
--name <deployment-name> \
--namespace <namespace>
3. デプロイ履歴
# View deployment history
argocd app history <app-name>
# Output example:
# ID DATE REVISION
# 0 2025-01-10 10:00:00 +0000 UTC abc1234 (HEAD)
# 1 2025-01-09 15:30:00 +0000 UTC def5678 (v1.2.0)
# 2 2025-01-08 09:00:00 +0000 UTC 789abcd (v1.1.0)
4. リソースツリーと詳細
# Show resource tree
argocd app resources <app-name>
# Show resource tree with health status
argocd app resources <app-name> --tree
# Get specific resource details
argocd app get-resource <app-name> \
--resource-name <resource> \
--kind <kind>
同期操作
安全な同期(まずプレビュー)
# Preview what would sync (dry-run)
argocd app sync <app-name> --dry-run
# Sync single application
argocd app sync <app-name>
# Sync and wait for completion
argocd app sync <app-name> --wait
# Sync specific resources only
argocd app sync <app-name> --resource :Service:my-service
argocd app sync <app-name> --resource apps:Deployment:my-deployment
選択的な同期
# Sync by label selector
argocd app sync -l app.kubernetes.io/instance=my-app
# Sync multiple apps
argocd app sync app1 app2 app3
# Sync excluding specific resources
argocd app sync <app-name> --resource '!apps:Deployment:skip-this'
強制同期(注意して使用)
# Force sync (replaces resources)
argocd app sync <app-name> --force
# Force sync with prune (deletes removed resources)
argocd app sync <app-name> --prune --force
# Sync with replace strategy
argocd app sync <app-name> --replace
ロールバック操作
# View history first
argocd app history <app-name>
# Rollback to specific history ID
argocd app rollback <app-name> <history-id>
# Rollback without confirmation
argocd app rollback <app-name> <history-id> --yes
# Rollback and wait for completion
argocd app rollback <app-name> <history-id> --timeout 300
トラブルシューティングコマンド
同期失敗の診断
# Get detailed sync operation status
argocd app get <app-name> --show-operation
# View sync operation result
argocd app get <app-name> -o json | jq '.status.operationState'
# Check for resource errors
argocd app resources <app-name> --tree | grep -E "(Degraded|Progressing|Missing)"
アプリケーションログ
# View logs for app's pods
argocd app logs <app-name>
# Follow logs
argocd app logs <app-name> -f
# Logs for specific container
argocd app logs <app-name> \
--container <container-name>
# Logs for specific group/kind
argocd app logs <app-name> \
--kind Deployment \
--name <deployment-name>
リソースイベント
# Get Kubernetes events for app resources
kubectl get events -n <namespace> --sort-by='.lastTimestamp' | grep <app-name>
よくある診断シナリオ
シナリオ 1:「Progressing」のまま進まないアプリ
# 1. Check what's progressing
argocd app resources <app-name> --tree
# 2. Find stuck resources (usually Deployments)
argocd app get <app-name> -o json | jq '.status.resources[] | select(.health.status == "Progressing")'
# 3. Check pod events
kubectl describe deployment <deployment-name> -n <namespace>
kubectl get pods -n <namespace> | grep <app-name>
シナリオ 2:「OutOfSync」と表示されるが同期されないアプリ
# 1. Check diff
argocd app diff <app-name>
# 2. Check for ignored differences
argocd app get <app-name> -o json | jq '.spec.ignoreDifferences'
# 3. Check sync policy
argocd app get <app-name> -o json | jq '.spec.syncPolicy'
# 4. Force refresh from Git
argocd app get <app-name> --refresh
シナリオ 3:ヘルスステータスが「Degraded」
# 1. Find unhealthy resources
argocd app resources <app-name> --tree
# 2. Get resource details
argocd app get-resource <app-name> \
--kind <kind> \
--name <name>
# 3. Check pod status
kubectl get pods -n <namespace> -l app.kubernetes.io/instance=<app-name>
kubectl describe pod <pod-name> -n <namespace>
複数ソースのアプリケーション
複数のソースを持つアプリケーションの場合:
# Sync with specific source revisions
argocd app sync <app-name> \
--revisions v1.0.0 --source-positions 1 \
--revisions v2.0.0 --source-positions 2
# Sync by source name
argocd app sync <app-name> \
--revisions v1.0.0 --source-names helm-chart \
--revisions main --source-names values-repo
ベストプラクティスのチェックリスト
- 同期の前に、必ず
argocd app diffを実行します - 本番環境での同期操作には
--dry-runを使用します - ロールバックの前にデプロイ履歴を確認します
- ヘルスのトラブルシューティングでは、リソースツリーを確認します
- スクリプトでは JSON 出力を使用します:
-o json - 同期操作には適切なタイムアウトを設定します
例
例 1:失敗しているアプリケーションをレビューする
User: "Why is my-app not healthy?"
→ Run argocd app get my-app --show-operation
→ Check argocd app resources my-app --tree
→ Identify Degraded resources
→ Investigate with kubectl describe
例 2:ライブ状態と期待状態を比較する
User: "What changed in production?"
→ Run argocd app diff my-app
→ Shows line-by-line diff
→ Identify configuration drift
例 3:デプロイ失敗後にロールバックする
User: "Rollback my-app to previous version"
→ Run argocd app history my-app
→ Identify target history ID
→ Run argocd app rollback my-app <id>
→ Verify with argocd app get my-app
関連ツール
- kubectl:クラスターを直接調査するためのツール
- k9s:対話型の Kubernetes ダッシュボード
- stern:複数の Pod のログを追跡するツール
- kubectx/kubens:コンテキストと名前空間を切り替えるツール
コメント
Markdown 対応