GitHub Enterprise 的 MinIO 对象存储
开发人员生成的非结构化数据是存储需求的主要驱动力。使用 GitHub Actions 和 Packages 构建的工件的数据增长是由多个环境每天的多个版本驱动的,比其他类型的数据产生更快的增长。
GitHub 企业概述
这种数据生成的核心是 GitHub Enterprise。GitHub Enterprise 的成功基于这样一个事实:它允许开发人员在整个开发过程中使用他们熟悉的工具。这包括流行的 IDE 和 CI/CD 工具,并围绕 Actions 和 Packages 进行组织。
GitHub Actions是一个持续集成和持续交付 (CI/CD) 平台,可让您自动化构建、测试和部署管道。您可以创建工作流来构建和测试存储库中的每个拉取请求,或将合并的拉取请求部署到生产环境。
GitHub Packages是一个用于托管和管理包(包括容器和其他依赖项)的平台。GitHub Packages 将您的源代码和包合并到一个地方,以提供集成的权限管理和计费,因此您可以在 GitHub 上集中进行软件开发。
它们一起在企业环境中以惊人的速度生成数据,并且需要复杂的存储和检索功能。
两块相同的拼图
所有这些数据都需要一个复杂的云原生存储系统。该系统理想地兼容 S3、高性能、可无缝扩展到数百个 PB、软件定义、多云、安全且有弹性。
换句话说,GitHub Enterprise 需要 MinIO。
让我们快速浏览一下需求:
S3 兼容— 开发人员现在使用 RESTful API。这就是 S3——RESTful。用于对象存储的 S3 API 是事实上的标准。MinIO 是部署最广泛的 Amazon S3 替代方案,并且有近十亿次 Docker 拉取来证明这一点。没有比 MinIO 运行在更多架构、更多类型硬件和更多用例中的 S3 兼容对象存储。这就是为什么它“适用于”数十万个应用程序的原因。
高性能——MinIO 是世界上最快的对象存储,GET/PUT 速度分别超过 325 GB/s 和 165 GB/s。存储和检索速度很快——无论对象大小如何。MinIO 的所有基准测试均已发布——请随时在此处查看。
无缝可扩展——MinIO 通过称为服务器池的概念进行扩展,该概念专为硬件异构性而设计。GitHub Enterprise 实例增长迅速,变得非常大且寿命长。MinIO 非常适合这些用例。
软件定义——GitHub Enterprise 是一个软件定义的解决方案。它将与 MinIO 这样的软件定义存储配对是有道理的。更好的经济性、更好的性能调整、更好的运营管理——当您采用软件定义时,一切都会变得更好。
多云——GitHub Enterprise 无处不在;它的存储解决方案也需要。MinIO 在每个公共云、私有云和边缘(GitHub 团队非常感兴趣的领域)上运行。他们在哪里,我们就在哪里。
安全——GitHub Enterprise 负责企业最重要的软件资产,因此它需要像它一样重视安全性的存储。MinIO 的加密方案支持使用现代行业标准加密算法(例如 AES-256-GCM、ChaCha20-Poly1305 和 AES-CBC)进行粒度对象级加密。MinIO 与 S3 加密语义完全兼容,还通过包括对非 AWS 密钥管理服务(例如 Hashicorp Vault、Gemalto KeySecure 和 Google Secrets Manager)的支持来扩展 S3。当加密打开时,MinIO 仍然保持高性能。
集成——MinIO 支持使用外部密钥管理系统(KMS)。如果客户端请求 SSE-S3,或者启用了自动加密,则 MinIO 服务器使用唯一的对象密钥加密每个对象,该对象密钥由 KMS 管理的主密钥保护。
弹性——保护数据不仅仅是加密。不变性是对象存储框架的核心,MinIO 支持完整的对象锁定/保留框架,提供合法持有和保留(具有治理和合规模式)。MinIO 的对象锁定功能已经过Cohasset Partners的验证。
此外,MinIO 具有一些对 GitHub Enterprise 很重要的关键功能。
MinIO 支持同步和异步复制。如果两个集群之间的链路出现故障,那么即使是同步复制也会暂时自动恢复为异步复制。MinIO 提供了管理集中更新和升级的机制。生命周期管理是集群控制台的一部分,策略是集中管理的。这使架构师能够设计出能够承受整个云的故障的系统。这是有意义的,因为在启用了复制和负载均衡器的双集群 HA 设置中,如果一个集群完全失败,GitHub 将通过将所有请求发送到另一个集群来继续运行。这意味着开发人员无需停机。
集群级别的身份管理是使用 AD/LDAP 或 OpenID 单点登录 (SSO) 执行的。属于一个组的用户和用户受到基于策略的访问控制的限制,这些访问控制指示可以对特定资源采取的操作。控制台上启用了策略创作,管理员可以为用户、组和服务帐户创建策略。集群、池、策略和桶的集中管理易于管理。
管理很简单,联合解决方案可以通过 Ansible 等技术实现自动化。同时管理 MinIO 和 GitHub——无论是裸机还是 Kubernetes——都是一个明显的优势。
集成部署概述
正如我们所见,MinIO 是 GitHub Enterprise 的完美盟友,GitHub Packages 和 Actions 的输出可以存储在高性能、S3 API 兼容的对象存储中。
在 MinIO 和 GitHub Enterprise 之间建立合作伙伴关系并在我们发布新软件时定期测试/验证对我们来说绝对有意义。组合解决方案为内部部署、企业基础设施的私有云或具有无缝 S3 兼容 API 的公共云提供商提供安全且合规的软件,并提供可移植性。

