热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

Minio是与AmazonS3API接口兼容的自托管对象存储系统。在本指南中,我们将使用Minio为GitLabRunner设置共享缓存,作为云托管对象

在这里插入图片描述
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 = trueServerAddress = "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 并解压缩,然后您的脚本才能开始。在切换到对象存储之后监控自己的管道是值得的,以检查您是否获得了预期的结果。


推荐阅读
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 20211101CleverTap参与度和分析工具功能平台学习/实践
    1.应用场景主要用于学习CleverTap的使用,该平台主要用于客户保留与参与平台.为客户提供价值.这里接触到的原因,是目前公司用到该平台的服务~2.学习操作 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • 网络请求模块选择——axios框架的基本使用和封装
    本文介绍了选择网络请求模块axios的原因,以及axios框架的基本使用和封装方法。包括发送并发请求的演示,全局配置的设置,创建axios实例的方法,拦截器的使用,以及如何封装和请求响应劫持等内容。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 展开全部下面的代码是创建一个立方体Thisexamplescreatesanddisplaysasimplebox.#Thefirstlineloadstheinit_disp ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 加密世界下一个主流叙事领域:L2、跨链桥、GameFi等
    本文介绍了加密世界下一个主流叙事的七个潜力领域,包括L2、跨链桥、GameFi等。L2作为以太坊的二层解决方案,在过去一年取得了巨大成功,跨链桥和互操作性是多链Web3中最重要的因素。去中心化的数据存储领域也具有巨大潜力,未来云存储市场有望达到1500亿美元。DAO和社交代币将成为购买和控制现实世界资产的重要方式,而GameFi作为数字资产在高收入游戏中的应用有望推动数字资产走向主流。衍生品市场也在不断发展壮大。 ... [详细]
author-avatar
346182773_20da31
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有