mcpField
U
upgrading-chart

upgrading-chart

github.com/chainloop-devクラウド・DevOps60738 回インストール今日更新
リポジトリ

upgrading-chart について

Chainloop プロジェクトの PostgreSQL と Vault の Bitnami Helm chart 依存関係を更新するスキルです。指定イメージの更新と chart のマイナーバージョン更新に対応し、メジャー更新は停止して手動確認を求めます。

主な機能

  1. 01コンテナイメージの指定バージョン更新
  2. 02chart のマイナーバージョン更新
  3. 03メジャー更新の停止
  4. 04バージョン互換性の確認
  5. 05Helm lint とテンプレート検証
  6. 06ロールバック手順

活用シーン

  1. 01PostgreSQL イメージバージョンの更新
  2. 02Vault chart の現行メジャー内での更新
  3. 03Chainloop chart 依存関係の変更検証

インストール

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

$npx skills add https://github.com/chainloop-dev/chainloop --skill upgrading-chart

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

同梱ファイル

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

chart-upgrade-process.md
files-modified.md
image-upgrade-process.md

詳細

Helm チャートの依存関係のアップグレード

このスキルは、Chainloop プロジェクトの Helm チャート依存関係のアップグレードプロセスを自動化します。PostgreSQL と Vault(どちらも Bitnami チャート)に対応しています。

重大な制限事項

バージョンアップグレードのルール:

  • パッチアップグレード(1.2.3 → 1.2.4):許可
  • マイナーアップグレード(1.2.x → 1.3.x):許可
  • メジャーアップグレード(1.x.x → 2.x.x):禁止 — 直ちに停止

必須:メジャーバージョンのアップグレードが検出された場合は、プロセスを停止し、手動でのレビューが必要であることをユーザーに伝えてください。

アップグレードの種類

このスキルでは、次の 2 種類のアップグレードに対応しています。

  1. 特定のイメージのアップグレード:コンテナイメージを特定のバージョンに更新します(チャートは変更しません)
  2. チャートのマイナーバージョンのアップグレード:チャートを最新のマイナーバージョンに更新します(イメージの更新を含む場合があります)

重要:コンテナイメージはチャートのアップグレードの一部としてのみ更新され、単独で更新されることはありません(種類 1 を除く)。

プロセス

1. アップグレードの種類を特定する

ユーザーに希望するアップグレードの種類を尋ねます。

  • 種類 1:特定のイメージバージョンへのアップグレード
  • 種類 2:最新のマイナーバージョンのチャートへのアップグレード

また、対象のチャートが postgresql または vault のどちらかを尋ねます。

2. アップグレード前の検証

現在の状態を確認します。

cat deployment/chainloop/charts/<chart-name>/Chart.yaml | grep "^version:"
cat deployment/chainloop/charts/<chart-name>/Chart.yaml | grep "^appVersion:"
3. バージョンの互換性チェック

バージョンを変更する場合は、メジャーバージョンが変わらないことを検証します。

CURRENT_MAJOR=$(echo "$CURRENT_VERSION" | cut -d. -f1)
TARGET_MAJOR=$(echo "$TARGET_VERSION" | cut -d. -f1)

if [ "$CURRENT_MAJOR" != "$TARGET_MAJOR" ]; then
    echo "FORBIDDEN: Major version upgrade detected"
    exit 1
fi

メジャーバージョンのアップグレードが検出された場合は、停止してエスカレーションしてください。

種類 1:特定のイメージのアップグレード

詳しい手順は、image-upgrade-process.md を参照してください。

概要:

  1. Bitnami Containers で対象のコンテナイメージを探します
  2. リリースメッセージのパターンに一致するコミットを探します
  3. Dockerfile から APP_VERSION を取得します
  4. deployment/charts/<chart-name>/Chart.yaml の appVersion を更新します
  5. .github/workflows/build_external_container_images.yaml のコミットハッシュを更新します

種類 2:チャートのマイナーバージョンのアップグレード

詳しい手順は、chart-upgrade-process.md を参照してください。

概要:

  1. Bitnami Charts の CHANGELOG.md で対象のチャートバージョンを探します
  2. マイナーバージョンのみのアップグレードであることを検証します
  3. 対象のチャートをダウンロードして展開します
  4. イメージの変更を確認します(Chart.yaml を比較します)
  5. イメージが変更されている場合は、コンテナイメージの参照を更新します
  6. チャートの更新をベンダリングします(ファイルをコピーします)
  7. 正しい順序で依存関係を更新します
  8. メインチャートの依存関係のバージョンを更新します
  9. 一時ファイルを削除します

検証

どちらの種類のアップグレードでも、実行します。

# Lint charts
helm lint deployment/charts/<chart-name>
helm lint deployment/chainloop

# Template validation
helm template deployment/charts/<chart-name>
helm template deployment/chainloop

# Local testing
cd devel && docker compose up

# Verify image consistency
grep -r "appVersion\|image.*tag" deployment/charts/<chart-name>/

変更するファイル

完全な一覧は、files-modified.md を参照してください。

トラブルシューティング

よくある問題:

  • イメージバージョンの不一致:APP_VERSION が Chart.yaml の appVersion と一致していることを確認します
  • ビルドの失敗:ビルドワークフローのコミット参照を確認します
  • 依存関係の競合:依存関係が正しい順序(最初にベンダリングされたチャート、次にメインチャート)で更新されていることを確認します

ロールバック

問題が発生した場合:

git checkout HEAD -- deployment/
find deployment/ -name "Chart.lock" -delete
cd deployment/chainloop && helm dependency build
cd ../../devel && docker compose down && docker compose up

重要な注意事項

  • Dex は独自に管理されており、別のプロセスに従います(このスキルの対象外です)
  • 再現性を確保するため、常にコミットハッシュを使用してください
  • 依存関係は正しい順序で更新する必要があります。最初にベンダリングされたチャートを更新し、次にメインチャートを更新してください
  • コンテナイメージは Bitnami Containers リポジトリにあり、チャートは Bitnami Charts リポジトリにあります

コメント