自建 GitLab 自动备份保存到远程 S3 对象存储服务器,以 MinIO 为例

自建 GitLab 的备份很简单,使用命令 gitlab-backup create 即可,但是如果想要更方便的话,就可以配置定期自动备份到远程对象存储服务器上,因为现在使用对象存储很多很方便,而且我维护了自己的 MinIO 社区对象存储服务器,所以自然而然想到每日自动备份到 MinIO 服务器。

自动备份到 S3 (MinIO)对象存储

GitLab 的配置选项主要在 /etc/gitlab/gitlab.rb 这个文件中,选项非常丰富,提供了很多不同的设置内容,也很容易出错,一旦出错就会重配置(gitlab-ctl reconfigure)失败,所以我建议一小节一小节的修改,本次只做 S3 备份有关的修改。首先在 /etc/gitlab/gitlab.rb 中找到 backup_upload 段落,请注意,gitlab.rb 中有很多章节都是 S3 有关的配置,我们这里只是备份文件上传到对象存储,所以涉及到的配置段是 backup_upload

因为 MinIO的格式跟 AWS 略有不同,不同软件和场景的兼容配置写法也有所不同,我经过几次试错,测试下列配置是有效的。(参考:https://gist.github.com/ansemjo/322093d6daea0ffda7f236b2edfb44b9)

gitlab_rails['backup_upload_connection'] = {
  'provider' => 'AWS',
  'aws_access_key_id' => '替换为你的 access_key_id',
  'aws_secret_access_key' => '替换为你的 secret_access_key',
  'endpoint' => '替换为你的自建 MinIO endpoint, 端口默认9000',
  'path_style' => true
}
gitlab_rails['backup_upload_remote_directory'] = '替换为你的 bucket名字'
gitlab_rails['backup_multipart_chunk_size'] = 104857600000 (最大文件尺寸,如果不确定,可以复制我的)

下面是我的配置文件


修改完配置文件,保存退出,运行下列命令重配置生效
gitlab-ctl reconfigure

出现下列文字 gitlab Reconfigured 说明重配置成功。

最后运行下列命令启动备份
gitlab-backup create

上传到远端服务器成功

并且到自己的 MinIO 服务器检查确实收到备份文件,说明配置成功,如果有需要可以配置一个 cronjob 每天自动备份。大功告成,不过请注意,gitlab 的备份文件除了这个 tar 包,还包括两个配置文件,gitlab.rb 和 gitlab-secrets.json 不要漏了。

发表回复