如何将 Minio 配置为 GitLab CI 的共享缓存

在这里插入图片描述
Minio是与 Amazon S3 API 接口兼容的自托管对象存储系统。在本指南中,我们将使用 Minio 为 GitLab Runner 设置共享缓存,作为云托管对象存储解决方案的替代方案。

有什么问题?

GitLab CI 管道支持cache加速未来的运行。默认情况下,缓存本地存储在每个运行器实例上。您可以改用对象存储提供程序来启用“共享”缓存模式。

共享缓存确保多个作业可以同时访问缓存。当您将本地缓存与 Docker 管道执行程序一起使用时,不支持并发访问。由于错过缓存命中,这可能会导致流水线性能下降。

尽管缓存恢复旨在“尽力而为”,这意味着您的作业不应该要求缓存包含早期作业的内容,但实际上许多人确实使用该cache字段在他们的作业之间传递数据。当您有多个并行运行的作业并尝试恢复相同的缓存时,这目前不起作用。

在 GitLab 实例旁边自托管 Minio 安装,让您受益于更可靠的缓存恢复,该缓存恢复仍可预测地与并行作业一起工作。以下是如何安装 Minio 并配置 GitLab Runner 以将其用于缓存。

安装 Minio

Minio服务器可以下载作为一个独立的二进制或.deb和.rpm包。我们将重点介绍本指南中的 Debian 软件包。如果您直接使用二进制文件,则需要手动将Minio 服务脚本添加到您的init实现中,以使 Minio 在您的机器上启动。
.deb使用网站上的说明下载并安装 Minio以获得最新版本。这会将 Minio 服务器添加到您的系统并注册其服务定义。在这里插入图片描述
Minio 期望以minio-user用户身份执行。立即创建此用户帐户:

sudo useradd -r minio-user -s /sbin/nologin

接下来创建一个 Minio 数据目录。上传到对象存储的所有文件都将保存到此位置。我们/mnt/minio用于本教程的目的。使用chown让您minio-user的目录的所有权。

sudo mkdir -p /mnt/minio
sudo chown -R minio-user:minio-user /mnt/minio
sudo chmod -R 0775 /mnt/minio

创建 Minio 配置文件

Minio 自动从/etc/default/minio文件中加载配置值。现在创建此文件并添加以下内容:

MINIO_ROOT_USER="minio"
MINIO_ROOT_PASSWORD="P@$$w0rd"
MINIO_OPTS="--address :9600 --console-address :9601"
MINIO_VOLUMES="/mnt/minio"

前两行定义了 Minio 的初始 root 用户的凭据。将密码更改为安全值。
该MINIO_OPTS行提供 Minio 服务器设置。我们将监听端口显式设置为9600(默认)并将 Minio 的 Web 控制台暴露在9601. 该MINIO_VOLUMES指令定义了 Minio 将存储数据的位置。这设置为之前设置的目录。

将配置文件的所有权更改为minio-user下一个。如果所有权不正确,Minio 可能无法启动:

sudo chown minio-user:minio-user /etc/default/minio

启动 Minio 服务并在浏览器中访问 Web 控制台localhost:9601。使用您的 root 用户凭据登录。

sudo service minio start

在这里插入图片描述

为 GitLab 配置 Minio

下一步是为 GitLab 创建一个存储桶以将管道缓存上传到。点击 Minio Console 侧边栏中的“Buckets”链接,然后点击右上角的蓝色“Create Bucket”按钮。
在这里插入图片描述
为您的存储桶命名,然后单击右下角的“创建存储桶”按钮。在这个使用单个本地磁盘的简单 Minio 安装中,所提供的任何功能都不可用。它们不是必需的,因为存储桶内容将由 GitLab Runner 管理。

在这里插入图片描述
创建存储桶后,前往 Minio 控制台的“用户”页面。单击“创建用户”为 GitLab Runner 添加用户帐户。虽然不是严格要求,但这是一个最佳实践步骤,因此您无需向 GitLab 提供您的根用户凭据。

在这里插入图片描述
gitlab在“访问密钥”字段中输入用户名,例如。向“密钥”字段提供安全密码。readwrite从列表中为新用户分配策略,然后单击“保存”按钮。GitLab 需要读写访问权限,以便它可以上传和检索您的缓存数据。

在这里插入图片描述

配置 GitLab 运行器

现在您可以将 Minio 集成到 GitLab Runner 中。打开你的 GitLab Runner 配置文件;这通常在/etc/gitlab-runner/config.tomlGitLab 综合安装中找到。

找到该[runners.cache]部分并添加以下行:

[runners.cache]
  Type = "s3"
  Shared = true
  [runners.cache.s3]
    AccessKey = "gitlab"
    SecretKey = "P@$$w0rd"
    BucketName = "gitlab"
    Insecure = true
    ServerAddress = "192.168.0.1:9600"

以下是这些值的效果:

  • Type – 通知 GitLab 将使用类似 S3 的存储引擎。
  • Shared – 允许在并发作业之间共享缓存。
  • AccessKey和SecretKey-这些应该匹配您在Minio控制台创建的Minio用户帐户的凭据。
  • BucketName – 将其更改为您在 Minio 控制台中创建的存储桶的名称。
  • Insecure– 使 GitLab 能够通过纯 HTTP 访问 Minio。如果您将 Minio
    服务器用于其他目的,您应该按照文档为您的安装设置 HTTPS。
  • ServerAddress– 在此处添加您的服务器的 IP 地址。这会通知 GitLab S3 服务器的连接详细信息。

重新启动 GitLab Runner 服务以确保您的更改生效:

sudo gitlab-runner restart

运行您的 CI 作业

您的 CI 作业现在应该将您定义的缓存拉入并推.gitlab-ci.yml送到您的 Minio 服务器。这允许使用可以由并行作业轻松访问的共享缓存。
在这里插入图片描述
当一切正常时,您会Uploading cache.zip在 CI 作业日志中看到一行,显示 GitLab 正在使用您的对象存储服务器。引用缓存的后续作业应包括cache.zip is up to date并successfully extracted cache靠近日志顶部。

在这里插入图片描述
您可以通过在 Minio 控制台中检查您的存储桶来浏览当前存储的缓存。这也为您提供了一种方便的方法来检查磁盘利用率并删除旧缓存以释放空间。GitLab 为您的每个项目 ID 创建一个目录。在该文件夹中,您会找到包含缓存的 ZIP 存档,每个都由分支命名,缓存名称在.gitlab-ci.yml.

在这里插入图片描述

结论

Minio 很容易配置为基本安装,可用作 GitLab Runner 的共享缓存。这可确保在多个作业同时运行时可靠地使用缓存。这是您自托管 GitLab 安装的一个值得补充的内容。
在这里插入图片描述
虽然在许多情况下共享缓存会提高性能,但请注意这可能并非普遍适用。它为管道流程增加了额外的开销,因为 GitLab Runner 需要在记录成功结果之前压缩您的作业缓存并将其上传到 Minio。当稍后的作业恢复缓存时,需要从 Minio 中提取 ZIP 并解压缩,然后您的脚本才能开始。在切换到对象存储之后监控自己的管道是值得的,以检查您是否获得了预期的结果。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mikes zhang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值