组合部署使整个企业的开发人员/工程师之间能够进行更智能的协作,并为企业运营商提供更简单的管理。随着开发需求以及工程工件和开发运营能力的不断增长,它提供了水平扩展存储的能力。
将 GitHub Enterprise 与 MinIO 集成
在下一阶段,我们将介绍如何设置集成 GitHub Enterprise 包和操作所需的基础设施,以使用 MinIO 作为后端。在高层次上,我们需要运行 MinIO 和 GitHub Enterprise 的实例。
最小IO
安装和配置
我们可以通过多种方式设置 MinIO 来运行,在这种情况下,我们将使用 Docker 来启动 MinIO。
在将运行 Docker 容器的本地主机上创建 4 个目录:
创建目录后,启动 docker 容器:
上面的命令将执行以下操作:
启动一个名为 的 docker 容器
minio。将 4 个主机目录挂载到容器上以存储 MinIO 数据。
在主机上公开 API
9000和控制台端口,以便其他服务可以访问它。9001
验证 MinIO 服务已经启动,在日志中你应该看到类似这样的内容:
请注意,以上设置是为了让您快速启动并运行 MinIO。您可以从单个节点扩展到多节点分布式配置以进行额外测试。如果您想在生产环境中部署和配置 MinIO,请参阅文档。
创建桶
现在部署了 MinIO,我们需要在 MinIO 控制台中为 GitHub Enterprise 创建一个存储桶来存储它的包。
在浏览器中,转到
http://localhost:9000以访问 MinIO 控制台。
2. 使用默认凭据登录:
用户:
minioadmin经过:
minioadmin
3. 前往 Buckets -> [点击] Create Bucket
4. 创建一个名为 的桶testbucket123。
记住凭据和存储桶名称以备后用。我们需要它们来配置 GitHub Enterprise 包功能。

GitHub 企业版
下载最新版本的 GitHub Enterprise 并在您最喜欢的管理程序上启动它。虽然 GitHub Enterprise 界面中没有用于配置 MinIO 的特定部分,但我们不需要。MinIO 完全兼容 S3 API,所以我们可以简单地使用现有的 AWS S3 配置部分来配置它。
配置包
通过浏览器登录您的 GitHub Enterprise 管理员帐户。
在右上角单击火箭图标。
转到站点管理员 > 管理 > 包。
单击启用 GitHub 包。
包裹寄存
选择
Amazon S3AWS 服务 URL:MinIO 服务器 API 地址
http://:9000 AWS S3 桶:我们使用控制台创建的 MinIO 桶
testbucket123AWS S3 访问密钥:MinIO 用户名
minioadminAWS S3 密钥:MinIO 密码
minioadmin

单击左侧的保存设置并等待 GitHub Enterprise 使用新设置重新配置。
配置操作
在右上角单击火箭图标。
转到站点管理员 > 管理 > 操作。
单击复选框Enable GitHub Actions。
在工件和日志存储下
选择
Amazon S3AWS 服务 URL:MinIO 服务器 API 地址
http://:9000 AWS S3 桶:来自控制台的 MinIO 桶
testbucket123AWS S3 访问密钥:MinIO 用户名
minioadminAWS S3 密钥:MinIO 密码
minioadmin

单击左侧的保存设置并等待 GitHub Enterprise 使用新设置重新配置。
GitHub Enterprise 的可扩展、安全和高性能存储
就是这样!您已将 GitHub Enterprise 配置为使用 MinIO 作为包和操作的后端。如果您需要更多信息,这里有关于如何配置包和操作的更多详细信息。有关受支持的 GitHub Enterprise 版本,请参阅GitHub Enterprise 存储合作伙伴页面。
有问题吗?加入我们的 Slack。想开始吗?前往下载页面。