|
| 1 | +--- |
| 2 | +title: "将 RustFS 配置为 GitLab 对象存储后端" |
| 3 | +description: "GitLab 默认支持 minio 作为对象存储后端,RustFS 作为 minio 的平替,可以作为 GitLab 的存储后端。" |
| 4 | +--- |
| 5 | + |
| 6 | + |
| 7 | +# 关于 GitLab |
| 8 | + |
| 9 | +[GitLab](https://about.gitlab.com) 是全球知名的一体化 DevSecOps 平台,功能涵盖整个软件开发生命周期。由于支持私有化部署,因此在国内外有数千万用户。[GitLab 支持将对象存储作为数据存储后端](https://docs.gitlab.com/administration/object_storage/),其中就包括 MinIO。由于 RustFS 是 MinIO 的完全平替,因此可以将 RustFS 配置为 GitLab 的对象存储后端。 |
| 10 | + |
| 11 | +## 前提条件 |
| 12 | + |
| 13 | +- 一个可用的 GitLab 实例。可查看[GitLab 官网安装指南](https://about.gitlab.com/install) |
| 14 | +- 一个可用的 RustFS 实例。可遵照[RustFS 安装](../installation/index.md)章节进行创建。 |
| 15 | +- 可用的 RustFS 访问令牌。可遵照[访问令牌管理](../administration/iam/access-token.md)章节进行创建。 |
| 16 | + |
| 17 | +## 在 GitLab 中配置 RustFS |
| 18 | + |
| 19 | +### 创建 RustFS 存储桶 |
| 20 | + |
| 21 | +可以为 GitLab 的不同功能(支持将数据存储在对象存储中的功能)创建不同的存储桶,比如 `artifacts`、`ci-secure-files`、`dependency-proxy`、`external-diffs`、`lfs`、`packages`、`pages`、`terraform-state`、`uploads`。RustFS 存储桶的创建可参考 [RustFS 存储桶管理](../management/bucket/creation.md)章节。 |
| 22 | + |
| 23 | + |
| 24 | + |
| 25 | + |
| 26 | + |
| 27 | +### 修改 `gitlab.rb` 配置文件 |
| 28 | + |
| 29 | +GitLab 中关于对象存储的配置都在文件 `gitlab.rb`(默认为 `/etc/gitlab/gitlab.rb`)中。以 `packages` 后端配置为例,配置信息如下: |
| 30 | + |
| 31 | +```ruby |
| 32 | +gitlab_rails['packages_enabled'] = true # 启动 packages 功能 |
| 33 | +gitlab_rails['packages_object_store_enabled'] = true # 为 packages 启动对象存储 |
| 34 | +gitlab_rails['packages_object_store_proxy_download'] = false |
| 35 | +gitlab_rails['packages_object_store_remote_directory'] = "packages" # 远端存储对象对应的存储桶 |
| 36 | +gitlab_rails['packages_object_store_connection'] = { |
| 37 | + 'provider' => 'AWS', #对象存储 provider,暂时为 AWS |
| 38 | + 'endpoint' => 'http://example.rustfs.com:9000', |
| 39 | + 'region' => 'cn-east-1', # rustfs 的 Region 默认为 `cn-east-1` |
| 40 | + 'aws_access_key_id' => 'aws_access_key_id', # rustfs access key |
| 41 | + 'aws_secret_access_key' => 'aws_secret_access_key', # rustfs secret key |
| 42 | + 'path_style' => true, |
| 43 | + 'enable_signature_v4_streaming' => false, |
| 44 | + 'host' => 'example.rustfs.com', |
| 45 | +} |
| 46 | +``` |
| 47 | + |
| 48 | +重点包括以下几个参数: |
| 49 | + |
| 50 | +- `packages_object_store_enabled`:是否启用对象存储,`true` 代表启动,`false` 代表禁用。**只有这个参数为 `true`**后面的配置才会生效。 |
| 51 | +- `packages_object_store_remote_directory`:RustFS 实例上的存储桶名称。 |
| 52 | +- `packages_object_store_connection`:RustFS 实例的链接信息,主要包括 RustFS 实例地址、访问令牌等。 |
| 53 | + |
| 54 | +修改完配置以后,执行 `reconfigure` 命令,让配置生效: |
| 55 | + |
| 56 | +```bash |
| 57 | +sudo gitlab-ctl reconfigure |
| 58 | +``` |
| 59 | + |
| 60 | +> 对于 `artifacts`、`ci-secure-files`、`dependency-proxy`、`external-diffs`、`lfs`、`pages`、`terraform-state`、`uploads` 的配置都类似,在此不做赘述。切记,修改配置以后要执行 `sudo gitlab-ctl reconfigure` 让配置生效。 |
| 61 | +
|
| 62 | +### 配置验证 |
| 63 | + |
| 64 | +使用 GitLab 相应功能后,数据就会存储到后端配置的 RustFS 存储桶中。以上一步中的 `packages` 为例,上传一个 Docker 容器镜像到 GitLab 项目镜像仓库: |
| 65 | + |
| 66 | +```bash |
| 67 | +# 登录 GitLab 内置容器镜像仓库 |
| 68 | +docker login example.gitlab.com:5050 |
| 69 | + |
| 70 | +# 构建容器镜像 |
| 71 | +docker build -t example.gitlab.com/rustfs/rusts . |
| 72 | + |
| 73 | +# 推送到 GitLab 内置的容器镜像仓库 |
| 74 | +docker push example.gitlab.com:5050/rustfs/rusts |
| 75 | +``` |
| 76 | + |
| 77 | +镜像数据就以对象的方式存储到 `packages` 存储桶中。 |
| 78 | + |
| 79 | + |
0 commit comments