华为云 SWR 镜像管理:版本命名、跨区域同步与老化规则的安全边界
为什么镜像仓库也需要发布策略
流水线每天生成镜像,仓库容量会不断增长。但清理不是简单保留最新几个版本:正在运行的容器不代表以后不需要重新拉取旧镜像。节点故障重建、工作负载扩容与版本回滚,都可能再次访问仓库。本文根据官方文档整理管理思路,不声称已经做过生产环境验证。
一、把版本标签与发布记录关联
建议每次构建使用唯一版本标签,如 build-20261107-001,并在发布记录中保存代码提交、构建任务、镜像摘要与目标环境。不要仅用 latest 描述生产版本;同一标签可能指向不同内容,排障时很难回答“运行的到底是哪一次构建”。重要发布可用摘要明确引用内容,但前提是对应内容仍保留在仓库中。
回滚清单应同时记录当前版本、上一稳定版本和仍在维护的分支版本。不能仅凭发布时间判断某个镜像已经无用。
二、跨区域同步不等于历史镜像迁移
SWR 基础版官方说明:自动同步面向后续推送或更新的版本,已有镜像需要手动同步。配置同步规则后,不能默认历史版本已全部到达目标区域。
同名同版本冲突时,“覆盖”选项会决定替换目标版本还是取消同步并提示已存在。如果生产环境复用相同标签,覆盖会改变目标内容;更稳妥的方式是使用唯一标签,按同步记录验证版本、状态与目标区域,再更新部署配置。同步配置完成不代表同步任务已经成功。
三、基础版老化:例外规则要先设计
基础版支持按存活时间或版本数清理,一个镜像只支持一个老化规则。官方文档特别提示:添加成功后系统会立即查询并清理符合条件的镜像。因此不能把“创建规则”当作无副作用的预览。
特定版本可用过滤标签或过滤正则排除在老化范围之外。例如保留稳定发布版本时,应先列出准确的标签,测试匹配结果,再考虑扩大范围。官方还提示正则表达式中使用“或”时应加括号;不要把未经测试的表达式直接应用到生产镜像。
基础版老化日志只保留近三个月可查看记录,若需要长期审计,应另外保留发布记录和变更审批记录。
四、企业版不是基础版规则的简单复制
企业版支持在命名空间下配置老化规则,并组合多个子规则,可按最近推送、最近拉取的版本数或天数设置保留条件。官方说明每个命名空间仅允许一个规则,每个规则包含一至十五个子规则。
企业版提供模拟执行,用于检查结果而不实际清理。首次应用或修改规则后,应先模拟,核对候选版本,再执行真实清理。企业版的范围匹配语法不要直接照搬基础版过滤正则;应按对应版本文档解释参数。
五、清理前的五项核对
- 列出所有运行环境的镜像引用,而不只是生产主集群。
- 保留明确的回滚版本及仍在维护的分支版本。
- 核查跨区域同步记录,确认备用区域确实拥有所需版本。
- 理解规则生效时机:基础版创建后会立即清理,企业版可先模拟。
- 明确谁可以修改规则,保留变更原因及清理结果。
六、一个示例管理流程
构建时产生唯一标签并保存摘要;测试通过后将同一制品提升到发布阶段;跨区域同步完成后核对记录;发布系统保存当前和上一稳定版本;最后才对没有引用且不在保留清单的历史构建实施老化。这里的保留数量与周期需要按发布频率和恢复目标确定,不能直接套用统一数字。
镜像保留与宿主机 Docker 缓存清理是两件事。删除本地缓存可能只增加下一次构建耗时,而删除仓库中的回滚镜像可能让恢复流程失效。两者不应共用一套“越少越好”的标准。
参考资料
本文依据以下华为云官方文档,具体功能以所用区域和版本为准:
- 点赞
- 收藏
- 关注作者
评论(0)