在 GitLab 迁移过程中,如果未正确迁移或替换 gitlab-secrets.json
文件,会导致一些与加密相关的数据和功能失效,例如:
- CI/CD Runner Token 失效:CI/CD 相关的 runner token 无法匹配,导致构建失败或需要重新注册 GitLab Runner。
- API Token 和 Access Token 失效:用户的 API 访问令牌、OAuth 令牌、Webhooks 等失效,导致项目与外部服务(如自动化脚本、GitLab CI 任务、外部系统集成)失去连接。
- Repository 的 SSH 密钥无法解密: GitLab 实例使用 SSH 密钥与仓库交互,迁移后由于无法解密这些密钥,Git 操作(如 push、pull)可能会失败。
GitLab gitlab-secrets.json
文件未迁移的常见报错:
- 500 错误:当访问 GitLab 的 Webhooks 或 CI/CD 相关页面时,可能会出现 500 Internal Server Error,提示无法读取或验证 token。
- Invalid Token 错误:GitLab Web 界面或 API 返回 "Invalid token" 错误。
- Runner Authentication Failed:CI 任务启动时,GitLab Runner 无法正确认证,出现
Runner authentication failed
错误。
替换 gitlab-secrets.json
的步骤:
- 备份旧服务器的
gitlab-secrets.json
: 在旧的 GitLab 服务器上,找到并备份/etc/gitlab/gitlab-secrets.json
文件:
cp /etc/gitlab/gitlab-secrets.json /path/to/backup/gitlab-secrets.json
- 将备份文件复制到新服务器: 在新的 GitLab 服务器中,将备份的
gitlab-secrets.json
文件复制到/etc/gitlab/
目录下:
scp /path/to/backup/gitlab-secrets.json root@new-gitlab-server:/etc/gitlab/
- 替换新的
gitlab-secrets.json
: 覆盖新服务器上已经生成的gitlab-secrets.json
:
mv /etc/gitlab/gitlab-secrets.json /etc/gitlab/gitlab-secrets.json.bak
cp /path/to/backup/gitlab-secrets.json /etc/gitlab/gitlab-secrets.json
- 验证文件完整性: 使用
md5sum
检查文件是否一致:
md5sum /etc/gitlab/gitlab-secrets.json
- 重新加载配置并重启 GitLab 服务:
-
- 重新加载 GitLab 配置文件:
gitlab-ctl reconfigure
-
- 重启 GitLab 服务:
gitlab-ctl restart
通过这些步骤替换 gitlab-secrets.json
文件后,GitLab 应该可以恢复对所有加密数据(如 tokens、webhooks、runner 等)的正常访问。如果不进行此操作,GitLab 会无法解密 token,导致相关功能出现故障,通常表现为 token 无法验证或 API 调用失败等问题。