关于 upgrading-chart
用于升级 Chainloop 项目中 PostgreSQL 和 Vault 的 Bitnami Helm chart 依赖。支持指定镜像版本更新和 chart 次版本升级;检测到主版本升级时会停止并要求人工审查。
主要功能
- 01指定容器镜像版本升级
- 02Chart 次版本升级
- 03主版本升级拦截
- 04版本兼容性检查
- 05Helm lint 与模板验证
- 06回滚操作说明
适用场景
- 01更新 PostgreSQL 镜像版本
- 02在当前主版本内升级 Vault chart
- 03验证 Chainloop 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 Chart 依赖项
此技能可自动升级 Chainloop 项目中的 Helm chart 依赖项。支持 PostgreSQL 和 Vault(均为 Bitnami chart)。
关键限制
版本升级规则:
- 补丁版本升级(1.2.3 → 1.2.4):允许
- 次版本升级(1.2.x → 1.3.x):允许
- 主版本升级(1.x.x → 2.x.x):禁止 — 立即停止
强制要求:如果检测到主版本升级,请停止流程并告知用户需要进行人工审核。
升级类型
此技能支持两种升级类型:
- 指定镜像升级:将容器镜像更新到指定版本(chart 不变)
- Chart 次版本升级:将 chart 更新到最新次版本(可能包含镜像更新)
重要提示:容器镜像只能作为 chart 升级的一部分进行更新,绝不会单独更新(类型 1 除外)。
流程
1. 确定升级类型
询问用户要执行哪种升级:
- 类型 1:指定镜像版本升级
- 类型 2:最新次版本 chart 升级
同时询问要升级哪个 chart: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 次版本升级
详细步骤请参阅 chart-upgrade-process.md。
摘要:
- 在 Bitnami Charts 的 CHANGELOG.md 中找到目标 chart 版本
- 验证仅执行次版本升级
- 下载并解压目标 chart
- 检查镜像是否有变更(比较 Chart.yaml)
- 如果镜像发生变化,更新容器镜像引用
- 将 chart 更新纳入仓库(复制文件)
- 按正确顺序更新依赖项
- 更新主 chart 的依赖版本
- 清理临时文件
验证
完成任意类型的升级后,运行:
# 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 一致
- 构建失败:检查构建工作流中的提交引用
- 依赖冲突:确认依赖项按正确顺序更新(先更新纳入仓库的 chart,再更新主 chart)
回滚
如果出现问题:
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 由项目自行管理,遵循单独的流程(本技能不涵盖)
- 始终使用提交哈希以确保可复现性
- 必须按正确顺序更新依赖项:先更新纳入仓库的 chart,再更新主 chart
- 容器镜像位于 Bitnami Containers 仓库,charts 位于 Bitnami Charts 仓库
评论
支持 Markdown