mcpField
A
ArgoCDReview

ArgoCDReview

github.com/julianobarbosaクラウド・DevOps1462 回インストール2 日前に更新
リポジトリ

ArgoCDReview について

ArgoCDReviewは、ArgoCD運用者向けのコマンドラインレビュー・トラブルシューティングスキルです。アプリケーション状態やマニフェスト差分の確認、同期失敗の診断、ロールバックの手順を整理しています。

主な機能

  1. 01アプリのヘルスと同期状態の確認
  2. 02稼働中とGitのマニフェスト比較
  3. 03デプロイ履歴とリソースの確認
  4. 04同期失敗やリソース異常の診断
  5. 05同期とロールバック手順の参照

活用シーン

  1. 01不健全なアプリの原因調査
  2. 02稼働状態とGitの差分確認
  3. 03同期失敗や劣化リソースの調査
  4. 04指定したデプロイ履歴へのロールバック

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/julianobarbosa/claude-code-skills --skill argocdreview

インストール後、Claude Code で/argocdreviewを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

Tools/
.gitkeep
Workflows/
DiffManifests.md
ReviewApplication.md
ReviewResources.md
RollbackApp.md
TroubleshootSync.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:コンテキストと名前空間を切り替えるツール

コメント