mcpField
H
helm-release-recovery

helm-release-recovery

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

helm-release-recovery について

デプロイ失敗や停止・破損したリリースに対応する運用者向けの Helm 復旧スキルです。ロールバック、リリース履歴と状態の確認、復旧シナリオを扱います。

主な機能

  1. 01直前または指定リビジョンへのロールバック
  2. 02リリース履歴と状態の確認
  3. 03pending 状態のリリースへの対処
  4. 04破損したリリース状態のクリーンアップ
  5. 05簡潔な Helm・kubectl コマンドの提示

活用シーン

  1. 01アップグレード失敗後のリリース復旧
  2. 02pending-install または pending-upgrade の復旧
  3. 03ロールバック前のリビジョン確認
  4. 04部分デプロイや破損状態のクリーンアップ

インストール

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

$npx skills add https://github.com/laurigates/claude-plugins --skill helm-release-recovery

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

同梱ファイルREFERENCE.md

詳細

Helm リリースの復旧

Helm デプロイの失敗からの復旧、リリースのロールバック、停止中または破損したリリース状態の管理に関する包括的なガイダンスです。

このスキルを使用するタイミング

次の場合にこのスキルを使用します...次の場合は代わりにを使用します...
失敗した helm upgrade をロールバックする、または以前のリビジョンに戻す問題が発生していない通常のインストール/アップグレード/アンインストールには、helm-release-managementを使用します
停止中の pending-install または pending-upgrade 状態を解除する根本原因がテンプレート、値、またはレンダリングされたマニフェストにある場合は、helm-debuggingを使用します
破損したリリースシークレットや不完全なデプロイをクリーンアップする復旧のために個々のポッドやノードの確認が必要な場合は、kubectl-debuggingを使用します

使用するタイミング

次の場合は、このスキルを自動的に使用します。

  • ユーザーが失敗または問題のあるデプロイのロールバックを必要としている
  • ユーザーが停止中のリリース(pending-install、pending-upgrade)を報告している
  • ユーザーがアップグレードの失敗または不完全なデプロイについて言及している
  • ユーザーが破損したリリース状態からの復旧を必要としている
  • ユーザーがリリース履歴を表示したい
  • ユーザーが失敗したリリースのクリーンアップを必要としている

主な復旧操作

以前のリビジョンにロールバックする
# Rollback to previous revision (most recent successful)
helm rollback <release> --namespace <namespace>

# Rollback to specific revision number
helm rollback <release> 3 --namespace <namespace>

# Rollback with wait and atomic behavior
helm rollback <release> \
  --namespace <namespace> \
  --wait \
  --timeout 5m \
  --cleanup-on-fail

# Rollback without waiting (faster but less safe)
helm rollback <release> \
  --namespace <namespace> \
  --no-hooks

主なフラグ:

  • --wait - リソースの準備が完了するまで待機します
  • --timeout - 待機する最大時間(デフォルトは5m)
  • --cleanup-on-fail - ロールバックに失敗した場合、新しいリソースを削除します
  • --no-hooks - ロールバックフックの実行をスキップします
  • --force - 削除/再作成によってリソースの更新を強制します
  • --recreate-pods - 該当する場合、リソースのポッドを再起動します
リリース履歴を表示する
# View all revisions
helm history <release> --namespace <namespace>

# View detailed history (YAML format)
helm history <release> \
  --namespace <namespace> \
  --output yaml

# Limit number of revisions shown
helm history <release> \
  --namespace <namespace> \
  --max 10

履歴の出力フィールド:

  • REVISION:連番のバージョン番号
  • UPDATED:デプロイのタイムスタンプ
  • STATUS:deployed、superseded、failed、pending-install、pending-upgrade
  • CHART:チャート名とバージョン
  • APP VERSION:アプリケーションのバージョン
  • DESCRIPTION:発生した内容(インストール完了、アップグレード完了、X へのロールバック)
リリースのステータスを確認する
# Check current release status
helm status <release> --namespace <namespace>

# Show deployed resources
helm status <release> \
  --namespace <namespace> \
  --show-resources

# Get status of specific revision
helm status <release> \
  --namespace <namespace> \
  --revision 5

よくある復旧シナリオ

シナリオ 1:直近のデプロイに失敗した場合 — シンプルなロールバック

症状:

  • 直近のアップグレード/インストールに失敗した
  • デプロイ後にアプリケーションが動作しない
  • 以前の正常に動作していたバージョンに戻したい

復旧手順:

# 1. Check release status
helm status myapp --namespace production

# 2. View history to identify good revision
helm history myapp --namespace production

# Output example:
# REVISION  STATUS      CHART        DESCRIPTION
# 1         superseded  myapp-1.0.0  Install complete
# 2         superseded  myapp-1.1.0  Upgrade complete
# 3         deployed    myapp-1.2.0  Upgrade "myapp" failed

# 3. Rollback to previous working revision (2)
helm rollback myapp 2 \
  --namespace production \
  --wait \
  --timeout 5m

# 4. Verify rollback
helm history myapp --namespace production

# 5. Verify application health
kubectl get pods -n production -l app.kubernetes.io/instance=myapp
helm status myapp --namespace production
シナリオ 2:リリースが停止中(pending-install/pending-upgrade)

症状:

helm list -n production
# NAME   STATUS          CHART
# myapp  pending-upgrade myapp-1.0.0

復旧手順:

# 1. Check what's actually deployed
kubectl get all -n production -l app.kubernetes.io/instance=myapp

# 2. Check release history
helm history myapp --namespace production

# Option A: Rollback to previous working revision
helm rollback myapp <previous-working-revision> \
  --namespace production \
  --wait

# Option B: Force new upgrade to unstick
helm upgrade myapp ./chart \
  --namespace production \
  --force \
  --wait \
  --atomic

# Option C: If rollback fails, delete and reinstall
# WARNING: This will cause downtime
helm uninstall myapp --namespace production --keep-history
helm install myapp ./chart --namespace production --atomic

# 3. Verify recovery
helm status myapp --namespace production

不完全なデプロイ、破損した履歴、ロールバックの失敗、連鎖障害などの追加の復旧シナリオ、履歴の管理、アトミックなデプロイパターン、復旧のベストプラクティス、トラブルシューティング、CI/CD との連携については、REFERENCE.mdを参照してください。

エージェント向けの最適化

コンテキストコマンド
リリース履歴(JSON)helm history <release> -n <ns> --output json
リリースのステータス(JSON)helm status <release> -n <ns> -o json
リビジョンの値(JSON)helm get values <release> -n <ns> --revision <N> -o json
ポッドのステータス(簡潔な表示)kubectl get pods -n <ns> -l app.kubernetes.io/instance=<release> -o wide
Helm シークレット(一覧)kubectl get secrets -n <ns> -l owner=helm,name=<release> -o json

関連スキル

  • Helm リリース管理 - インストール、アップグレード操作
  • Helm デバッグ - デプロイ失敗のトラブルシューティング
  • Helm 値の管理 - 設定の管理
  • Kubernetes 操作 - デプロイ済みリソースの管理

参考資料

コメント