upgrading-chart について
Chainloop プロジェクトの PostgreSQL と Vault の Bitnami Helm chart 依存関係を更新するスキルです。指定イメージの更新と chart のマイナーバージョン更新に対応し、メジャー更新は停止して手動確認を求めます。
主な機能
- 01コンテナイメージの指定バージョン更新
- 02chart のマイナーバージョン更新
- 03メジャー更新の停止
- 04バージョン互換性の確認
- 05Helm lint とテンプレート検証
- 06ロールバック手順
活用シーン
- 01PostgreSQL イメージバージョンの更新
- 02Vault chart の現行メジャー内での更新
- 03Chainloop chart 依存関係の変更検証
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ chainloop-dev/ chainloop --skill upgrading-chartインストール後、Claude Code で/upgrading-chartを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
chart-upgrade-process.mdfiles-modified.mdimage-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 を除く)。
プロセス
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 を参照してください。
概要:
- Bitnami Containers で対象のコンテナイメージを探します
- リリースメッセージのパターンに一致するコミットを探します
- Dockerfile から APP_VERSION を取得します
deployment/charts/<chart-name>/Chart.yamlの appVersion を更新します.github/workflows/build_external_container_images.yamlのコミットハッシュを更新します
種類 2:チャートのマイナーバージョンのアップグレード
詳しい手順は、chart-upgrade-process.md を参照してください。
概要:
- Bitnami Charts の CHANGELOG.md で対象のチャートバージョンを探します
- マイナーバージョンのみのアップグレードであることを検証します
- 対象のチャートをダウンロードして展開します
- イメージの変更を確認します(Chart.yaml を比較します)
- イメージが変更されている場合は、コンテナイメージの参照を更新します
- チャートの更新をベンダリングします(ファイルをコピーします)
- 正しい順序で依存関係を更新します
- メインチャートの依存関係のバージョンを更新します
- 一時ファイルを削除します
検証
どちらの種類のアップグレードでも、実行します。
# 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 リポジトリにあります