GitLab 容器镜像仓库元数据数据库配置指南
概述
在 GitLab 项目中,容器镜像仓库(Container Registry)是一个重要的组件,用于存储和管理 Docker 镜像。传统上,GitLab 使用对象存储来持久化与容器镜像相关的元数据。然而,这种方式在数据访问效率上存在限制,特别是当需要跨多个镜像查询数据时。
从 GitLab 16.4 版本开始引入的元数据数据库功能,通过使用 PostgreSQL 数据库来存储这些元数据,显著提升了性能并增加了新功能。本文将详细介绍如何为 GitLab 容器镜像仓库配置和使用元数据数据库。
元数据数据库的优势
元数据数据库架构支持以下改进和功能:
- 在线垃圾回收:自动删除旧数据,无需停机
- 存储使用可视化:可查看仓库、项目和组的存储使用情况
- 镜像签名:支持容器镜像签名功能
- 仓库移动和重命名:可以更灵活地管理仓库
- 受保护标签:为容器镜像标签提供保护机制
- 性能提升:
- 清理策略执行更高效,能成功清理大型仓库
- 列出仓库标签的性能更好
- 额外功能:
- 显示标签发布时间戳
- 支持按名称以外的属性排序标签
准备工作
在启用元数据数据库前,需要确保:
- 运行 GitLab 17.3 或更高版本
- 准备 PostgreSQL 12 或更高版本的数据库
- 数据库必须可从仓库节点访问
- 备份现有的容器仓库数据
配置步骤
全新安装配置
对于全新安装或首次启用容器仓库的情况:
- 编辑
/etc/gitlab/gitlab.rb
文件,添加数据库连接信息(初始设置为禁用状态)
registry['database'] = {
'enabled' => false,
'host' => '数据库主机地址',
'port' => 5432,
'user' => '数据库用户名',
'password' => '数据库密码',
'dbname' => '数据库名称',
'sslmode' => 'require',
'sslcert' => '证书路径',
'sslkey' => '私钥路径',
'sslrootcert' => 'CA证书路径'
}
- 保存文件并重新配置 GitLab
- 应用数据库迁移
- 再次编辑配置文件,启用数据库
- 保存并重新配置 GitLab
现有仓库迁移
对于已有容器仓库的情况,有两种迁移方法:
一步式迁移(适合小型仓库)
- 在配置中添加数据库部分(保持禁用状态)
- 将仓库设置为只读模式
- 应用数据库迁移
- 运行导入命令
- 启用数据库并关闭只读模式
三步式迁移(推荐大型仓库)
-
预导入仓库(第一步)
- 添加数据库配置(保持禁用)
- 应用数据库迁移
- 运行第一步导入命令
-
导入所有仓库数据(第二步)
- 将仓库设置为只读模式
- 运行第二步导入命令
- 启用数据库并关闭只读模式
-
导入剩余数据(第三步)
- 运行最终迁移步骤
注意事项
- 迁移过程中可能需要较长的只读时间窗口
- 迁移完成后,必须继续使用数据库,不能回退
- 迁移后不能再运行离线垃圾回收
- 确保没有自动化离线垃圾回收任务
- 大型仓库迁移可能需要数小时甚至数天
最佳实践
- 对于大型仓库,建议使用三步式迁移方法
- 迁移前考虑减少仓库存储量以加快过程
- 第一步和第二步之间的间隔应尽可能短
- 确保有足够的数据库资源处理导入过程
- 迁移完成后,利用新功能如在线垃圾回收优化仓库管理
通过合理配置元数据数据库,可以显著提升 GitLab 容器镜像仓库的性能和功能,为团队提供更强大的容器管理能力。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考