Skip to content

关于 GitLab

GitLab 是全球知名的一体化 DevSecOps 平台,功能涵盖整个软件开发生命周期。由于支持私有化部署,因此在国内外有数千万用户。GitLab 支持将对象存储作为数据存储后端,其中就包括 MinIO。由于 RustFS 是 MinIO 的完全平替,因此可以将 RustFS 配置为 GitLab 的对象存储后端。

前提条件

在 GitLab 中配置 RustFS

创建 RustFS 存储桶

可以为 GitLab 的不同功能(支持将数据存储在对象存储中的功能)创建不同的存储桶,比如 artifactsci-secure-filesdependency-proxyexternal-diffslfspackagespagesterraform-stateuploads。RustFS 存储桶的创建可参考 RustFS 存储桶管理章节。

gitlab bucket creation

修改 gitlab.rb 配置文件

GitLab 中关于对象存储的配置都在文件 gitlab.rb(默认为 /etc/gitlab/gitlab.rb)中。以 packages 后端配置为例,配置信息如下:

ruby
gitlab_rails['packages_enabled'] = true # 启动 packages 功能
gitlab_rails['packages_object_store_enabled'] = true # 为 packages 启动对象存储
gitlab_rails['packages_object_store_proxy_download'] = false
gitlab_rails['packages_object_store_remote_directory'] = "packages" # 远端存储对象对应的存储桶
gitlab_rails['packages_object_store_connection'] = {
    'provider' => 'AWS', #对象存储 provider,暂时为 AWS
    'endpoint' => 'http://example.rustfs.com:9000',
    'region' => 'cn-east-1', # rustfs 的 Region 默认为 `cn-east-1`
    'aws_access_key_id' => 'aws_access_key_id', # rustfs access key
    'aws_secret_access_key' => 'aws_secret_access_key', # rustfs secret key
    'path_style' => true,
    'enable_signature_v4_streaming' => false,
    'host' => 'example.rustfs.com',
}

重点包括以下几个参数:

  • packages_object_store_enabled:是否启用对象存储,true 代表启动,false 代表禁用。只有这个参数为 true后面的配置才会生效。
  • packages_object_store_remote_directory:RustFS 实例上的存储桶名称。
  • packages_object_store_connection:RustFS 实例的链接信息,主要包括 RustFS 实例地址、访问令牌等。

修改完配置以后,执行 reconfigure 命令,让配置生效:

bash
sudo gitlab-ctl reconfigure

对于 artifactsci-secure-filesdependency-proxyexternal-diffslfspagesterraform-stateuploads 的配置都类似,在此不做赘述。切记,修改配置以后要执行 sudo gitlab-ctl reconfigure 让配置生效。

配置验证

使用 GitLab 相应功能后,数据就会存储到后端配置的 RustFS 存储桶中。以上一步中的 packages 为例,上传一个 Docker 容器镜像到 GitLab 项目镜像仓库:

bash
# 登录 GitLab 内置容器镜像仓库
docker login example.gitlab.com:5050

# 构建容器镜像
docker build -t example.gitlab.com/rustfs/rusts .

# 推送到 GitLab 内置的容器镜像仓库
docker push example.gitlab.com:5050/rustfs/rusts

镜像数据就以对象的方式存储到 packages 存储桶中。

gitlab container registry

Released under the Apache License 2.0.