MinIO 对象存储用于 GitHub Enterprise

开发者生成非结构化数据是存储需求的主要驱动力。使用 GitHub Actions 和 Packages 构建的制品,其数据增长是由每天多个环境的多个版本驱动的,产生的增长速度快于其他类型的数据。
GitHub 企业版概述
在这些数据生成的核心是 GitHub 企业版。GitHub 企业版的成功基于它允许开发者在整个开发流程中使用他们熟悉的工具。这包括流行的 IDE 和 CI/CD 工具,并围绕 Actions 和 Packages 组织。
- GitHub Actions 是一个持续集成和持续交付 (CI/CD) 平台,允许您自动化构建、测试和部署流水线。您可以创建工作流程,为您的仓库的每个拉取请求构建和测试,或者将合并的拉取请求部署到生产环境。
- GitHub Packages 是一个用于托管和管理包(包括容器和其他依赖项)的平台。GitHub Packages 将您的源代码和包整合到一个地方,提供集成的权限管理和计费,因此您可以在 GitHub 上集中您的软件开发。
它们共同在企业环境中以惊人的速度生成数据,并需要复杂的存储和检索功能。
同一拼图的两个部分
所有这些数据都需要一个复杂的、云原生存储系统。该系统理想情况下应该是 S3 兼容的,具有高性能,可以无缝扩展到数百 PB,软件定义,多云,安全且具有弹性。
换句话说,GitHub 企业版需要 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 企业版实例增长迅速,变得非常庞大且生命周期很长。MinIO 非常适合这些用例。
- 软件定义 — GitHub 企业版是一个软件定义的解决方案。它与 MinIO 这样的软件定义存储配对是有意义的。更好的经济性、更好的性能调整、更好的运维管理——当您使用软件定义时,一切都变得更好。
- 多云 — GitHub 企业版在任何地方运行;它的存储解决方案也需要这样做。MinIO 可以在每个公共云、私有云和边缘运行(这是 GitHub 团队非常关注的一个领域)。他们在哪里,我们就去哪里。
- 安全 — GitHub 企业版负责企业的最重要的软件资产,因此它需要以与自身一样重视安全性的存储。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 企业版至关重要的关键功能。
- MinIO 支持同步和异步 复制。如果两个集群之间的链接断开,即使是同步复制也会暂时恢复为异步复制,并且会自动执行。MinIO 提供用于管理集中式更新和升级的机制。生命周期管理是集群控制台的一部分,策略是在中央管理的。这使架构师能够设计一个能够承受整个云故障的系统。这很有意义,因为使用具有启用复制的两个集群 HA 设置以及负载均衡器,如果一个集群完全失效,GitHub 将继续通过将所有请求发送到另一个集群来运行。这意味着开发者没有停机时间。
- 集群级身份管理通过 AD/LDAP 或 OpenID 单点登录 (SSO) 执行。用户和属于某个组的用户使用 基于策略的访问控制 进行限制,这些控制决定了可以对特定资源执行的操作。策略创作在控制台中启用,管理员可以为用户、组和服务帐户创建策略。集群、池、策略和存储桶的集中式管理很容易管理。
- 管理很简单,并且可以使用 Ansible 等技术自动执行联合解决方案。管理 MinIO 和 GitHub——无论是裸机还是 Kubernetes——都是一个明显的优势。
集成部署概述
正如我们所见,MinIO 是 GitHub 企业版的完美盟友,GitHub Packages 和 Actions 的输出可以存储在高性能、S3 API 兼容的对象存储上。
对于我们来说,建立 MinIO 和 GitHub 企业版之间的合作伙伴关系 并定期测试/验证,这一点意义重大。组合解决方案为企业基础设施的内部部署、私有云或具有无缝 S3 兼容 API 的公共云提供商提供安全且合规的软件,并提供可移植性。
组合部署使企业内开发人员/工程师之间的协作更加智能,并使企业运营商的管理更加简化。它提供了根据开发——以及工程制品和 DevOps 功能——的不断增长来横向扩展存储的能力。
将 GitHub 企业版与 MinIO 集成
在下一阶段,我们将介绍如何设置将 GitHub 企业版包和操作与 MinIO 作为后端集成的所需基础设施。从高层次来看,我们需要运行 MinIO 和 GitHub 企业版的实例。
MinIO
安装和配置
我们可以通过多种方式设置 MinIO 运行,在本例中,我们将使用 Docker 启动 MinIO。
在本地主机上创建 4 个目录,Docker 容器将在这些目录中运行
目录创建完成后,启动 Docker 容器。
以上命令将执行以下操作
- 启动名为
minio
的 Docker 容器。 - 将 4 个主机目录挂载到容器中以存储 MinIO 数据。
- 在主机上公开 API
9000
和控制台9001
端口,以便其他服务可以访问它。
验证 MinIO 服务是否已启动,在日志中应看到类似以下内容
请注意,以上设置是为了让你快速开始使用 MinIO。你可以从单节点扩展到多节点分布式配置,以进行额外的测试。如果你想在生产环境中部署和配置 MinIO,请参考文档。
创建存储桶
现在 MinIO 已经部署好了,我们需要在 MinIO 控制台中创建一个存储桶,用于 GitHub Enterprise 存储其软件包。
- 在浏览器中,访问
http://localhost:9000
访问 MinIO 控制台。
2. 使用默认凭据登录
- 用户名:
minioadmin
- 密码:
minioadmin
3. 进入存储桶 -> [点击] 创建存储桶
4. 创建一个名为 testbucket123
的存储桶。
记住凭据和存储桶名称,以后会用到。我们需要它们来配置 GitHub Enterprise 的软件包功能。
GitHub Enterprise
下载 最新版本的 GitHub Enterprise,并在你喜欢的虚拟机管理程序上启动它。虽然 GitHub Enterprise 界面中没有专门的部分来配置 MinIO,但我们并不需要。MinIO 与 S3 API 完全兼容,因此我们可以直接使用现有的 AWS S3 配置部分来配置它。
配置软件包
- 通过浏览器登录到你的 GitHub Enterprise 管理员帐户。
- 在右上角点击 火箭 图标。
- 进入站点 管理 > 管理 > 软件包。
- 点击 启用 GitHub 软件包。
- 在 软件包存储 下
- 选择
Amazon S3
- AWS 服务 URL:MinIO 服务器 API 地址
http://<minio_host_IP>:9000
- AWS S3 存储桶:我们使用控制台创建的 MinIO 存储桶
testbucket123
- AWS S3 访问密钥:MinIO 用户名
minioadmin
- AWS S3 密钥:MinIO 密码
minioadmin
- 选择
- 点击左侧的 保存设置,并等待 GitHub Enterprise 使用新的设置重新配置。
配置操作
- 在右上角点击 火箭 图标。
- 进入站点 管理 > 管理 > 操作。
- 点击 启用 GitHub 操作 旁边的复选框。
- 在 工件和日志存储 下
- 选择
Amazon S3
- AWS 服务 URL:MinIO 服务器 API 地址
http://<minio_host_IP>:9000
- AWS S3 存储桶:来自控制台的 MinIO 存储桶
testbucket123
- AWS S3 访问密钥:MinIO 用户名
minioadmin
- AWS S3 密钥:MinIO 密码
minioadmin
- 选择
- 点击左侧的 保存设置,并等待 GitHub Enterprise 使用新的设置重新配置。
可扩展、安全且性能卓越的 GitHub Enterprise 存储
就是这样!你已将 GitHub Enterprise 配置为使用 MinIO 作为软件包和操作的后端。如果你需要更多信息,这里有更多关于如何配置软件包 和操作 的详细信息。请参考GitHub Enterprise 存储合作伙伴 页面了解支持的 GitHub Enterprise 版本。
有问题?加入我们 Slack。想要开始?请前往下载页面.